// JavaScript Document

	var sAjaxModul_IdPrefix = "";
	var AjaxModul_waitingObjectState = new Array();
	var AjaxModul_iMsieVersion = 0;
	var sAjaxModul_otherReceiver = new Array();
	var aAjaxModul_specialFinisher = new Array();
	
	ua = window.navigator.userAgent;
	msie = ua.indexOf("MSIE ");
	if(msie>0) AjaxModul_iMsieVersion = parseInt (ua.substring (msie+5, ua.indexOf (".", msie )));
	else AjaxModul_iMsieVersion = 0;

//---------------------------------------------------------------------------------------
	function AjaxModul_init(sReceiverFunctionName) {
		var oAjax = null;
		try { oAjax = new XMLHttpRequest(); }
		catch(e) { 
  		try { oAjax = new ActiveXObject("Msxml2.XMLHTTP"); }
  		catch(e) {
    		try { oAjax = new ActiveXObject("Microsoft.XMLHTTP"); }
    		catch(e) {
      		alert("Your browser does not support AJAX!");
      		return false;
      	}
    	}
  	}
  	
  	var bFunctionExists = false;
  	
  	eval("var bFunctionExistsInWindowObject = window." + sReceiverFunctionName + " ? true : false;");
  	if(bFunctionExistsInWindowObject) {
  		eval("var sTypeofFunction = typeof window." + sReceiverFunctionName + ";");
  		if(sTypeofFunction=="function") bFunctionExists = true; 
  	}
  	
  	if(bFunctionExists) {
			oAjax.onreadystatechange = function() {
				if(oAjax.readyState==4) {
					var sText = oAjax.responseText;
					eval(sReceiverFunctionName + "(sText);");
				}
			}
		}
  	else {
  		alert("Ajax error: can't attach function '"+sReceiverFunctionName+"' to Ajax object.\nFunction '"+sReceiverFunctionName+"' not exists.");
  		return false;
    }
  	
  	return oAjax;
  }
//---------------------------------------------------------------------------------------
  function AjaxModul_call(sUrl, sReceiverFunctionName, sIdPrefix) {
  	if(!sUrl) {
  		alert("No URL defined during the calling the AjaxModul_call() function.");
  		return false;
  	}
  	sAjaxModul_IdPrefix = sIdPrefix;
  	var sInter = "&";
  	if(sUrl.search(/\?/)==-1) sInter = "?"; 
  	sUrl += sInter + "ajaxCounter=" + Math.random();
  	var oAjax = AjaxModul_init(sReceiverFunctionName);
  	if(!oAjax) {
  		alert("Error in function AjaxModul_call().\nVariable \"oAjax\" is not set.\nreceiver function's name is: " + sReceiverFunctionName);
			return false;
		}
  	oAjax.open("GET", sUrl, true);
  	oAjax.send(null);
  	return true;
  }
//---------------------------------------------------------------------------------------
  function AjaxModul_receiverForSelectBox(sReturnValue) {
  	if(!sReturnValue || sReturnValue=="") {
	  	return;
		}
		
  	var sSeparator0 = "¨˙¨";
  	var sSeparator1 = "˘§˘";
  	var sSeparator2 = "´¨`";
  	var sSeparator3 = "˙°˙";
  	var sSeparator4 = "`°´";
		var sSeparator5 = "^˘^";
		var sSeparator6beg = "xVoooIIIxxxIIIoooVx";
		var sSeparator6end = "°^°";
		var sSeparator7 = "~˘~";

		var aX = sReturnValue.split(sSeparator0);
		var sItemID = aX[0];
		if(sAjaxModul_IdPrefix && sAjaxModul_IdPrefix>"" && sAjaxModul_IdPrefix!="undefined") {
			sItemID = sAjaxModul_IdPrefix + sItemID;
		}
		
		if(sAjaxModul_otherReceiver && sAjaxModul_otherReceiver[sItemID]) {
  		eval(sAjaxModul_otherReceiver[sItemID] + "(sReturnValue)");
  		if(AjaxModul_waitingObjectState && AjaxModul_waitingObjectState[sItemID]) {
				AjaxModul_waitingObjectState[sItemID] = "finished";
	  	}
	  	return;
  	}
		
		var aY = aX[1] ? aX[1].split(sSeparator1) : new Array();
		var bSaveNullOption = aY[0] ? parseInt(aY[0]) : "";
		var aZ = aY[1] ? aY[1].split(sSeparator2) : new Array();
		var bSelectNull = aZ[0] ? parseInt(aZ[0]) : "";
		var aV = aZ[1] ? aZ[1].split(sSeparator3) : new Array();
		var sNullText = aV[0];
		sReturnValue = aV[1];
		if(!sReturnValue || sReturnValue=="") {
			if(aAjaxModul_specialFinisher && aAjaxModul_specialFinisher[sItemID]) {
	  		eval(aAjaxModul_specialFinisher[sItemID] + "(sReturnValue)");
	  	}
	  	return;
		}

  	oChangeInput = document.getElementById(sItemID);
  	if(!oChangeInput) { alert("OCMS JavaScript error\n\n   oChangeInput==null if id = '" + sItemID + "'"); return false; }
  	
		for(i=oChangeInput.childNodes.length-1; i>1; i--) oChangeInput.removeChild(oChangeInput.childNodes[i]);
		if(!bSaveNullOption && oChangeInput.childNodes[1]) oChangeInput.removeChild(oChangeInput.childNodes[1]);
		if(bSelectNull) {
			oChangeInput.options[0].text = sNullText;
			oChangeInput.selectedIndex = 0;
		}
		eval("var bGrouped = sReturnValue.search(/" + sSeparator6beg+ "/);");
		if(bGrouped>-1) {
			var aOptGroups = sReturnValue.split(sSeparator6beg);
			if(aOptGroups && aOptGroups.length) for(j=0; j<aOptGroups.length; j++) {
				if(!aOptGroups[j]) continue;
				a = aOptGroups[j].split(sSeparator6end);
				oGroup = document.createElement("OPTGROUP");
				oGroup.label = a[0];
				oGroup.style.fontWeight = "bold";
				oGroup.style.color = "black";
				oGroup.style.fontStyle = "normal";
				aOptions = a[1].split(sSeparator4);
				AjaxModul_constructSelect(oGroup, aOptions, sSeparator5, sSeparator7);
				oChangeInput.appendChild(oGroup);
			}
		}
		else {
  		var aOptions = sReturnValue.split(sSeparator4);
  		AjaxModul_constructSelect(oChangeInput, aOptions, sSeparator5, sSeparator7);
  	}
  	
		if(AjaxModul_waitingObjectState && AjaxModul_waitingObjectState[sItemID]) {
			AjaxModul_waitingObjectState[sItemID] = "finished";
  	}
  	
  	if(aAjaxModul_specialFinisher && aAjaxModul_specialFinisher[sItemID]) {
  		eval(aAjaxModul_specialFinisher[sItemID] + "(sReturnValue)");
  	}
  }
//---------------------------------------------------------------------------------------
	function AjaxModul_constructSelect(oSelectBox, aOptions, sSeparator, sSeparatorInName) {
		var bIsOptGroup = false;
  	var bDoLeftIndent = false;
  	var a = null;
		if(aOptions && aOptions.length) for(i=0; i<aOptions.length; i++) {
			if(!aOptions[i]) continue;
  		aOption = aOptions[i].split(sSeparator);
  		if(aOption[1]==undefined || aOption[1]==null) continue;
  		
			bIsOptGroup = false;
  		bDoLeftIndent = false;
  		if(aOption[1].search(/^\#/)!=-1) { // optgroup (selectable)
				bIsOptGroup = true;
				aOption[1] = aOption[1].replace(/^#/, "");
			}
			else if(aOption[1].search(/^\=/)!=-1) { // option inter optgroup
				bDoLeftIndent = true;
				aOption[1] = aOption[1].replace(/^=/, "");
			}
  		if(document.all) {
  			oNewOption = document.createElement("OPTION");
	  		oNewOption.setAttribute("value", aOption[0]);
	  		if(AjaxModul_iMsieVersion<=6 && bDoLeftIndent) aOption[1] = "    " + aOption[1];
	  		a = null;
	  		a = aOption[1].split(sSeparatorInName);
	  		if(AjaxModul_iMsieVersion<8) {
		  		if(a && a.length>=2 && a[1]>"") {
		  			aOption[1] = a[0];
		  			oNewOption.setAttribute("id", a[1]);
		  		}
	  			oNewOption.setAttribute("innerText", ""+aOption[1]);
  			}
	  		if(bIsOptGroup) oNewOption.style.fontWeight = "bold";
	  		if(bDoLeftIndent) oNewOption.style.paddingLeft = "20px";
	      oElement = oSelectBox.insertBefore(oNewOption);
	      if(AjaxModul_iMsieVersion>=8) {
		      if(oElement) {
		      	if(sSeparatorInName=="~˘~") {
		      		a = aOption[1].split(/\~\˘\~/);
		      	}
		      	oElement.id = a[1];
		      	oElement.text = ""+a[0];
		      }
		    }
  		}
  		else {
  			var sSpecOptionId = "";
  			a = null;
  			a = aOption[1].split(sSeparatorInName);
	  		if(a && a.length>=2 && a[1]>"") {
	  			aOption[1] = a[0];
	  			sSpecOptionId = a[1];
	  		}
  			oNewOption = new Option(aOption[1], aOption[0]);
  			if(bIsOptGroup) oNewOption.style.fontWeight = "bolder";
	  		if(bDoLeftIndent) oNewOption.style.paddingLeft = "20px";
	  		if(sSpecOptionId) oNewOption.id = sSpecOptionId;
	      oSelectBox.appendChild(oNewOption);
	    }
  	}
	}
//---------------------------------------------------------------------------------------



// *************************************************************************************************
// Caller
// *************************************************************************************************

var aAjaxModul_objectInput = new Array();
var aAjaxModul_objectList = new Array();
var aAjaxModul_objectSelectedRowInList = new Array();
var aAjaxModul_ListExists = new Array();
var iAjaxModul_Index = -1;
var aAjaxModul_respondentUrl = new Array();
var sAjaxModul_savedOnSubmitForm = new Array();
var bAjaxModul_stopSuggest = new Array();
var bAjaxModul_listVisible = new Array();
var aAjaxModul_Lang = new Array();

//---------------------------------------------------------------------------------------	
	function AjaxModul_initCaller(iIndex, sLang, sRespondentUrl) {
		aAjaxModul_Lang[iIndex] = sLang;
		aAjaxModul_respondentUrl[iIndex] = sRespondentUrl;
		AjaxModul_init("AjaxModul_ajaxReceiver");

		if(document.all) {
			document.attachEvent("onclick", AjaxModul_closeDiv);
		}
		else {
			document.addEventListener("click", AjaxModul_closeDiv, true );
		}
	}
//---------------------------------------------------------------------------------------
  function AjaxModul_ajaxReceiver(sReturnValue) {
  	if(!aAjaxModul_objectList || !aAjaxModul_objectList[iAjaxModul_Index]) {
  		alert("Error in function AjaxModul_ajaxReceiver().\niAjaxModul_Index = " + iAjaxModul_Index);
  		return;
  	}
  	if(!aAjaxModul_objectList[iAjaxModul_Index].style) {
  		alert("aAjaxModul_objectList["+iAjaxModul_Index+"].style has no properties.\naAjaxModul_objectList["+iAjaxModul_Index+"] = " + aAjaxModul_objectList[iAjaxModul_Index]);
  		return;
  	}
  	
  	var aDim = GetPositionAndDimmension(aAjaxModul_objectInput[iAjaxModul_Index]);
  	iLeft = parseInt(aDim["left"]);
		iTop = parseInt(aDim["top"]) + parseInt(aDim["height"]);

  	aAjaxModul_objectList[iAjaxModul_Index].style.left = iLeft + "px";
  	aAjaxModul_objectList[iAjaxModul_Index].style.top = iTop + "px";
  	
  	aAjaxModul_objectList[iAjaxModul_Index].innerHTML = sReturnValue;
  	aAjaxModul_objectList[iAjaxModul_Index].style.display = sReturnValue ? "block" : "none";
  	aAjaxModul_ListExists[iAjaxModul_Index] = sReturnValue ? true : false;
  	
  }
//---------------------------------------------------------------------------------------
  function AjaxModul_keyPress(event, iIndex) {
  	iAjaxModul_Index = iIndex;
		if(event.keyCode==13) { // ENTER
			if(aAjaxModul_objectSelectedRowInList[iIndex]) {
				AjaxModul_rowClick(aAjaxModul_objectSelectedRowInList[iIndex], iIndex);
			}
			if(aAjaxModul_objectInput[iIndex].form) {
				if(!sAjaxModul_savedOnSubmitForm[iIndex]) {
					sAjaxModul_savedOnSubmitForm[iIndex] = aAjaxModul_objectInput[iIndex].form.onsubmit;
				}
				aAjaxModul_objectInput[iIndex].form.onsubmit = function() { return false; };
				if(sOcms_BrowserName=="MSIE") {
					event.keyCode = 0;
				}
				bAjaxModul_stopSuggest[iIndex] = true;
			}
			if(event.stopPropagation) event.stopPropagation(); // this code is for Mozilla and Opera
			else if (window.event) window.event.cancelBubble = true; // this code is for IE
		}
  }
//---------------------------------------------------------------------------------------
  function AjaxModul_caller(event, iIndex, sInputID, sListID) {
  
  	iAjaxModul_Index = iIndex;
		aAjaxModul_objectInput[iIndex] = document.getElementById(sInputID);
  	aAjaxModul_objectList[iIndex] = document.getElementById(sListID);
  	if(!aAjaxModul_objectInput[iIndex]) {
  		alert("No HTML tag width id = " + sInputID);
  		return false;
  	}
  	if(!aAjaxModul_objectList[iIndex]) {
  		alert("No HTML tag width id = " + sListID);
  		return false;
  	}
  	
  	if(bAjaxModul_stopSuggest[iIndex]==true) {
  		bAjaxModul_stopSuggest[iIndex] = false;
  		return false;
  	}
  	
  	var aDim = GetPositionAndDimmension(aAjaxModul_objectInput[iIndex]);
		if(sOcms_BrowserName=="MSIE" && sOcms_BrowserVersionMajor<=7) {
			aDim["left"] = 0;
			aDim["top"] = - parseInt(aDim["height"]);
		}
  	iLeft = parseInt(aDim["left"]);
		iTop = parseInt(aDim["top"]) + parseInt(aDim["height"]);
		bAjaxModul_listVisible[iIndex] = true;
  	
  	if(event.keyCode==40 && aAjaxModul_objectList[iIndex].style.display=="block") { // down
			AjaxModul_rowStep(1, iIndex);
			if(document.all) aAjaxModul_objectInput[iIndex].focus();
		}
		else if(event.keyCode==38 && aAjaxModul_objectList[iIndex].style.display=="block") { // up
			AjaxModul_rowStep(-1, iIndex);
			if(document.all) aAjaxModul_objectInput[iIndex].focus();
		}
		else {
			aAjaxModul_objectSelectedRowInList[iIndex] = null;
			sUrl = aAjaxModul_respondentUrl[iIndex]
				+ "?name=" + AjaxModul_escape(aAjaxModul_objectInput[iIndex].value)
				+ "&listlang=" + aAjaxModul_Lang[iIndex]
				+ "&index=" + iIndex
				+ "&left=" + iLeft
				+ "&top=" + iTop;
			AjaxModul_call(sUrl, "AjaxModul_ajaxReceiver");
		}
  }
//---------------------------------------------------------------------------------------
	function AjaxModul_escape(str) {
		str = str.replace(/á/g, "L1--!!");
		str = str.replace(/é/g, "L2--!!");
		str = str.replace(/í/g, "L3--!!");
		str = str.replace(/ó/g, "L4--!!");
		str = str.replace(/ö/g, "L5--!!");
		str = str.replace(/ő/g, "L6--!!");
		str = str.replace(/ú/g, "L7--!!");
		str = str.replace(/ü/g, "L8--!!");
		str = str.replace(/ű/g, "L9--!!");
		str = str.replace(/ä/g, "L10--!!");

		str = str.replace(/Á/g, "U1--!!");
		str = str.replace(/É/g, "U2--!!");
		str = str.replace(/Í/g, "U3--!!");
		str = str.replace(/Ó/g, "U4--!!");
		str = str.replace(/Ö/g, "U5--!!");
		str = str.replace(/Ő/g, "U6--!!");
		str = str.replace(/Ú/g, "U7--!!");
		str = str.replace(/Ü/g, "U8--!!");
		str = str.replace(/Ű/g, "U9--!!");
		str = str.replace(/Ä/g, "U10--!!");

		return escape(str);
	}
//---------------------------------------------------------------------------------------
  function AjaxModul_closeDiv() {
  
  	if(!aAjaxModul_objectList) {
  		alert("Error in function AjaxModul_closeDiv().\nVariable aAjaxModul_objectList is not set.");
			return false;
		}
  	
  	oDiv = null;
  	for(var i=0; i<=aAjaxModul_objectList.length-1; i++) {
  		if(aAjaxModul_objectList[i] && aAjaxModul_objectList[i].style) {
  			aAjaxModul_objectList[i].style.display = "none";
  		}
  		oDiv = document.getElementById("AjaxModulDiv_" + i);
			if(oDiv) oDiv.scrollTop = 0;
			bAjaxModul_listVisible[i] = false;
  	}
  	
  	
		aAjaxModul_objectSelectedRowInList = new Array();
		aAjaxModul_ListExists = new Array();
		
		if(sOcms_BrowserName=="MSIE" && sOcms_BrowserVersionMajor<=6) {
			for(i=1; i<=100; i++) {
				var oIframe = document.getElementById("AjaxModulIframe_" + i);
				if(oIframe) oIframe.style.display = "none";
				else break;
			}
		}
		
		bAjaxModul_stopSuggest[iAjaxModul_Index] = true;
		setTimeout("AjaxModul_restoreOnSubmitEvent("+iAjaxModul_Index+")",100);
		
		iAjaxModul_Index = -1;
  	
  }
//---------------------------------------------------------------------------------------
	function AjaxModul_restoreOnSubmitEvent(iIndex) {
		
		if(aAjaxModul_objectInput[iIndex]) {
			if(sAjaxModul_savedOnSubmitForm[iIndex] && typeof sAjaxModul_savedOnSubmitForm[iIndex]!="undefined" && sAjaxModul_savedOnSubmitForm[iIndex]!="undefined") {
	  		if(document.all && aAjaxModul_objectInput[iIndex].form) {
					aAjaxModul_objectInput[iIndex].form.attachEvent("onsubmit", sAjaxModul_savedOnSubmitForm[iIndex] );
				}
				else {
					aAjaxModul_objectInput[iIndex].form.onsubmit = sAjaxModul_savedOnSubmitForm[iIndex];
					//aAjaxModul_objectInput[iIndex].form.addEventListener("submit", sAjaxModul_savedOnSubmitForm[iIndex], true );
				}
	  	}
	  	else aAjaxModul_objectInput[iIndex].form.onsubmit = function() { return true; };
  	}
  	
		bAjaxModul_stopSuggest[iIndex] = false;
		
	}
//---------------------------------------------------------------------------------------
	function AjaxModul_rowSelect(oLi, iIndex) {
		oLi.style.backgroundColor = '#3366cc';
		oLi.style.color = 'white';
		if(aAjaxModul_objectSelectedRowInList[iIndex]) {
			aAjaxModul_objectSelectedRowInList[iIndex].style.backgroundColor = 'white';
			aAjaxModul_objectSelectedRowInList[iIndex].style.color = 'black';
		}
		
		aAjaxModul_objectSelectedRowInList[iIndex] = oLi;
		aAjaxModul_objectSelectedRowInList[iIndex].focus();
		
		if(!aAjaxModul_objectInput || !aAjaxModul_objectInput[iIndex]) {
			alert("Error in function AjaxModul_rowSelect().\niIndex = " + iIndex);
			return false;
		}

		aAjaxModul_objectInput[iIndex].focus();
	}
//---------------------------------------------------------------------------------------
	function AjaxModul_rowDeselect(oLi, iIndex) {
		oLi.style.backgroundColor = 'white';
		oLi.style.color = 'black';
		aAjaxModul_objectSelectedRowInList[iIndex] = null;
	}
//---------------------------------------------------------------------------------------
	function AjaxModul_rowClick(oLi, iIndex) {
		if(!aAjaxModul_objectInput || !aAjaxModul_objectInput[iIndex]) {
			alert("Error in function AjaxModul_rowClick().\niIndex = " + iIndex);
			return false;
		}
		aAjaxModul_objectInput[iIndex].value = oLi.className;
		
		aAjaxModul_objectInput[iIndex].focus();
		if(document.all) {
			iAjaxModul_Index = iIndex;
			AjaxModul_closeDiv();
		}
	}
//---------------------------------------------------------------------------------------
	function AjaxModul_rowStep(iStep, iIndex) {
		if(!aAjaxModul_objectInput || !aAjaxModul_objectInput[iIndex]) {
			alert("Error in function AjaxModul_rowStep().\naAjaxModul_objectInput is undefined.\niIndex = " + iIndex);
			return false;
		}
		if(!aAjaxModul_objectList || !aAjaxModul_objectList[iIndex]) {
			alert("Error in function AjaxModul_rowStep().\naAjaxModul_objectList is undefined.\niIndex = " + iIndex);
			return false;
		}
		if(!aAjaxModul_objectList[iIndex] || !aAjaxModul_objectList[iIndex].style) {
			alert("Error in function AjaxModul_rowStep().\naAjaxModul_objectList["+iIndex+"].style is undefined.\naAjaxModul_objectList["+iIndex+"] = " + aAjaxModul_objectList[iIndex]);
			return false;
		}
		if(aAjaxModul_objectList[iIndex] && aAjaxModul_objectList[iIndex].style && aAjaxModul_objectList[iIndex].style.display=="block") {
			var iMyIndex = 999999;
			if(aAjaxModul_objectSelectedRowInList[iIndex]==null) iMyIndex = 0;
			else {
				var a = aAjaxModul_objectSelectedRowInList[iIndex].id.split("_");
				iMyIndex = a[1] ? parseInt(a[1]) : 0;
				iMyIndex += iStep;
				if(iMyIndex<0) {
					iMyIndex = 0;
					aAjaxModul_objectSelectedRowInList[iIndex] = null;
				}
			}
			oLi = document.getElementById("IDAjaxRow_" + iMyIndex + "_" + iIndex);
			if(!oLi) document.getElementById("IDAjaxRow_0_" + iIndex);
			if(oLi) {
				AjaxModul_rowSelect(oLi, iIndex);
				aAjaxModul_objectInput[iIndex].value = oLi.innerHTML;
			}
		}
		aAjaxModul_objectList[iIndex].focus();
		
		if(sOcms_BrowserName=="MSIE" && sOcms_BrowserVersionMajor<=7) {
			var aDim = GetPositionAndDimmension(aAjaxModul_objectInput[iIndex]);
	  	iLeft = parseInt(aDim["left"]);
			iTop = parseInt(aDim["top"]) + parseInt(aDim["height"]);		
			aAjaxModul_objectList[iIndex].style.top = iTop + "px";
			aAjaxModul_objectList[iIndex].style.left = iLeft + "px";
		}
	}
//---------------------------------------------------------------------------------------


