var siBox = '<table style="width:400px"><tr>'
	+ ' <td colspan="2" height="40" valign="middle" '
	+ ' align="center" style="color:#1AA1E9;font-family:\'Trebuchet MS\',Arial,Verdana;font-size:2em;">Oops!</td>'
    + ' </tr><tr><td colspan="2" style="font-family:\'Trebuchet MS\', Arial, Verdana;font-size:1.2em;" align="left">[%INFO%]</td></tr></table>';
var seBox='<table style="width:400px"><tr>'
	+ ' <td colspan="2" height="40" valign="middle" align="center" '
	+ ' style="color:#1AA1E9;font-family:\'Trebuchet MS\',Arial,Verdana;font-size:2em;">Oops!</td>'
	+ '</tr><tr><td colspan="2" style="font-family:\'Trebuchet MS\', Arial, Verdana;font-size:1.2em;" align="left">[%ERRORS%]</td>'
	+ '</tr><tr><td align="right" onclick="$.unblockUI();">'
	+ '<span style="font-family:\'Trebuchet MS\', Arial, Verdana;font-size:2em;color:#FF7F2A;font-weight:bold;cursor:pointer"'
	+ ' onClick="$.unblockUI;">[Close Window]</span></td></tr></table>';
	
var sErrorDepartCityNotFiled	="<span class=\'errorT\'>From Field</span>: The field shouldn't be empty<br>";
var sErrorArrivalCityNotFiled	="<span  class=\'errorT\'>To Field</span>: The field shouldn't be empty<br>";
var sErrorHotelCityNotFiled		="<span  class=\'errorT\'>City</span>: The city field shouldn't be empty<br>";
var sErrorDepartAirportNotFound	="<span  class=\'errorT\'>From Field</span>: The location couldn't be found<br>";
var sErrorArrivalAirportNotFound="<span class=\'errorT\'>To field</span>: the airport couldn't be found<br>";
var sErrorAirportSame			="The depart and arrival city must be different<br>";
var sErrorDepartDateNotFiled	="<span  class=\'errorT\'>Depart date</span>: the field shouldn't be empty<br>";
var sErrorDepartDateNotValid	="<span  class=\'errorT\'>Depart date</span>: wrong format, it should be DD-MM-YYYY<br>";
var sErrorDepartDateNotValidDate="<span  class=\'errorT\'>Depart date</span>: the selected date must be posterior from the current date<br>";
var sErrorArrivalDateNotFiled	="<span  class=\'errorT\'>Return date</span>: the field shouldn't be empty<br>";
var sErrorArrivalDateNotValid	="<span  class=\'errorT\'>Return date</span>: wrong format, it should be DD-MM-YYYY<br>";
var sErrorArrivalDateNotValidDate="<span  class=\'errorT\'>Return date</span>: the selected date must be posterior from the current date<br>";
var sErrorPassengersNotValid	="<span class=\'errorT\'>Passengers</span>: the adult count should be greater than the infant count<br>";
var sErrorDepartHourNotValid	="<span class=\'errorT\'>Depart date</span>: the depart hour isn't valid<br>";
var sErrorArrivalHourNotValid	="<span class=\'errorT\'>Return date</span>: the return hour isn't valid<br>";
var sErrorDepartIntervalNotValid="<span class=\'errorT\'>Depart date</span>: the time interval isn't valid<br>";
var sErrorArrivalIntervalNotValid="<span class=\'errorT\'>Return date</span>: the time interval isn't valid<br>";
var sErrorAdultNotValid			="<span class=\'errorT\'>Passengers</span>: There needs to be at least on adult<br>";
var $_NAME 		= "name";
var $_COUNTRY	= "country";
var $_TYPE 		= "type";
var $_EVENT_ATTACHMENT = "The system could not attach the event to the object.\nPlease check that the first parameter is really of addEvent is really an object.";
var $_COULDNT_LOAD_COMBO_BOX = "The system could not load the combo-box";
var $_SORRY_FOR_THE_INCONVENIENCE = ".\nSorry for the inconvenience.\n";
var $_COULDNT_FETCH_ADDRESS_LIST = "An error happened when trying to fetch the addressList";
var $_COULDNT_FETCH_ERROR_FROM_XML_STREAM = "The system could not fetch the error message in the XML stream.\n";
var $_NO_AJAX_SUPPORT = "The system could not initialize Ajax.\nPlease check if your browser is Ajax compatible; if not, may we suggest a browser upgrade?";

function limitDate(o)
{
	if(document.all)
	{
		eventObject=window.event;
		if(o.value.length==2||o.value.length==5)
			o.value+="-";
		if(eventObject.keyCode>=48&&eventObject.keyCode<=57)
			return;
		eventObject.keyCode="0";
	}
}
function limitDateEx(evt,o)
{
	eventObject=window.event?window.event:evt;
	keyCode=window.event?eventObject.keyCode:eventObject.which;
	if(keyCode==0) return;
	if(keyCode==8||keyCode==46)	return;
	if(keyCode>=37&&keyCode<=40) return;
	if(keyCode==9) return;
	if(o.value.length==2||o.value.length==5) o.value+="-";
	if(keyCode>=48&&keyCode<=57) return;
	if(window.event)eventObject.keyCode=0;
	else eventObject.preventDefault();
	return;
}
function limitNum(o){
	if(document.all)
	{
		eventObject=window.event;
		if(eventObject.keyCode>=48&&eventObject.keyCode<=57) return;
		eventObject.keyCode="0";
	}
}
function getParam(sParamName){
	iStart=document.location.search.substr(1).indexOf("&"+sParamName+"=");
	if(iStart==-1)
		iStart=document.location.search.substr(1).indexOf("?"+sParamName+"=");
	iEnd=document.location.search.substr(1).indexOf("&",iStart+1);
	if(iEnd==-1)
		return(document.location.search.substr(1).substr(iStart+sParamName.length+2));
	else
		return(document.location.search.substr(1).substr(iStart+sParamName.length+2,iEnd-(iStart+sParamName.length+2)));
}
function URLDecode(psEncodeString)
{
	var lsRegExp=/\+/g;
	return unescape(String(psEncodeString).replace(lsRegExp," "));
}
function unescapeHTML(value)
{
	var data=value.split("\n");
	var result="";
	for(var i=0;i<data.length;i++)
		result+=unescapeHTMLPart(data[i])+"\n";
	return(result);
}
function unescapeHTMLPart(value)
{
	var div=document.createElement('div');
	div.innerHTML=value.replace(/<\/?[^>]+>/gi,'');
	return(div.childNodes[0]?div.childNodes[0].nodeValue:'');
}
function keypresshook( e )
{
	if (!e){
		e = window.event ;
	}

	if ( e.keyCode == 13 ){
		if ( window.mask_enter_event == true){
			window.mask_enter_event = false ;
		} else {
			submitForm() ;
		}
	}
}
function keypresshookh( e )
{
	if (!e){
		e = window.event ;
	}
	if ( e.keyCode == 13 ){
		if ( window.mask_enter_event == true){
			window.mask_enter_event = false ;
		} else {
			submitHForm() ;
		}
	}
}
//=== ../FormCheckV2.js ===
function submitHForm()
{
  sErrorMessage = "";
  oTheForm = document.getElementById("searchForm");
  
  // fill the hidden values with autocompleted data
  oTheForm.sArrivalLocation.value  = departFrom.inputElement.value;  
  
  if(oTheForm.sArrivalLocation.value.length==0)
    sErrorMessage += sErrorHotelCityNotFiled;  		

  if(sErrorMessage.length>0)
    $.blockUI(seBox.replace("[%ERRORS%]",sErrorMessage));
  else
    oTheForm.submit();
}

function submitForm()
{
	sErrorMessage="";
	oTheForm=document.getElementById("searchForm");
	oTheForm.dlc.value=departFrom.addressCode.value;
	oTheForm.sDepartLocation.value=departFrom.inputElement.value;
	oTheForm.alc.value=arrivalTo.addressCode.value;
	oTheForm.sArrivalLocation.value=arrivalTo.inputElement.value;
	if(oTheForm.sDepartLocation.value.length==0)
		sErrorMessage+=sErrorDepartCityNotFiled;
	if(oTheForm.sArrivalLocation.value.length==0)
		sErrorMessage+=sErrorArrivalCityNotFiled;
	if(oTheForm.dlc.value.length==0&&oTheForm.sDepartLocation.value.length>0)
		sErrorMessage+=sErrorDepartAirportNotFound;
	if(oTheForm.alc.value.length==0&&oTheForm.sArrivalLocation.value.length>0)
		sErrorMessage+=sErrorArrivalAirportNotFound;
	if(oTheForm.alc.value==oTheForm.dlc.value&&oTheForm.dlc.value.length>0)
		sErrorMessage+=sErrorAirportSame;
	if(oTheForm.sDepartDate.value.length==0)
		sErrorMessage+=sErrorDepartDateNotFiled;
	if(!checkDate(oTheForm.sDepartDate.value))
		sErrorMessage+=sErrorDepartDateNotValid;now=new Date();
	if(getDate(oTheForm.sDepartDate.value)<now)
		sErrorMessage+=sErrorDepartDateNotValidDate;
	if(oTheForm.psFareType.length&&oTheForm.psFareType[0].checked)
	{	
		if(oTheForm.sArrivalDate.value.length==0)
		sErrorMessage+=sErrorArrivalDateNotFiled;
		if(!checkDate(oTheForm.sArrivalDate.value))
			sErrorMessage+=sErrorArrivalDateNotValid;
		if(getDate(oTheForm.sArrivalDate.value)<getDate(oTheForm.sDepartDate.value))
			sErrorMessage+=sErrorArrivalDateNotValidDate;
	}
	if(oTheForm.sDepartHourMin)
	{
		if(oTheForm.sDepartHourMin.value!="")
			if(parseInt(oTheForm.sDepartHourMin.value)<0||parseInt(oTheForm.sDepartHourMin.value)>24)
				sErrorMessage+=sErrorDepartHourNotValid+"\n";
		if(oTheForm.sArrivalHourMin.value!="")
			if(parseInt(oTheForm.sArrivalHourMin.value)<0||parseInt(oTheForm.sArrivalHourMin.value)>24)
				sErrorMessage+=sErrorArrivalHourNotValid+"\n";
		if(oTheForm.sDepartHourMax.value!="")
			if(parseInt(oTheForm.sDepartHourMax.value)<0||parseInt(oTheForm.sDepartHourMax.value)>24)
				sErrorMessage+=sErrorDepartHourNotValid+"\n";
		if(oTheForm.sArrivalHourMax.value!="")
			if(parseInt(oTheForm.sArrivalHourMax.value)<0||parseInt(oTheForm.sArrivalHourMax.value)>24)
				sErrorMessage+=sErrorArrivalHourNotValid+"\n";
		if(oTheForm.sDepartHourMin.value!=""||oTheForm.sDepartHourMax.value!="")
		{
			oTheForm.sDepartHourMin.value=oTheForm.sDepartHourMin.value?oTheForm.sDepartHourMin.value:0;
			oTheForm.sDepartHourMax.value=oTheForm.sDepartHourMax.value?oTheForm.sDepartHourMax.value:24;
			if(parseInt(oTheForm.sDepartHourMin.value?oTheForm.sDepartHourMin.value:24)>=parseInt(oTheForm.sDepartHourMax.value?oTheForm.sDepartHourMax.value:0))
				sErrorMessage+=sErrorDepartIntervalNotValid+"\n";
		}
		if(oTheForm.sArrivalHourMin.value!=""||oTheForm.sArrivalHourMax.value!="")
		{
			oTheForm.sArrivalHourMin.value=oTheForm.sArrivalHourMin.value?oTheForm.sArrivalHourMin.value:0;
			oTheForm.sArrivalHourMax.value=oTheForm.sArrivalHourMax.value?oTheForm.sArrivalHourMax.value:24;
			if(parseInt(oTheForm.sArrivalHourMin.value?oTheForm.sArrivalHourMin.value:24)>=parseInt(oTheForm.sArrivalHourMax.value?oTheForm.sArrivalHourMax.value:0))
				sErrorMessage+=sErrorArrivalIntervalNotValid+"\n";
		}
	}
	if(sErrorMessage.length>0)
		$.blockUI(seBox.replace("[%ERRORS%]",sErrorMessage));
	else
		oTheForm.submit();
}
function submitLightForm()
{
	sErrorMessage="";
	oTheForm=document.getElementById("searchForm");
	oTheForm.dlc.value=departFrom.addressCode.value;
	oTheForm.sDepartLocation.value=departFrom.inputElement.value;
	oTheForm.alc.value=arrivalTo.addressCode.value;
	oTheForm.sArrivalLocation.value=arrivalTo.inputElement.value;
	if(oTheForm.sDepartLocation.value.length==0)
		sErrorMessage+=sErrorDepartCityNotFiled+"<br/>";
	if(oTheForm.sArrivalLocation.value.length==0)
		sErrorMessage+=sErrorArrivalCityNotFiled+"<br/>";
	if(oTheForm.dlc.value.length==0&&oTheForm.sDepartLocation.value.length>0)
		sErrorMessage+=sErrorDepartAirportNotFound+"<br/>";
	if(oTheForm.alc.value.length==0&&oTheForm.sArrivalLocation.value.length>0)
		sErrorMessage+=sErrorArrivalAirportNotFound+"<br/>";
	if(oTheForm.alc.value==oTheForm.dlc.value&&oTheForm.dlc.value.length>0)
		sErrorMessage+=sErrorAirportSame+"<br/>";
	if(oTheForm.sDepartDate.value.length==0)
		sErrorMessage+=sErrorDepartDateNotFiled+"<br/>";
	if(!checkDate(oTheForm.sDepartDate.value))
		sErrorMessage+=sErrorDepartDateNotValid+"<br/>";
	now=new Date();
	if(getDate(oTheForm.sDepartDate.value)<now)
		sErrorMessage+=sErrorDepartDateNotValidDate+"<br/>";
	if(sErrorMessage.length>0)
		$.blockUI(seBox.replace("[%ERRORS%]",sErrorMessage));
	else 
		oTheForm.submit();
}
function getDate(sDate)
{
	return(new Date(parseInt(sDate.substring(6),10),parseInt(sDate.substring(3,5),10)-1,parseInt(sDate.substring(0,2),10)));
}
function checkDate(sDate)
{
	dDate=getDate(sDate);
	if(dDate.getDate()!=parseInt(sDate.substring(0,2),10)||(dDate.getMonth()+1)!=parseInt(sDate.substring(3,5),10)||dDate.getFullYear()!=parseInt(sDate.substring(6),10))
		return(false);
	return(true);
}

var errorManager={sErrorMessages:"",showErrors:function()
{
	oErrorDiv=document.createElement("DIV");
	oErrorDiv.id="wndError";
	oErrorDiv.innerHTML="<b>Error log:</b><br />"+errorManager.sErrorMessages;
	document.body.insertBefore(oErrorDiv,document.body.childNodes[document.body.childNodes.length-1]);},systemDie:			function(value)
	{
		errorManager.sErrorMessages+=value+"<br />";
		errorManager.showErrors();
	}
}

var eventManager={bDebugMode:true,addEvent:function(obj,type,fn)
{
	if(obj.addEventListener)
	{
		obj.addEventListener(type,fn,false);
		return(true);
	}
	else
	if(obj.attachEvent)
	{
		obj["e"+type+fn]=fn;
		obj[type+fn]=function()
			{obj["e"+type+fn](window.event);};
		obj.attachEvent("on"+type,obj[type+fn]);
		return(true);
	}
	if(this.bDebugMode)
	$.blockUI(seBox.replace("[%ERRORS%]",$_EVENT_ATTACHMENT));
	}
}

function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (1) {
			curleft+=obj.offsetLeft;
			if (!obj.offsetParent) {
				break;
			}
			obj=obj.offsetParent;
		}
	} else if (obj.x) {
		curleft+=obj.x;
	}
	return curleft;
}
function findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (1) {
			curtop+=obj.offsetTop;
			if (!obj.offsetParent) {
				break;
			}
			obj=obj.offsetParent;
		}
	} else if (obj.y) {
		curtop+=obj.y;
	}
	return curtop;
}
function centerElementInBody(el,body) {

	if  (el != null) {
		if(!(el.className=="no_center")) {
			el.style.visibility="hidden";el.style.marginTop="0px";el.style.position='absolute';el.style.top=Math.round((body.clientHeight-el.clientHeight)/2)+"px";el.style.left=Math.round((body.clientWidth-el.clientWidth)/2)+"px";
		}
		el.style.visibility="visible";
	}

}


cityResponseFormatter.comboServlet="/cityresponseformatter.jsp";

function cityResponseFormatter(dynamicCombo,addressList) {
    var renderBold=function(referenceString,string) {
        substringPosition=string.toLowerCase().indexOf(referenceString.toLowerCase());
        if(substringPosition==-1)
            return(string);
        else
            return(string.substr(0,substringPosition)+string.substr(substringPosition,referenceString.length).bold()+string.substr(substringPosition+referenceString.length));
    };
    
    var resultTable=document.createElement("TABLE");
    var tableElementsOrder=new Array("name","country");
    resultTable.style.borderCollapse="collapse";
    resultTable.style.borderWidth="0px";
    resultTable.style.width="100%";
    var currentRow;
    var currentCell;
    for(var i=0;i<addressList.length;i++) {
        currentRow=resultTable.insertRow(-1);
        eventManager.addEvent(currentRow,"click",dynamicCombo.clickTR);
        eventManager.addEvent(currentRow,"mouseover",dynamicCombo.mouseOverTR);
        eventManager.addEvent(currentRow,"mouseout",dynamicCombo.mouseOutTR);
        for(var j=0;(j<tableElementsOrder.length-1);j++) {
            currentCell=currentRow.insertCell(-1);
            if(j==0)
                text="<div>"+renderBold(dynamicCombo.inputElement.value,addressList[i].getElementsByTagName(tableElementsOrder[0])[0].childNodes[0].nodeValue)+
                    //" ("+renderBold(dynamicCombo.inputElement.value,addressList[i].getElementsByTagName("code")[0].childNodes[0].nodeValue)+")
                    "</div><div style=\"color: #1AA1E9; font-size: 10px; text-align: right; padding-right: 5px;line-height:2px; padding-bottom: 7px;\">"+addressList[i].getElementsByTagName(tableElementsOrder[1])[0].childNodes[0].nodeValue+"</div>";
            else {
                text=addressList[i].getElementsByTagName(tableElementsOrder[j])[0].childNodes[0].nodeValue;currentCell.noWrap=true;
            }
            currentCell.innerHTML=text;
        }
    }
    dynamicCombo.comboElement.appendChild(resultTable);
    dynamicCombo.comboElement.childNodes[0].rows[0].cells[0].style.width="100%";
}










airportResponseFormatter.comboServlet = "/airportresponseformatter.jsp";

function airportResponseFormatter(dynamicCombo, addressList)
{
  var renderBold = function(referenceString, string)
  {
    substringPosition = string.toLowerCase().indexOf(referenceString.toLowerCase());
	
    if(substringPosition==-1)
	  return(string);
    else
	  return(string.substr(0,substringPosition) + string.substr(substringPosition,referenceString.length).bold() + string.substr(substringPosition + referenceString.length));
  };
  
  var resultTable 			= document.createElement("TABLE");
  var tableElementsOrder 	= new Array($_NAME,$_COUNTRY,$_TYPE);
  var tableElementsPrepend 	= new Array("","","<IMG SRC=\"/images/icon.");
  var tableElementsAppend 	= new Array("","",".gif\" />");
 		
  resultTable.style.borderCollapse = "collapse";
  resultTable.style.borderWidth = "0px";
  resultTable.style.width = "100%";
 
  var currentRow;
  var currentCell;
 
  for(var i=0; i<addressList.length; i++)
  {
    currentRow = resultTable.insertRow(-1);
    eventManager.addEvent(currentRow, "click", dynamicCombo.clickTR);		  
    eventManager.addEvent(currentRow, "mouseover", dynamicCombo.mouseOverTR);
    eventManager.addEvent(currentRow, "mouseout", dynamicCombo.mouseOutTR);	  
   
    for(var j=0; j<tableElementsOrder.length; j++)
    {
 	  currentCell = currentRow.insertCell(-1);
 	
 	  if(j==0)
 	    text = renderBold(dynamicCombo.inputElement.value,addressList[i].getElementsByTagName(tableElementsOrder[0])[0].childNodes[0].nodeValue) + " (" + renderBold(dynamicCombo.inputElement.value,addressList[i].getElementsByTagName("code")[0].childNodes[0].nodeValue) + ")";
 	  else
 	  {
 	  	try {
 	    	text = addressList[i].getElementsByTagName(tableElementsOrder[j])[0].childNodes[0].nodeValue;
        }
        	catch(Error1) {
        }
 	    currentCell.noWrap = true;
 	  }
 	  
 	  currentCell.innerHTML = tableElementsPrepend[j] + text + tableElementsAppend[j];
    }
  }
  dynamicCombo.comboElement.appendChild(resultTable);
  dynamicCombo.comboElement.childNodes[0].rows[0].cells[0].style.width = "100%";
}









carResponseFormatter.comboServlet = "/carresponseformatter.jsp";

function carResponseFormatter(dynamicCombo,addressList) {
    var renderBold=function(referenceString,string) {
        substringPosition=string.toLowerCase().indexOf(referenceString.toLowerCase());
        if(substringPosition==-1)
            return(string);
        else
            return(string.substr(0,substringPosition)+string.substr(substringPosition,referenceString.length).bold()+string.substr(substringPosition+referenceString.length));
    };
    
    var resultTable=document.createElement("TABLE");
    var tableElementsOrder=new Array("name","country");
    resultTable.style.borderCollapse="collapse";
    resultTable.style.borderWidth="0px";
    resultTable.style.width="100%";
    var currentRow;
    var currentCell;
    for(var i=0;i<addressList.length;i++) {
        currentRow=resultTable.insertRow(-1);
        eventManager.addEvent(currentRow,"click",dynamicCombo.clickTR);
        eventManager.addEvent(currentRow,"mouseover",dynamicCombo.mouseOverTR);
        eventManager.addEvent(currentRow,"mouseout",dynamicCombo.mouseOutTR);
        for(var j=0;(j<tableElementsOrder.length-1);j++) {
            currentCell=currentRow.insertCell(-1);
            if(j==0)
                text="<div>"+renderBold(dynamicCombo.inputElement.value,addressList[i].getElementsByTagName(tableElementsOrder[0])[0].childNodes[0].nodeValue)+
                    //" ("+renderBold(dynamicCombo.inputElement.value,addressList[i].getElementsByTagName("code")[0].childNodes[0].nodeValue)+")
                    "</div><div style=\"color: #1AA1E9; font-size: 10px; text-align: right; padding-right: 5px;line-height:2px; padding-bottom: 7px;\">"
                    +addressList[i].getElementsByTagName(tableElementsOrder[1])[0].childNodes[0].nodeValue+"</div>";
            else {
                text=addressList[i].getElementsByTagName(tableElementsOrder[j])[0].childNodes[0].nodeValue;currentCell.noWrap=true;
            }
            currentCell.innerHTML=text;
        }
    }
    dynamicCombo.comboElement.appendChild(resultTable);
    dynamicCombo.comboElement.childNodes[0].rows[0].cells[0].style.width="100%";
}













var layoutManager={bDebugMode:true,getStyle:function(obj,property)
{
	var value=null;
	var dv=document.defaultView;
	if(obj.style[property])
value=obj.style[property];else if(obj.currentStyle&&obj.currentStyle[property])
value=obj.currentStyle[property];else if(dv&&dv.getComputedStyle)
{var converted='';for(i=0,len=property.length;i<len;++i)
{if(property.charAt(i)==property.charAt(i).toUpperCase())
converted=converted+'-'+property.charAt(i).toLowerCase();
else
converted=converted+property.charAt(i);}
if(dv.getComputedStyle(obj,'').getPropertyValue(converted))
value=dv.getComputedStyle(obj,'').getPropertyValue(converted);}
return(value);},getXY:function(obj)
{if(obj.parentNode===null||this.getStyle(obj,'display')=='none')
return false;var parent=null;var pos=[];var box;
if ($.browser.opera)
	  	{
	  		pos[0] = findPosX(obj);
			pos[1] = findPosY(obj);
			return (pos);
		}
if(obj.getBoundingClientRect)
{box=obj.getBoundingClientRect();var scrollTop=document.documentElement.scrollTop||document.body.scrollTop;var scrollLeft=document.documentElement.scrollLeft||document.body.scrollLeft;return[box.left+scrollLeft,box.top+scrollTop];}
else if(document.getBoxObjectFor)
{box=document.getBoxObjectFor(obj);pos=[box.x,box.y];}
else
{pos=[obj.offsetLeft,obj.offsetTop];parent=obj.offsetParent;if(parent!=obj)
{while(parent)
{pos[0]+=parent.offsetLeft;pos[1]+=parent.offsetTop;parent=parent.offsetParent;}}
var ua=navigator.userAgent.toLowerCase();if(ua.indexOf('opera')!=-1||(ua.indexOf('safari')!=-1&&this.getStyle(obj,'position')=='absolute'))
pos[1]-=document.body.offsetTop;}
if(obj.parentNode)
parent=obj.parentNode;else
parent=null;while(parent&&parent.tagName!='BODY'&&parent.tagName!='HTML')
{pos[0]-=parent.scrollLeft;pos[1]-=parent.scrollTop;if(parent.parentNode)
parent=parent.parentNode;else
parent=null;}
return(pos);},getTop:function(obj)
{return(parseInt(this.getXY(obj)[1]));},getLeft:function(obj)
{return(parseInt(this.getXY(obj)[0]));},getHeight:function(obj)
{return(parseInt(obj.clientHeight));},getWidth:function(obj)
{return(parseInt(obj.clientWidth));},getAvailableHeight:function()
{return($.browser.msie?Math.max(parseInt(document.body.clientHeight),parseInt(document.body.parentNode.clientHeight))+2:parseInt(window.innerHeight));},getScrollableHeight:function()
{return($.browser.msie?parseInt(document.body.scrollHeight):parseInt(document.height));},getAvailableWidth:function()
{return($.browser.msie?Math.max(parseInt(document.body.clientWidth),parseInt(document.body.parentNode.clientWidth))+2:parseInt(window.innerWidth));},getScrollableWidth:function()
{return($.browser.msie?parseInt(document.body.scrollWidth):parseInt(document.width));}}
function ajaxConnector()
{this.connect=function(sURL,sMethod,sVars,fnDone)
{if(null==xmlHTTP)
return(false);this.bComplete=false;this.bDownloading=true;sMethod=sMethod.toUpperCase();try
{if(sMethod=="GET")
{xmlHTTP.open(sMethod,sURL+"?"+sVars,true);this.sLastRequest=sURL+"?"+sVars;sVars="";}
else
{xmlHTTP.open(sMethod,sURL,true);xmlHTTP.setRequestHeader("Method","POST "+sURL+" HTTP/1.1");xmlHTTP.setRequestHeader("Content-Type","application/x-www-form-urlencoded");}
xmlHTTP.onreadystatechange=function()
{if(xmlHTTP.readyState==4&&!bComplete)
{this.bComplete=true;this.bDownloading=false;fnDone(xmlHTTP);}};xmlHTTP.send(sVars);}
catch(e)
{return(false);}
return(true);};var xmlHTTP=null;var bComplete=false;var bDownloading=false;var sLastRequest="";try
{xmlHTTP=new ActiveXObject("Msxml2.XMLHTTP");}
catch(e)
{try
{xmlHTTP=new ActiveXObject("Microsoft.XMLHTTP");}
catch(e)
{try
{xmlHTTP=new XMLHttpRequest();}
catch(e)
{xmlHTTP=null;}}}
if(null==xmlHTTP)
return(null);return(this);}


var sDynamicComboClass="dynamicCombo";var sDynamicComboLoadingClass="dynamicComboLoading";var sDynamicComboComboClass="dynamicComboCombo";var sDynamicComboComboLineSelectedClass="dynamicComboSelectedLine";var iDynamicComboWaitingTime=10;function dynamicCombo(sContainerId,fResponseFormatter)
{this.shouldLaunchAjax=function()
{if(me.m_hasTypedEnterKey)
return(false);if(me.inputElement.value.length<3)
return(false);if(me.m_beforeValue.substr(0,me.inputElement.value.length)!=me.inputElement.value.substr(0,me.inputElement.value.length))
return(true);if(me.inputElement.value==me.m_beforeValue)
return(false);return(true);};this.beforeLoad=function()
{if(me.shouldLaunchAjax())
{clearTimeout(me.m_typingTimeoutTimer);me.m_typingTimeoutTimer=setTimeout(me.typingTimeout,iDynamicComboWaitingTime);}
me.m_hasTypedEnterKey=false;me.m_beforeValue=me.inputElement.value;};this.typingTimeout=function()
{if(!me.tasking)
{me.tasking=true;}
else
{return false;}
me.inputElement.className=sDynamicComboLoadingClass;if(me.responseFormatter.comboServlet=="")
{me.afterLoad(null);return;}
me.ajaxConnector.connect(me.responseFormatter.comboServlet,"GET","search="+me.inputElement.value,me.afterLoad);};this.afterLoad=function(oXML)
{me.inputElement.className=sDynamicComboClass;if(me.comboElement!=null)
{document.body.removeChild(me.comboElement);me.comboElement=null;}
me.comboElement=document.createElement("DIV");me.comboElement.className=sDynamicComboComboClass;me.comboElement.style.position="absolute";eventManager.addEvent(me.comboElement,"mouseover",function(){me.m_isMouseOverCombo=true;});eventManager.addEvent(me.comboElement,"mouseout",function(){me.m_isMouseOverCombo=false;});try
{me.comboElement.style.top=layoutManager.getTop(me.inputElement)+layoutManager.getHeight(me.inputElement)+"px";me.comboElement.style.left=layoutManager.getLeft(me.inputElement)+"px";}
catch(e)
{errorManager.systemDie($_COULDNT_LOAD_COMBO_BOX + $_SORRY_FOR_THE_INCONVENIENCE);}
document.body.appendChild(me.comboElement);if(oXML==null)
{me.responseFormatter(me,null);return;}
if(oXML.responseXML==null||oXML.responseXML.documentElement==null)
errorManager.systemDie($_COULDNT_FETCH_ADDRESS_LIST+$_SORRY_FOR_THE_INCONVENIENCE);var xmlDocument=oXML.responseXML.documentElement;me.addressList=xmlDocument.getElementsByTagName("address");if(me.addressList.length==0&&xmlDocument.getElementsByTagName("error").length!=0)
errorManager.systemDie($_COULDNT_FETCH_ADDRESS_LIT+$_SORRY_FOR_THE_INCONVENIENCE);else if(xmlDocument.getElementsByTagName("message").length!=0)
{if(xmlDocument.getElementsByTagName("message")[0].childNodes[0]!=null)
{if(me.comboElement.childNodes.length>0)
me.comboElement.removeChild(me.comboElement.childNodes[0]);me.comboElement.appendChild(document.createElement("DIV"));me.comboElement.childNodes[0].innerHTML=xmlDocument.getElementsByTagName("message")[0].childNodes[0].nodeValue;}
else
{errorManager.systemDie($_COULDNT_FETCH_ERROR_FROM_XML_STREAM);document.body.removeChild(me.comboElement);me.comboElement=null;}}
else if(me.addressList.length>0)
{if(!me.inputFocused)
{me.inputElement.value=me.addressList[0].childNodes[0].childNodes[0].nodeValue;me.addressCode.value=me.addressList[0].childNodes[1].childNodes[0].nodeValue;me.updateConnectedCombos();return;}
if(me.responseFormatter==null)
errorManager.systemDie($_COULDNT_LOAD_COMBO_BOX + $_SORRY_FOR_THE_INCONVENIENCE);else
{me.responseFormatter(me,xmlDocument.getElementsByTagName("address"));me.selectedIndex=null;me.isOpen=true;}}
if(me.tasking)
{me.tasking=false;}
if(me.onOpen)
me.onOpen();};

this.updateConnectedCombos=function()
{for(var i=0;i<me.connectedCombos.length;i++)
{if(me.connectedCombos[i].inputElement&&((me.connectedCombos[i].inputElement.value==null)||(me.connectedCombos[i].inputElement.value=="")))
{me.connectedCombos[i].inputElement.value=me.inputElement.value;}
if(me.connectedCombos[i].addressCode&&((me.connectedCombos[i].addressCode.value==null)||(me.connectedCombos[i].addressCode.value=="")))
{me.connectedCombos[i].addressCode.value=me.addressCode.value;}}}

this.keyDown=function(e)
{if(me.isOpen&&me.addressList.length>0)
{if(e.keyCode==27)
{clearTimeout(me.m_typingTimeoutTimer);document.body.removeChild(me.comboElement);me.comboElement=null;me.isOpen=false;return;}
if(e.keyCode==13||e.keyCode==9)
{clearTimeout(me.m_typingTimeoutTimer);if(me.selectedIndex==null&&me.addressList.length>0)
me.selectedIndex=0;if(me.selectedIndex!=null)
{me.inputElement.value=me.addressList[me.selectedIndex].getElementsByTagName("name")[0].childNodes[0].nodeValue;me.addressCode.value=me.addressList[me.selectedIndex].getElementsByTagName("code")[0].childNodes[0].nodeValue;me.updateConnectedCombos();}
me.m_beforeValue=me.inputElement.value;me.selectedIndex=null;document.body.removeChild(me.comboElement);me.comboElement=null;me.isOpen=false;me.m_hasTypedEnterKey=true;me.inputElement.focus();if($.browser.msie)
{range=me.inputElement.createTextRange();range.collapse(false);range.select();}
if(e.keyCode==13)
{window.mask_enter_event=true;}}
if(e.keyCode==38)
{if(me.selectedIndex==null)
me.selectedIndex=me.addressList.length-1;else if(me.selectedIndex==0)
me.selectedIndex=me.addressList.length-1;else
me.selectedIndex--;for(var i=0;i<me.comboElement.childNodes[0].childNodes[0].childNodes.length;i++)
me.comboElement.childNodes[0].childNodes[0].childNodes[i].className="";me.comboElement.childNodes[0].childNodes[0].childNodes[me.selectedIndex].className=sDynamicComboComboLineSelectedClass;}
if(e.keyCode==40)
{if(me.selectedIndex==null)
me.selectedIndex=0;else if(me.selectedIndex==me.addressList.length-1)
me.selectedIndex=0;else
me.selectedIndex++;for(var i=0;i<me.comboElement.childNodes[0].childNodes[0].childNodes.length;i++)
me.comboElement.childNodes[0].childNodes[0].childNodes[i].className="";me.comboElement.childNodes[0].childNodes[0].childNodes[me.selectedIndex].className=sDynamicComboComboLineSelectedClass;}}};this.blurEverything=function()
{if(me.m_isMouseOverCombo==true)
return;me.inputFocused=false;if(!me.isOpen)
return;if(me.addressList!=null&&me.addressList.length>0&&(me.selectedIndex==null||me.addressList.length==1)&&!me.m_hasTypedEnterKey)
{clearTimeout(me.m_typingTimeoutTimer);me.inputElement.value=me.addressList[0].getElementsByTagName("name")[0].childNodes[0].nodeValue;me.addressCode.value=me.addressList[0].getElementsByTagName("code")[0].childNodes[0].nodeValue;me.updateConnectedCombos();me.m_beforeValue=me.inputElement.value;}
else if(me.addressList!=null&&me.addressList.length>0&&!me.m_hasTypedEnterKey)
{clearTimeout(me.m_typingTimeoutTimer);me.inputElement.value=me.addressList[me.selectedIndex].getElementsByTagName("name")[0].childNodes[0].nodeValue;me.addressCode.value=me.addressList[me.selectedIndex].getElementsByTagName("code")[0].childNodes[0].nodeValue;me.updateConnectedCombos();me.m_beforeValue=me.inputElement.value;}
if(me.comboElement!=null)
{document.body.removeChild(me.comboElement);me.comboElement=null;}
me.addressList=null;me.selectedIndex=null;me.isOpen=false;};this.clickTR=function()
{me.m_hasTypedEnterKey=true;clearTimeout(me.m_typingTimeoutTimer);me.inputElement.value=me.addressList[me.selectedIndex].getElementsByTagName("name")[0].childNodes[0].nodeValue;me.addressCode.value=me.addressList[me.selectedIndex].getElementsByTagName("code")[0].childNodes[0].nodeValue;me.updateConnectedCombos();me.m_beforeValue=me.inputElement.value;me.selectedIndex=null;document.body.removeChild(me.comboElement);me.comboElement=null;me.isOpen=false;me.inputElement.focus();if($.browser.msie)
{range=me.inputElement.createTextRange();range.collapse(false);range.select();}};this.mouseOverTR=function()
{for(var i=0;i<me.comboElement.childNodes[0].childNodes[0].childNodes.length;i++)
me.comboElement.childNodes[0].childNodes[0].childNodes[i].className="";this.className=sDynamicComboComboLineSelectedClass;me.selectedIndex=this.rowIndex;};this.mouseOutTR=function()
{me.selectedIndex=null;};this.connectCombo=function(combo)
{if(!me.connectedCombos)
{me.connectedCombos=new Array();}
var has_item=false;if(me.connectedCombos.indexOf)
{has_item=me.connectedCombos.indexOf(combo)!=-1}else{for(var k=0;k<me.connectedCombos.length;k++)
{if(me.connectedCombos[k]==combo)
{has_item=true;break;}}}
if(!has_item)
{me.connectedCombos.push(combo);}};var me=this;dynamicCombo.pComboList.push(this);this.inputElement=document.createElement("INPUT");document.getElementById(sContainerId).appendChild(this.inputElement);this.inputElement.autocomplete=false;this.inputElement.className=sDynamicComboClass;this.comboElement=null;eventManager.addEvent(this.inputElement,"keyup",this.beforeLoad);eventManager.addEvent(this.inputElement,"keydown",this.keyDown);eventManager.addEvent(this.inputElement,"blur",this.blurEverything);eventManager.addEvent(this.inputElement,"focus",function(){me.inputFocused=true;});this.ajaxConnector=new ajaxConnector();if(null==this.ajaxConnector)
{errorManager.systemDie($_NO_AJAX_SUPPORT);return(null);}
this.inputFocused=false;this.m_beforeValue=this.inputElement.value;this.m_isMouseOverCombo=false;this.m_hasTypedEnterKey=false;this.m_typingTimeoutTimer=null;this.selectedIndex=null;this.addressList=null;this.onOpen=null;this.addressCode=document.createElement("INPUT");this.addressCode.type="hidden";this.addressCode.id=(sContainerId + 'hidden');this.addressCode.name=sContainerId;document.getElementById(sContainerId).appendChild(this.addressCode);this.isOpen=false;this.responseFormatter=fResponseFormatter;this.connectedCombos=new Array();}
dynamicCombo.pComboList=new Array();dynamicCombo.closeAll=function()
{for(var i=0;i<dynamicCombo.pComboList.length;i++)
dynamicCombo.pComboList[i].blurEverything();}





var sCalendarClass="textBox";
var sCalendarCalendarClass="calendar";
var sCalendarSeparatorCharacter="-";
var pDays=new Array("Mo","Tu","We","Th","Fr","Sa","Su");
var pMonths=new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var bLimitSelection=true;

function calendar(sContainerId,sId) {	


this.rowCount=function(calendar){
	var max=0;
	for(var i=0;i<7;i++)
		if(calendar[i].length>max)
			max=calendar[i].length
	return(max-1);
};

this.dayCount=function(month,year){
	return(32-new Date(year,month,32).getDate());
};

this.connected_calendars=[];this.connectCalendar=function(calendar,offset){
	this.connected_calendars.push({calendar:calendar,offset:offset});
}

















// CHANGES THE LINKED CALENDAR
this.updateConnectedCalendars = function() {
      var i;
      for(i = 0; i < this.connected_calendars.length; i++) {
         var s = this.connected_calendars[i];
		 glog('updateConnectedCalendars: ' + this);
		 glog('updateConnectedCalendars: ' + s.calendar.inputElement.value);
		 
		 
         var r_date = this.daysLater(s.offset);
         var day = r_date.getDate();
         var month = r_date.getMonth() + 1;
         if(day < 10) {
            day = "0" + day;
         }
         if(month < 10) {
            month = "0" + month;
         }
         // DISPLAY LINKED CALENDAR VALUE.
		 glog('USDATEFORMAT: ' + me.usdateformat);
		 if (me.usdateformat == 0) {
		 	s.calendar.inputElement.value = day + sCalendarSeparatorCharacter + month + sCalendarSeparatorCharacter + r_date.getFullYear();
		 } else {
		 	s.calendar.inputElement.value = month + sCalendarSeparatorCharacter + day + sCalendarSeparatorCharacter + r_date.getFullYear();			 
		 }
		 
         s.calendar.calendarDate.setDate(r_date.getDate() + s.offset);
         s.calendar.calendarDate.setMonth(r_date.getMonth());
         s.calendar.calendarDay = r_date.getDate();
         s.calendar.calendarMonth = r_date.getMonth() + 1;
         s.calendar.calendarYear = r_date.getYear();
		 
		  glog('updateConnectedCalendars: (dd-mm-yyyy) ' + day + '-' + month + '-' + '  ::  ' + s.calendar.calendarDay + '-' + s.calendar.calendarMonth + '-' + s.calendar.calendarYear);
		 
         s.calendar.blurEverything();
      }
}

this.daysLater=function(days){
	days=Number(days);
	if(!(me.inputElement)){
		return false;
	}
	var value=me.inputElement.value;
	var fragments=value.split(sCalendarSeparatorCharacter);
	if(fragments.length<3){
		return false;
	}
	
	
	var day=0;
	var month=0;
	var year=0;
	if (me.usdateformat == 0) { 
		day=Number(fragments[0]);
		month=Number(fragments[1]);
		year=Number(fragments[2]);
	} else {
		day=Number(fragments[1]);
		month=Number(fragments[0]);
		year=Number(fragments[2]);		
	}
	var current=new Date(year,(month-1),day);
	current.setTime(current.getTime()+(days*86400000));
	return current;
}

this.populateCalendar=function(month,year){
	month--;
	var calendar=new Array(new Array(),new Array(),new Array(),new Array(),new Array(),new Array(),new Array());
	var lineCount=0;
	for(var i=1;i<=me.dayCount(month,year);i++){
		dDate=new Date(year,month,i);
		calendar[(dDate.getDay()+6)%7][lineCount]=i;
		if(((dDate.getDay()+7)%7)==0)
			lineCount++;
	}
	return(calendar);};
	
this.updateCalendar=function(){
	if(me.hideSelectBoxes  && me.SelectBoxId != '') { 
		$(me.SelectBoxId).css('visibility','hidden'); 
		$(me.SelectBoxId2).css('visibility','hidden'); 
		$(me.SelectBoxId3).css('visibility','hidden');
	}

	var dDate=new Date();
	var value=me.inputElement.value;
	// VALUE OD CALENDARS.
	
	glog('USDATEFORMAT: ' + me.usdateformat + " - " + value + " - " + me.calendarDay);
	if (me.usdateformat == 0) {
		me.calendarMonth=(value.split(sCalendarSeparatorCharacter).length>=2&&value.split(sCalendarSeparatorCharacter)[1]!=""&&parseInt(value.split(sCalendarSeparatorCharacter)[1],10)!=0)?parseInt(value.split(sCalendarSeparatorCharacter)[1],10):dDate.getMonth()+1;
		me.calendarYear=(value.split(sCalendarSeparatorCharacter).length==3&&value.split(sCalendarSeparatorCharacter)[2]!=""&&value.split(sCalendarSeparatorCharacter)[2].length==4&&parseInt(value.split(sCalendarSeparatorCharacter)[2],10)!=0)?parseInt(value.split(sCalendarSeparatorCharacter)[2],10):dDate.getFullYear();
	} else {
		me.calendarMonth=(value.split(sCalendarSeparatorCharacter).length>=2&&value.split(sCalendarSeparatorCharacter)[0]!=""&&parseInt(value.split(sCalendarSeparatorCharacter)[0],10)!=0)?parseInt(value.split(sCalendarSeparatorCharacter)[0],10):dDate.getMonth()+1;
		me.calendarYear=(value.split(sCalendarSeparatorCharacter).length==3&&value.split(sCalendarSeparatorCharacter)[2]!=""&&value.split(sCalendarSeparatorCharacter)[2].length==4&&parseInt(value.split(sCalendarSeparatorCharacter)[2],10)!=0)?parseInt(value.split(sCalendarSeparatorCharacter)[2],10):dDate.getFullYear();		
	}
	
	
	me.generateCalendar();
};

this.check=function(){
	var value=me.inputElement.value;
	var day=(value.split(sCalendarSeparatorCharacter).length>0)?value.split(sCalendarSeparatorCharacter)[0]:"";
	var month=(value.split(sCalendarSeparatorCharacter).length>1)?value.split(sCalendarSeparatorCharacter)[1]:""
	;var year=(value.split(sCalendarSeparatorCharacter).length>2)?value.split(sCalendarSeparatorCharacter)[2]:"";
	var length=value.split(sCalendarSeparatorCharacter).length;
	if(day.length>2) { 
		day=day.substr(0,2);month="";length=1;
	}
	if(month.length>2)
		month=month.substr(0,2);
	if(year.length>4)
		year=year.substr(0,4);
		
	var newvalue=(length>0)?day+(length>1?sCalendarSeparatorCharacter+month+(length>2?sCalendarSeparatorCharacter+year:""):""):"";
	
	if(me.inputElement.value!=newvalue)
		me.inputElement.value=newvalue;
};

this.generateCalendar=function(){
	var dDate=this.calendarDate;
	var calendar=me.populateCalendar(me.calendarMonth,me.calendarYear);
	var table=document.createElement("TABLE");
	var newRow=table.insertRow(-1);
	var leftButton=newRow.insertCell(-1);
	if((dDate.getMonth()<parseInt(me.calendarMonth)-1)||parseInt(dDate.getFullYear())<parseInt(me.calendarYear)||!bLimitSelection){
		var img=document.createElement("IMG");
		img.src="/left.gif";
		leftButton.appendChild(img);
		eventManager.addEvent(leftButton,"click",function(){
			me.calendarMonth--;
			if(me.calendarMonth==0){
				me.calendarMonth=12;
				me.calendarYear--;
			}
			me.generateCalendar();
		});
	} else
		leftButton.innerHTML="&nbsp;";
		
	var calendarTitle=newRow.insertCell(-1);
	calendarTitle.colSpan=5;
	calendarTitle.innerHTML=pMonths[me.calendarMonth-1]+"&nbsp;"+me.calendarYear;
	var rightButton=newRow.insertCell(-1);
	var img=document.createElement("IMG");
	img.src="/right.gif";
	rightButton.appendChild(img);
	eventManager.addEvent(rightButton,"click",function(){
		me.calendarMonth++;
		if(me.calendarMonth==13){
			me.calendarMonth=1;
			me.calendarYear++;
		}
		me.generateCalendar();
	});
		
	var newRow=table.insertRow(-1);
		
	for(var j=0;j<7;j++){
		var newCell=newRow.insertCell(-1);
		newCell.innerHTML=pDays[j];
	}
	for(var j=0;j<=me.rowCount(calendar);j++){
		var newRow=table.insertRow(-1);
		var d= this.calendarDate;
		for(var k=0;k<7;k++){
			if(calendar[k][j]) {
				if(((calendar[k][j])<me.calendarDay)&&(this.calendarDate.getMonth()==parseInt(me.calendarMonth)-1)&&(parseInt(this.calendarDate.getFullYear())==parseInt(me.calendarYear))) {
					var newCell=newRow.insertCell(-1);
					newCell.className="calendarDateOut";
					newCell.innerHTML=calendar[k][j];
				} else {
					var newCell=newRow.insertCell(-1);
					newCell.className="calendarCell";
					newCell.innerHTML=calendar[k][j];
					eventManager.addEvent(newCell,"click",me.setDate);
				}
			} else {
				var newCell=newRow.insertCell(-1);
				newCell.className="calendarDisabledCell";
				newCell.innerHTML="&nbsp;";
			}
		}
	}
	while(me.calendarElement.childNodes.length>0)
		me.calendarElement.removeChild(me.calendarElement.childNodes[0]);
			
	me.calendarElement.appendChild(table);
	me.showCalendar();
};

this.setDate=function(e) {
	if(me.hideSelectBoxes  && me.SelectBoxId != '') { 
		$(me.SelectBoxId).css('visibility','visible'); 
		$(me.SelectBoxId2).css('visibility','visible'); 
		$(me.SelectBoxId3).css('visibility','visible'); 
	} 
	var value=e.srcElement?e.srcElement.innerHTML:e.currentTarget.innerHTML;
	glog('setDate Value: ' + value);
	me.calendarDate.setDate(parseInt(value));
	// DISPLAYING VALUE HERE.
	glog('USDATEFORMAT: ' + me.usdateformat);
 	if (me.usdateformat == 0) {
		// ISO
		me.inputElement.value= (value.length>1?value:"0"+value)+sCalendarSeparatorCharacter+(me.calendarMonth>9?me.calendarMonth:"0"+me.calendarMonth)+sCalendarSeparatorCharacter+me.calendarYear;
	} else {
		// US
		me.inputElement.value= (me.calendarMonth>9?me.calendarMonth:"0"+me.calendarMonth)+sCalendarSeparatorCharacter+(value.length>1?value:"0"+value)+sCalendarSeparatorCharacter+me.calendarYear;
	}
	
	me.calendarElement.style.display="none";
	me.bShouldBlur=true;
	//me.updateConnectedCalendars();
	me.callback(me);
}


this.showCalendar=function() {
	me.calendarElement.style.left=parseInt(layoutManager.getLeft(me.inputElement))+"px";
	me.calendarElement.style.top=parseInt(layoutManager.getTop(me.inputElement))+parseInt(layoutManager.getHeight(me.inputElement))+"px";
	me.calendarElement.style.display="inline";
};

this.keyPress=function(evt) {
	eventObject=window.event?window.event:evt;
	keyCode=window.event?eventObject.keyCode:eventObject.which;
	if(keyCode==0)
		return;
	if(keyCode==8||keyCode==46)
		return;
	if(keyCode>=37&&keyCode<=40)
		return;
	if(keyCode==9)
		return;
	if(me.inputElement.value.length==2||me.inputElement.value.length==5)
		me.inputElement.value+=sCalendarSeparatorCharacter;
	if(keyCode>=48&&keyCode<=57)
		return;
	if(window.event)
		eventObject.keyCode=0;
	else
		eventObject.preventDefault();
	
	return;
};

this.blurEverything=function() {
	if(!me.bShouldBlur)
		return; 
	if(me.hideSelectBoxes && me.SelectBoxId != '') {
		$(me.SelectBoxId).css('visibility','visible'); 
		$(me.SelectBoxId2).css('visibility','visible'); 
		$(me.SelectBoxId3).css('visibility','visible'); 
	}
	me.calendarElement.style.display="none";
	//me.updateConnectedCalendars();
}

var me=this;
calendar.pComboList.push(this);
this.inputElement=document.createElement("INPUT");
this.inputElement.autocomplete=false;
this.inputElement.className=sCalendarClass;
this.inputElement.maxLength=10;
this.inputElement.id=sId;
this.inputElement.name=sId;
this.hideSelectBoxes = false;
this.SelectBoxId = '';
this.SelectBoxId2 = '';
this.SelectBoxId3 = '';

this.calendarDate = new Date();
this.calendarDay = this.calendarDate.getDate();
this.calendarMonth=this.calendarDate.getMonth();
this.calendarYear=this.calendarDate.getYear();
this.calendarElement=document.createElement("DIV");
this.calendarElement.className=sCalendarCalendarClass;
this.connectedCalendarsOffset = 0;
this.bShouldBlur=true;
this.usdateformat = 0;

this.callback=function () {}; 

eventManager.addEvent(this.calendarElement,"mouseover",function(){me.bShouldBlur=false;});
eventManager.addEvent(this.calendarElement,"mouseout",function(){me.bShouldBlur=true;});
document.getElementById(sContainerId).appendChild(this.inputElement);
document.body.appendChild(this.calendarElement);
eventManager.addEvent(this.inputElement,"keypress",this.keyPress);
eventManager.addEvent(this.inputElement,"keyup",this.check);
eventManager.addEvent(this.inputElement,"keyup",this.updateCalendar);
eventManager.addEvent(this.inputElement,"keyup",this.check);
eventManager.addEvent(this.inputElement,"focus",this.updateCalendar);
eventManager.addEvent(this.inputElement,"blur",this.blurEverything);}
calendar.pComboList=new Array();

calendar.closeAll=function(){
	for(var i=0;i<calendar.pComboList.length;i++)
		calendar.pComboList[i].blurEverything();
}


//-- GUN BASIC CODE

/*
	@Project:	GunBasic-JS
	@Website:	http://code.google.com/p/gunbasic-js/
	@Author: 	Gunesh Raj
	@Email: 	gunesh.raj@gmail.com
	@Version: 	0.2
	@License: 	GNU General Public License v2
	@Notes: 	The Author reserves the right to change the Licence.
				Please Send me bugs & Notices via http://code.google.com/p/gunbasic-js/
*/


function glog(item) {
	try {
		//window.console.log(item);
	} catch (error1) {
		//alert(error1);
	}	
}

function getNameValue(xname, xdata) {
	var xres = '';
	var start = '<!-- [SGUN:' + xname + '] -->';
	var end = '<!-- [EGUN:' + xname + '] -->';
	var a1 = xdata.indexOf(start) + start.length;
	var a2 = xdata.indexOf(end);
	if (a1 > 0 && a2 > 0) {
		xres = xdata.substring(a1, a2);
	}
	return xres;
}

function getMetaNameValue(xcode, xname, xdata) {
	var xres = '';
	try {
		var start = '<!-- [S' + xcode + ':' + xname + '] -->';
		var end = '<!-- [E' + xcode + ':' + xname + '] -->';
		var a1 = xdata.indexOf(start) + start.length;
		var a2 = xdata.indexOf(end);
		if (a1 > 0 && a2 > 0) {
			xres = xdata.substring(a1, a2);
		}
	} catch (error1) {
		//alert(error1);
	}
	return xres;
}

// Not exactly the GunBasic method, just added it for easier toggle access.
function toggleLayer( whichLayer ) {
  var elem, vis;
  if( document.getElementById ) 
    elem = document.getElementById( whichLayer );
  else if( document.all ) 
      elem = document.all[whichLayer];
  else if( document.layers ) 
    elem = document.layers[whichLayer];
  vis = elem.style;
  if(vis.display==''&&elem.offsetWidth!=undefined&&elem.offsetHeight!=undefined)
    vis.display = (elem.offsetWidth!=0&&elem.offsetHeight!=0)?'block':'none';
  vis.display = (vis.display==''||vis.display=='block')?'none':'block';
}

function autoajax(vdata) {
// get directory first.
// GUN - div
// VAR - Javasript variables - Ops, not done, VAL should suit better.
// VAL - Javascript evaluation

// <!-- [SGUN:] -->
// name|age|nric|
// <!-- [EGUN:] -->
//
// <!-- [SVAR:] -->
// name(1)|age(2)|nric(1)|
// <!-- [EVAR:] -->
//
// <!-- [SVAL:] -->
// name|age|nric|
// <!-- [EVAL:] -->
//

	var metadiv = getMetaNameValue('GUN', '', vdata);
	var metavar = getMetaNameValue('VAR', '', vdata);
	var metaval = getMetaNameValue('VAL', '', vdata);
	
// Parse to Array
	var arrdiv = metadiv.split("|");
	var arrvar = metavar.split("|");
	var arrval = metaval.split("|");

	var idiv = arrdiv.length;
	var ivar = arrvar.length;
	var ival = arrval.length;

// Div	
	for (i=0; i < idiv; i++) {
		var sx = trim(arrdiv[i]);
		//glog(sx);
		if (sx.length > 0) {
			var datax = '';
			try {
				datax = trim(getMetaNameValue('GUN', sx, vdata));
				//glog(datax);
				document.getElementById(sx).innerHTML = datax;
			} catch (err) {
			}	
		}	
	}	
	
// Val	
	for (i=0; i < ival; i++) {
		var sx = trim(arrval[i]);
		if (sx.length > 0) {
			var datax = '';
			try {	
				datax = trim(getMetaNameValue('VAL', sx, vdata));
				eval(datax);
			} catch (err) {
				glog("Error in Eval");	
			}	
		}	
	}		
// find div

// find 
}

function autoeval(objAJAX, path) {
	if (objAJAX == null) {
		objAJAX = new ajaxStriker();
		objAJAX.connectDiv(path,'GET','',autoevalresponse, null);	
 	} 	
}

function autoevalresponse(objAJAX) {
	var dx = (objAJAX.responseText);
	eval(dx);
}

function autoajaxcall (objAJAX, method, path, query) {
	if (objAJAX == null) {
		objAJAX = new ajaxStriker();
		objAJAX.connect(path,method,query,autoajaxcall);
		//glog("-1");
 	} else {
		var dx = (objAJAX.responseText);
		autoajax(dx);
		//glog("-2");
	}
}

function autoajaxcall (objAJAX, method, path, query, vfunctionOnStart, vfunctionOnComplete) {
	if (objAJAX == null) {
		if (vfunctionOnStart != null) {
			vfunctionOnStart();
		}
		objAJAX = new ajaxStriker();
		objAJAX.connect(path,method,query,autoajaxcall,vfunctionOnComplete);
		//glog("-1");
 	} else {
		var dx = (objAJAX.responseText);
		autoajax(dx);
		//glog("-2");
		//vfunctionOnComplete();
	}
}


function autoloadtodiv(objAJAX, path, todiv) {
	if (objAJAX == null) {
		objAJAX = new ajaxStriker();
		objAJAX.connectDiv(path,'GET','',loadtodivfromajax, todiv);	
 	} 	
}

function loadtodivfromajax(objAJAX, todiv) {
	var dx = (objAJAX.responseText);
	document.getElementById(todiv).innerHTML = dx;
}

function trim(stringToTrim) {
	var res = '';
	try {
		if (stringToTrim.length > 0) {
			res = stringToTrim.replace(/^\s+|\s+$/g,"");
		}
	} catch (err) {
	}		
	return res;
}

function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}

function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}


function ajaxStriker() {
  this.connect = function(sUrlAjax, sAjaxMethod, sUrlParams, vfunctionOnComplete, vfunctionClientOnComplete) {
    if(null==xmlHTTP) {
		return(false);
	}
	  
    this.isCompleted = false;
	this.isProcessing = true;
	
    sAjaxMethod = sAjaxMethod.toUpperCase();

    try {
      if (sAjaxMethod == "GET") {
        xmlHTTP.open(sAjaxMethod, sUrlAjax+"?"+sUrlParams, true);
		this.sPreviousCall = sUrlAjax+"?"+sUrlParams;
        sUrlParams = "";
      } else {
        xmlHTTP.open(sAjaxMethod, sUrlAjax, true);
        xmlHTTP.setRequestHeader("Method", "POST "+sUrlAjax+" HTTP/1.1");
        xmlHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      }
	  
      xmlHTTP.onreadystatechange = function() {
        if (xmlHTTP.readyState == 4 && !isCompleted) {
          this.isCompleted = true;
		  this.isProcessing = false;
          vfunctionOnComplete(xmlHTTP);
		  if (vfunctionClientOnComplete != null) {
		  	vfunctionClientOnComplete();
		  }
        }
	  };
	  
      xmlHTTP.send(sUrlParams);
    } catch(e) {
	  return(false);
	}
    return(true);
  };



	this.connectDiv = function(sUrlAjax, sAjaxMethod, sUrlParams, vfunctionOnComplete, sDivRecieving) {
    if(null==xmlHTTP) {
		return(false);
	}
	  
    this.isCompleted = false;
	this.isProcessing = true;
	
    sAjaxMethod = sAjaxMethod.toUpperCase();

    try {
      if (sAjaxMethod == "GET") {
        xmlHTTP.open(sAjaxMethod, sUrlAjax+"?"+sUrlParams, true);
		this.sPreviousCall = sUrlAjax+"?"+sUrlParams;
        sUrlParams = "";
      } else {
        xmlHTTP.open(sAjaxMethod, sUrlAjax, true);
        xmlHTTP.setRequestHeader("Method", "POST "+sUrlAjax+" HTTP/1.1");
        xmlHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      }
	  
      xmlHTTP.onreadystatechange = function() {
        if (xmlHTTP.readyState == 4 && !isCompleted) {
          this.isCompleted = true;
		  this.isProcessing = false;
          vfunctionOnComplete(xmlHTTP, sDivRecieving);
        }
	  };
	  
      xmlHTTP.send(sUrlParams);
    } catch(e) {
	  return(false);
	}
	
    return(true);		
		
	};


  var xmlHTTP = null;
  var isCompleted = false;
  var isProcessing = false;
  var sPreviousCall = "";
  
  try { 
  	xmlHTTP = new ActiveXObject("Msxml2.XMLHTTP"); 
  } catch (e) { 
    try { 
	  xmlHTTP = new ActiveXObject("Microsoft.XMLHTTP"); 
	} catch (e) { 
	  try { 
	    xmlHTTP = new XMLHttpRequest(); 
	  } catch (e) { 
	    xmlHTTP = null; 
	  }
	}
  }
  
  if(null==xmlHTTP) {
    return(null);
  }
  return(this);
}






