﻿var ajaxError = false;

function setClasses() {
    if ( typeof window.opera == 'object' ) {
        var cssNode = document.createElement('link');
        cssNode.setAttribute('rel', 'stylesheet');
        cssNode.setAttribute('type', 'text/css');
        cssNode.setAttribute('href', 'css/opera.css');
        document.getElementsByTagName('head')[0].appendChild(cssNode);
    }
}

function setFlash() {
	var so = new SWFObject("swf/home-anim-ia2.swf", "flashpromo", "710", "248", "6", "#FFFFFF");
	so.addParam("quality", "best");
	so.write("mainFlashContent");

	if ( !so.write("mainFlashContent") ) {
		document.getElementById("mainFlashContent").innerHTML = '<p style="text-align: center; padding:80px 0 0 0;"><strong>Az oldal megtekintéséhez legalább 6-os verziójú flash plug-in szükséges, mellyel Ön még nem rendelkezik.<br /><br />Kérjük, töltse le az ingyenes és azonnal telepíthető plug-int.</strong><br /><br /><a href="http://www.adobe.com/go/getflashplayer" target="_blank" alt="Macromedia Flash 9 plugin letöltése"><img src="img/img_get_flash.gif" /></a></p>';
	}
}

function setFlashIntranet() {
	var so = new SWFObject("swf/intranet_home-anim-ia.swf", "flashpromo", "710", "248", "7", "#FFFFFF");
	so.addParam("quality", "best");
	so.write("mainFlashContentIntra");
}


function addEvent(obj, type, fn) {
	if (obj.addEventListener)
		obj.addEventListener(type, fn, false);
	else if (obj.attachEvent)
		obj.attachEvent('on' + type, function() { return fn.apply(obj, new Array(window.event));});
}

function getWindowSize() {
	var windowSize = {wWidth: 630, wHeight: 460};
	if( typeof( window.innerWidth ) == 'number' ) {
	//Non-IE
		windowSize.wWidth = window.innerWidth;
		windowSize.wHeight = window.innerHeight;
	} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
	//IE 6+ in 'standards compliant mode'
		windowSize.wWidth = document.documentElement.clientWidth;
		windowSize.wHeight = document.documentElement.clientHeight;
	} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	//IE 4 compatible
		windowSize.wWidth = document.body.clientWidth;
		windowSize.wHeight = document.body.clientHeight;
	}

	return windowSize;
}

function popUp(url, name) {
	var windowSize = getWindowSize();
	var popUpWidth = Math.floor(windowSize.wWidth * 0.75);
	var popUpHeight = Math.floor(windowSize.wHeight * 0.75);

	winprops = 'height='+popUpHeight+',width='+popUpWidth+',scrollbars=yes,toolbar=1,location=1,statusbar=1,menubar=1,resizable=1'
	win = window.open(url, name, winprops)
	if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}

function setErrorNeighbour(inputElement, parity) {
    if (parity == 'even') {
    	inputElement.addClassName('errorNeighbourFC');
    }
    else {
    	inputElement.addClassName('errorNeighbourSC');
    }
}

function setError(inputElement, errorMsg, parity) {
    if (parity == 'even') {
    	inputElement.up().addClassName('errorMessageFC');
    }
    else {
    	inputElement.up().addClassName('errorMessageSC');
    }
    inputElement.addClassName('errorField');
    inputElement.insert({'before': '<span class="errorField">' + errorMsg + '</span>'});
}

function removeError(inputElement) {
    if (inputElement.up().hasClassName('errorMessageFC') || inputElement.up().hasClassName('errorMessageSC')) {
	    $(inputElement).up().down('span.errorField').remove();
	    $(inputElement).removeClassName('errorField');
	    $(inputElement).up().removeClassName('errorMessageFC');
	    $(inputElement).up().removeClassName('errorMessageSC');
	}
	if (inputElement.hasClassName('errorNeighbourFC') || inputElement.hasClassName('errorNeighbourSC')) {
	   	$(inputElement).removeClassName('errorNeighbourFC');
	   	$(inputElement).removeClassName('errorNeighbourSC');
	}
}

function contactFormValidation() {
    var inputs = $('contactForm').adjacent('input[type=text]','select','textarea');
	var errors = new Array (0, 0, 0, 0, 0, 0, 0, 0);
    var msgs = [];
	var reg = /<\S[^><]*>/g;
    var validate = true;
    msgs['lastname'] = 'A vezetéknév';
    msgs['firstname'] = 'A keresztnév';
    msgs['company'] = 'A cégnév';
    msgs['status'] = 'A beosztás';
    msgs['email'] = 'Az e-mail cím';
    msgs['phonenum'] = 'A telefonszám';
    msgs['message'] = 'Az üzenet';

	//elozo hibauzik torlese
    inputs.each( function( element, idx) {
		removeError(element);
	});
	
    inputs.each( function( element, idx) {
        switch(element.id){
            case 'firstname':
            case 'lastname':
            case 'company':
            case 'status':
            case 'phonenum':
            case 'message':
                if($F(element) == ''){
                    validate = false;
					errors[idx] = 1;
                }else{
                     if(reg.test($F(element))){
                        validate = false;
						errors[idx] = 2;
					}
                }
                break;
            case 'products':
                if($F(element) == ''){
                    validate = false;
					errors[idx] = 3;
                }
                break;
            case 'email':
                var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
                if (!filter.test($F(element))){
                    if($F(element) != ''){
                        validate = false;
						errors[idx] = 4;
                    }else{
                        validate = false;
						errors[idx] = 1;
                    }
                }
			break;
        }
    });

    errors.each( function( element, idx) {	
    	if (errors[idx] > 0) {
    		switch(errors[idx]) {
    			case 1:
    				errorMessage = 'A mező kitöltése kötelező';
    				break;
    			case 2:
    				errorMessage = 'HTML nem engedélyezett';
    				break;
    			case 3:
    				errorMessage = 'Kötelező megadni';
    				break;
    			case 4:
    				errorMessage = 'Érvénytelen e-mail cím';
    				break;
    		}
    		
    		if (((idx + 1) % 2) != 0) {
				setError(inputs[idx], errorMessage, 'even');
				if (errors[idx + 1] == 0) setErrorNeighbour(inputs[idx + 1], 'odd');
    		}
    		else {
				setError(inputs[idx], errorMessage, 'odd');
				if (errors[idx - 1] == 0) setErrorNeighbour(inputs[idx - 1], 'even');
    		}
    	}
    });
    
    return validate;
}

function buildMatrix() {
	var segmentCollection = new Array();

	segmentCollection[0] = new Hash({
			'criteria': ['verySmallBusiness', 'joker', 'joker', 'noServer', 'joker'],
			'products': [6, 8, 11, 14]
		});

	segmentCollection[1] = new Hash({
			'criteria': ['verySmallBusiness', 'joker', 'joker', 'gotServer', 'noExternalProvider'],
			'products': [6, 8, 11, 14]
		});
			
	segmentCollection[2] = new Hash({
			'criteria': ['verySmallBusiness', 'joker', 'joker', 'gotServer', 'gotExternalProvider'],
			'products': [6, 8, 11, 14, 19]
		});

	segmentCollection[3] = new Hash({
			'criteria': ['smallBusiness', 'oneWorkPlace', 'noPhoneCenter', 'noServer', 'joker'],
			'products': [6, 8, 14]
		});
	segmentCollection[4] = new Hash({
			'criteria': ['smallBusiness', 'oneWorkPlace', 'noPhoneCenter', 'gotServer', 'noExternalProvider'],
			'products': [3, 6, 10, 11]
		});

	segmentCollection[5] = new Hash({
			'criteria': ['smallBusiness', 'oneWorkPlace', 'noPhoneCenter', 'gotServer', 'gotExternalProvider'],
			'products': [3, 6, 10, 11, 19]
		});
			
	segmentCollection[6] = new Hash({
			'criteria': ['smallBusiness', 'oneWorkPlace', 'gotPhoneCenter', 'noServer', 'joker'],
			'products': [3, 6, 20]
		});

	segmentCollection[7] = new Hash({
			'criteria': ['smallBusiness', 'oneWorkPlace', 'gotPhoneCenter', 'gotServer', 'noExternalProvider'],
			'products': [3, 6, 10, 11, 20]
		});
			
	segmentCollection[8] = new Hash({
			'criteria': ['smallBusiness', 'oneWorkPlace', 'gotPhoneCenter', 'gotServer', 'gotExternalProvider'],
			'products': [4, 10, 11, 16]
		});

	segmentCollection[9] = new Hash({
			'criteria': ['smallBusiness', 'moreWorkPlace', 'joker', 'joker', 'noExternalProvider'],
			'products': [1, 3, 13, 18, 20]
		});

	segmentCollection[10] = new Hash({
			'criteria': ['smallBusiness', 'moreWorkPlace', 'joker', 'joker', 'gotExternalProvider'],
			'products': [4, 9, 10, 11, 13, 16]
		});

	segmentCollection[11] = new Hash({
			'criteria': ['largeBusiness', 'oneWorkPlace', 'joker', 'joker', 'noExternalProvider'],
			'products': [3, 6, 10, 11, 13, 20]
		});

	segmentCollection[12] = new Hash({
			'criteria': ['largeBusiness', 'oneWorkPlace', 'joker', 'joker', 'gotExternalProvider'],
			'products': [4, 5, 13, 18, 19, 20]
		});

	segmentCollection[13] = new Hash({
			'criteria': ['largeBusiness', 'moreWorkPlace', 'joker', 'joker', 'noExternalProvider'],
			'products': [2, 5, 13, 14, 18, 20]
		});

	segmentCollection[14] = new Hash({
			'criteria': ['largeBusiness', 'moreWorkPlace', 'joker', 'joker', 'gotExternalProvider'],
			'products': [9, 10, 11, 13, 14, 16, 17, 20]
		});

	return segmentCollection;
}

Array.prototype.compareWithJoker = function(testArr) {
    if (this.length != testArr.length) return false;
    for (var i = 0; i < testArr.length; i++) {
        if (this[i] != testArr[i]) {
         		if(testArr[i] != 'joker') {
         			return false;
        		}
        }
        if (typeof(this[i]) != typeof(testArr[i])) return false;
    }
    return true;
}

function placeAjaxMessage(status) {
	var updaterTemplate = new Template('<div id="updater" class="updater">#{img}<br />#{message}.');
	var loaderContent = {img: '<img src="img/ico_ajax_loader.gif" width="32" height="32" alt="Termékek betöltése" />', message: 'Az Önnek megfelelő<br />ICT megoldások betöltése.'};
	var errorContent = {img: '<img src="img/ico_ajax_loader.gif" width="32" height="32" alt="AJAX hiba" />', message: 'Elnézést kérünk, rendszerhiba miatt nem tudunk Önnek terméket ajánlani.<br />Kérjük térjen vissza később!'};

	$('mainContent').setStyle({
		height: '200px'
	});
	
	if (status == 'load') {
		$('mainContent').update(updaterTemplate.evaluate(loaderContent));
	}
	
	if (status == 'error') {
		$('mainContent').update(updaterTemplate.evaluate(errorContent));
	}
}

function placeAjaxResponse(responseArray) {
	if (!ajaxError) {
		document.title = 'T-Systems - Ajánlott termékek';
		$('subHeaderImage').src = 'img/img_ajanlott_termekek.jpg';
		$('subHeaderImage').alt = 'Ajánlott termékek';
		if (pageType == 'public') {
			$('onImageText').update('A kérdésekre adott válaszai alapján a T-Systems az Ön cégének,<br />intézményének a következő telekommunikációs illetve<br />informatikai szolgáltatásokat javasolja.');
		}
		else if (pageType == 'intranet') {
			$('onImageText').update('A kérdésekre adott válaszok  alapján az adott cégnek, intézménynek a<br />következő telekommunikációs illetve informatikai szolgáltatásokat javasoljuk.');
		}
					
		$('updater').remove();
		$('mainContent').setStyle({
			'height':''
		});
		responseArray.each(function(element, index) {
			/*if (index == responseArray.length - 1) {
				element = element.replace(/p class="productLinks"/,'p class="productLinks lastLink"');
			}*/
			
			$('mainContent').insert(element);
		});
		
		if(pageType == 'public') {
			$('mainContent').insert('<h3 class="product">Ajánlott termékeinken kívül figyelmébe ajánljuk IT alkalmazásainkat  és iparági megoldásainkat:</h3><p class="productLinks lastLink"><a class="productDetails" target="_blank" href="termek_it_alkalmazas_korhazi_telko.html">Kórházi telko és IT infrastruktúra</a><a class="productDetails" target="_blank" href="termek_it_alkalmazas_intelligens_szalloda">Intelligens szálloda</a><a class="productDetails" target="_blank" href="termek_it_alkalmazas_onkormanyzat.html">Önkormányzati megoldás</a><br /><a class="productDetails" target="_blank" href="termek_it_alkalmazas_integralt_beszerzes.html">Integrált beszerzési megoldás, e-Aukció, e-Árlejtés</a><a class="productDetails" target="_blank" href="termek_it_alkalmazas_telemetria.html">Telemetria</a><a class="productDetails" target="_blank" href="termek_mobilitas_hotspot.html">Vezeték nélküli internet</a><br /><a class="productDetails" target="_blank" href="termek_telekomm_tomeges_sms.html">Tömeges SMS</a></p>')
		}
		else if (pageType == 'intranet') {
			$('mainContent').insert('<h3 class="product">Ajánlott termékeinken kívül figyelmébe ajánljuk IT alkalmazásainkat  és iparági megoldásainkat:</h3><p class="productLinks lastLink"><a class="productDetails" target="_blank" href="intranet_termek_it_alkalmazas_korhazi_telko.html">Kórházi telko és IT infrastruktúra</a><a class="productDetails" target="_blank" href="intranet_termek_it_alkalmazas_intelligens_szalloda">Intelligens szálloda</a><a class="productDetails" target="_blank" href="intranet_termek_it_alkalmazas_onkormanyzat.html">Önkormányzati megoldás</a><br /><a class="productDetails" target="_blank" href="intranet_termek_it_alkalmazas_integralt_beszerzes.html">Integrált beszerzési megoldás, e-Aukció, e-Árlejtés</a><a class="productDetails" target="_blank" href="intranet_termek_it_alkalmazas_telemetria.html">Telemetria</a><a class="productDetails" target="_blank" href="intranet_termek_mobilitas_hotspot.html">Vezeték nélküli internet</a><br /><a class="productDetails" target="_blank" href="intranet_termek_telekomm_tomeges_sms.html">Tömeges SMS</a></p>')
		}
	}
	else {
		return false;
	}
}

function compare(a, b) {
   if (a < b) {
      return -1;
   }
   if (a > b) {
      return 1;
   }
   if (a == b) {
      return 0;
   }
}

function sortAjaxResponse(responseArray, responseOrder) {
	//console.log(responseOrder);
	//console.log(responseArray);
	for (i = responseOrder.length-1; i >= 0; i--) {
		for(j = 0; j <= i; j++) {
			var comparedNums = compare(responseOrder[j+1], responseOrder[j])
			if (comparedNums == -1) {
				var helperNum = responseOrder[j]
				responseOrder[j] = responseOrder[j+1];
				responseOrder[j+1] = helperNum;
				
				var helperText = responseArray[j]
				responseArray[j] = responseArray[j+1];
				responseArray[j+1] = helperText;
				
				delete(helperNum);
				delete(helperText);
			}
			delete(comparedNums)
		}
	}
	//console.log(responseOrder);
	//console.log(responseArray);
	placeAjaxResponse(responseArray);
}

function calculateMatrix() {
	var segmentCollection = buildMatrix();
	var userBuiltMatrix = new Array($F('matrixPersonnel'), $F('matrixWorkPlace'), $F('matrixPhoneCenter'), $F('matrixServer'), $F('matrixItOperation'));
	var isSimilar = false;
	var similarSegments = new Array();	
	var baseURL = '/inc/';
	var responseArray = new Array();
	var responseOrder = new Array();
	var requestCount = 0;
	var eachReturn = 0;
	
	userBuiltMatrix.each(function(element, index){
		if(element==''){
			$('formCopmulsoryWarning').show();
			eachReturn = eachReturn + 1;
		}
	});

	if(eachReturn > 0) {
		return false;
	}
	
	if(pageType == 'public') {
		var imageURL = 'http://www.ict.t-systems.hu/kerdoiv.html';
		var requestImageSrc = imageURL + '?' + 'personnel=' + userBuiltMatrix[0] + '&workplacenum=' + userBuiltMatrix[1] + '&phonecenter=' + userBuiltMatrix[2] + '&server=' + userBuiltMatrix[3] + '&itoperator=' + userBuiltMatrix[4];
		var requestImage = document.createElement('img');
		requestImage.src = requestImageSrc;
		requestImage.width = '1';
		requestImage.height = '1';
		requestImage.style.display = 'none';
		var insertedElement = document.body.insertBefore(requestImage, document.body.lastChild.nextSibling);
	}

	segmentCollection.each(function(element, index){
		isSimilar = userBuiltMatrix.compareWithJoker(segmentCollection[index].get('criteria'));
		if(isSimilar) {
			similarSegments.push(index);
		}
	});
	
	if(similarSegments.length > 0) {
		placeAjaxMessage('load');

		similarSegments.each(function(element, index){
			segmentCollection[element].get('products').each(function(productNumber){
				var actualDate = new Date().getTime();
				var randomNumber = Math.random(999);
				var noCache = (actualDate % randomNumber) * 1000;
				
				var url = baseURL + productNumber + '.html?p=' + noCache;
				
				
				var ajax = new Ajax.Request(url, {
  					method: 'get',
  					onComplete: function(transport) {
    					if (200 == transport.status) {
    						responseArray.push(transport.responseText);
    						responseOrder.push(productNumber);
							requestCount = requestCount + 1;
							if (requestCount == segmentCollection[element].get('products').length) {
								sortAjaxResponse(responseArray, responseOrder);
							}
    					}
    				},
    				onFailure: function(error){
    					placeAjaxMessage('error');
    					ajaxError = true;
    				}
  				});
			});
		});
	}
	else {
		return false;
	}

}
