
// ----------------------------------------------------------------------------------------------

// ----------------------------------------------------------------------------------------------
// Browser recognition variables
// ----------------------------------------------------------------------------------------------
	if (navigator.userAgent.indexOf("Safari") > 0) {
		isSafari = true;
		isMoz = false;
		isIE = false;
	} else if (navigator.product == "Gecko") {
		isSafari = false;
		isMoz = true;
		isIE = false;
	} else {
		isSafari = false;
		isMoz = false;
		isIE = true;
	};

// ----------------------------------------------------------------------------------------------
// Event Handling functions
// ----------------------------------------------------------------------------------------------
	function addListener(element, type, listener) {
		if(element.addEventListener)
			element.addEventListener(type, listener, false);
		else
			element.attachEvent('on' + type, listener);
	};
	
	function removeListener(element, type, listener) {
		if(element.removeEventListener) {
			element.removeEventListener(type, listener, false);
		} else {
			element.detachEvent('on' + type, listener);
		}
	};

	function addKeyListener(element, listener) {
		if (isSafari)
			element.addEventListener("keyup",listener,false);
		else if (isMoz)
			element.addEventListener("keyup",listener,false);
		else
			element.attachEvent("onkeyup",listener);
	};
	
	function removeKeyListener(element, listener) {
		if (isSafari)
			element.removeEventListener("keyup",listener,false);
		else if (isMoz)
			element.removeEventListener("keyup",listener,false);
		else
			element.detachEvent("onkeyup",listener);
	};

	
// ----------------------------------------------------------------------------------------------
// AutoComplete related
// ----------------------------------------------------------------------------------------------
	function AutoComplete(astrSource, astrTarget, aContextID) 
	{
		var oClearInterval	= null;
		var oInterval				= null;
		var oXmlHttp 				= null;
		var BASE_URL				= "downloadxmlproperty.pp";
		var oSource					= getObj(astrSource);
		var oTarget					= getObj(astrTarget);
		var arrElements			= Array();
		var iContextID			= aContextID;
		
		function showAutoCompleteBoxCommand() {
			clearTimeOut();
	
			if (window.XMLHttpRequest)
				oXmlHttp = new XMLHttpRequest(); 
			else if (window.ActiveXObject)
				oXmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
			
			oXmlHttp.onreadystatechange = showAutoCompleteBoxHandler;
			oXmlHttp.open("GET", BASE_URL + "?contextid=" + iContextID + "&value=" + oSource.value, true);
			oXmlHttp.send(null);
		};
	
		function showAutoCompleteBoxHandler() {
			if (oXmlHttp.readyState==4) {
		
				if (oXmlHttp.status != 200)
					return;
			
				var strResult = oXmlHttp.responseText;
				
				// parse received string
				arrElements = strResult.split("|e|");
				
				oTarget.options.length = 0;
				
				if (strResult.length == 0)
					return;
					
				// add new options to the ddlb target
				for (var i=0; i<arrElements.length-1; i++)
					oTarget.options[i] = new Option(arrElements[i], arrElements[i]);
					
				showDropdown();
			}
		};
		
		function clearTimeOut() {
			clearInterval(oInterval);
		};
		
		function setTimeOut() {
			clearTimeOut();	
			oInterval = setInterval(showAutoCompleteBoxCommand, 500);
		};
		
		function getObj (name) {
			if (document.getElementById)
				return document.getElementById(name);
			else if (document.all)
				return document.all[name];
			else if (document.layers)
				return document.layers[name];
		};
	
		function removeDropdown() {
			clearInterval(oClearInterval);
	
			if(oTarget.style.visibility == 'hidden')
				return;
	
			removeListener(oTarget, "change", handleTargetChange);
			removeListener(oTarget, "blur", handleTargetChange);
			removeListener(oTarget, "focus", handleTargetFocus);
			
			oTarget.style.visibility = 'hidden'
			oTarget.style.display = 'none';
			oTarget.options.length = 0;
		};
		
		function showDropdown() {
			if(oTarget.style.visibility == 'visible')
				return;
			
			addListener(oTarget, "change", handleTargetChange);
			addListener(oTarget, "blur", handleTargetBlur);
			addListener(oTarget, "focus", handleTargetFocus);
			
			oTarget.style.visibility = 'visible'
			oTarget.style.display = 'block';
		};
		
		function handleKeyDown(e) {
			if (oSource.value.length < 3 || e.keyCode == 9)
				return;
			
			setTimeOut();
		};
		
		function handleTargetChange(e) {
			oSource.value = oTarget.options[oTarget.selectedIndex].value;
		};
		
		function handleTargetBlur(e) {
			removeDropdown();
		};
	
		function handleTargetFocus(e) {
			clearInterval(oClearInterval);
		};
		
		function handleSourceBlur(e) {
			oClearInterval = setInterval(removeDropdown, 200);
		};
		
		// listen to typing in source
		addKeyListener(oSource, handleKeyDown);
		addListener(oSource, 'blur', handleSourceBlur);
	};
	
// ----------------------------------------------------------------------------------------------
// Global functions
// ----------------------------------------------------------------------------------------------
	function getObj (name) {
		if (document.getElementById)
			return document.getElementById(name);
		else if (document.all)
			return document.all[name];
		else if (document.layers)
			return document.layers[name];
	};
		
	function iSmartRollOver(obj) {
		var strFilename,strExt, intPos;
		
		if (obj != null) {
			strFilename = obj.src.toLowerCase();
			intPos = strFilename.lastIndexOf(".");
			strExt = strFilename.substring(intPos);
			strFilename = strFilename.substring(0, intPos);
			intPos = strFilename.indexOf("_ro");
			if (intPos == -1) {
				strFilename = strFilename + "_ro" + strExt;
			} else {
				strFilename = strFilename.substring(0, intPos) + strExt;
			}
			obj.src = strFilename;
		}
	};
	
	function openSearchPopup(url,name) {
		var w 	= parseInt(window.screen.width * 0.9);
		var h		= parseInt(window.screen.height * 0.9);
		var t		= 0;
		var l		= ((window.screen.width/2)-(w/2));
		properties 	= "resizable=0,scrollbars=1,width=" + w + ",height=" + h + ",top=" + t + ",left=" + l + "";
	 	x=window.open(url+"&page=1&width="+ w +"&height=" + h,name, properties);
	};
	
	function iAlert(alert,url) {
		if(confirm(alert))
			document.location = url;
	};
	
	function NewWin(url,width,height) {
		window.open(url,rand(10000),'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width='+width+',height='+height+'');
	};
	
	function rand(number) {
		return Math.ceil(Math.random() * number);
	};
	
// ----------------------------------------------------------------------------------------------
// Mailinglists related
// ----------------------------------------------------------------------------------------------
function checkAll(strName, objID) {
	if (document.getElementById(objID).checked==true)
	{
		for (var i=0;i<document.FormPrefs.length;i++)
		{
			if(document.FormPrefs[i].type=="checkbox" && document.FormPrefs[i].name==strName)
			{ 
				document.FormPrefs[i].checked=true;
			}
		}
	}
} 
	
// ----------------------------------------------------------------------------------------------
// SearchForm functions
// ----------------------------------------------------------------------------------------------
	function toggleSearchPanel(intPanel) {
		for (var i=0;i<3;i++) {
			var obj = document.getElementById('search' + i);
			if (obj) {
				if (i==intPanel)
					obj.style.display = '';
				else
					obj.style.display = 'none';
			}
		}
	};
	
	function ClickedAll(form,strName)
	{
		var blnSet=form[strName + "All"].checked ;
		for (i=0; i<form.elements.length; i++)
			if (form.elements[i].name == strName)
				form.elements[i].checked = blnSet;
	};
	
	function SetAll(form,strName) {
		var blnSet=true;
		for (i=0; i<form.elements.length; i++)
			if (form.elements[i].name == strName)
				blnSet = blnSet & form.elements[i].checked;
		form[strName + "All"].checked = blnSet;
	};

	function ClickedAllWithList(form,strName) {
		var blnSet=form[strName + "All"].checked;
		var objList = form[strName];
		for (i=0; i<objList.options.length; i++)
			objList.options[i].selected = blnSet;
	};

	function SetAllWithList(form, strName) {
		var intSelected = 0;
		var objList = form[strName];
		for(i=0; i<objList.options.length; i++)
			if (objList.options[i].selected) intSelected++;
		form[strName + "All"].checked = (intSelected == objList.options.length);
	};
	
	function onChooseDateSearchType(oSource) {
		switch(oSource.value) {
			case "DropDownDate":
				toggleDateEditField(true);
				toggleDropDownField(false);
				break;
			case "EditDate":
				toggleDateEditField(false);
				toggleDropDownField(true);
				break;
		}
	};
	
	function toggleDropDownField(blnDisabled) {
		var arrElements = document.getElementsByTagName("select")
	
		for (var i=0;i<arrElements.length;i++) {
			var oTemp = arrElements[i];
			
			if (oTemp.id == "periodindays") {
				var oTemp = oTemp;
			
				if (oTemp != null)
					oTemp.disabled = blnDisabled;
				if (blnDisabled)
					oTemp.selectedIndex = 0;
			}
		}	
	};
	
	function toggleDateEditField(blnDisabled) {
		var arrElements = document.getElementsByTagName("input")
		
		for (var i=0;i<arrElements.length;i++) {
			var oTemp = arrElements[i];
			
			if (oTemp.id == "startdate" || oTemp.id == "enddate") {
				if (oTemp != null)
					oTemp.disabled = blnDisabled;
				if (blnDisabled)
					oTemp.value ='dd-mm-yy';
			}
		}
	};


// ----------------------------------------------------------------------------------------------
// XmlHttp related
// ----------------------------------------------------------------------------------------------
	var BASE_URL 	= "downloadxmlproperty.pp";
	var oXmlHttp	= null;
	
	function createDelegate(x,z) {
		return function(y) {
			return x(z);
		}
	};
	
	function htmlRequest(strArguments,oResultHandler) {
		if (window.XMLHttpRequest)
			oXmlHttp=new XMLHttpRequest(); 	// code for Mozilla, etc.
		else if (window.ActiveXObject)
			oXmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); 	// code for IE
	
		if (oXmlHttp != null) {	
			oXmlHttp.onreadystatechange=oResultHandler;
			oXmlHttp.open("GET", BASE_URL + strArguments,true);
			oXmlHttp.send(null);
		}
	};
	
	// Picture rollover related
	function getPictureRollOver(intPictureID) {
		if (intPictureID!=0)
			htmlRequest("?option=description&pictureid=" + intPictureID,createDelegate(getPictureRollOverHandler));
	};
	
	// clear any existing overlibs (requires overlib.js)
	function removePictureRollOver() {
		nd();
		
		// clear current html request
		oXmlHttp.abort();
		delete oXmlHttp;
		oXmlHttp = null;
	};
	
	// Result handler for getPictureRollOver
	function getPictureRollOverHandler() {
		if (oXmlHttp == null)
			return;
			
			// if xmlhttp shows loaded
		if (oXmlHttp.readyState==4) {
			// OK?
			if (oXmlHttp.status != 200)
				return;
		
			if (oXmlHttp.responseText != "")
				overlib(oXmlHttp.responseText);
		}
	};
