var calendarPopupActiveMonthYear = "";
var calendarPopupPHPSource = "/php/libs/calendarPopup.php";
var calendarPopupCurrentMonthLock = "";
var calendarPopupYearControl = "";
var calendarPopupOutputFormat = "";
var calendarPopupReturnID = "";
var mouseLocation = new Point(-500,-500);
var calendarPopupVisible = false;
var calendarPopupLocation = new Point(-500,-500);
var calendarPopupWidth = 0;
var calendarPopupHeight = 0;
var clickedLocation = new Point(-500,-500);
var calendarXMLHttp;

function Point(x,y) 
{
	this.x = x; this.y = y;
}

//NS init:
//if(document.layers){ document.captureEvents(Event.MOUSEMOVE); document.onMouseMove = getMouseLocation; } 

if(document.onmousemove)
{
	var mousemovetemp = document.onmousemove;
	document.onmousemove = function(e) {mousemovetemp(e); getMouseLocation(e);};
}
else
	document.onmousemove = getMouseLocation;

function getMouseLocation(e)
{
  if(!document.all)  //NS
  {
    mouseLocation.x = e.pageX;
    mouseLocation.y = e.pageY;
  }
  else               //IE
  {
    mouseLocation.x = event.x + document.documentElement.scrollLeft;
    mouseLocation.y = event.y + document.documentElement.scrollTop;
  }
  return true;
}

/*function getStyle(oElm, strCssRule)
{
	var strValue = "";
	if(document.defaultView && document.defaultView.getComputedStyle){
		strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
	}
	else if(oElm.currentStyle)
	{
		try
		{
			strCssRule = strCssRule.replace(/-(w)/g, function (strMatch, p1){
				return p1.toUpperCase();
			});
			strValue = oElm.currentStyle[strCssRule];
		}
		catch(e)
		{
			alert("The calendar utility is not supported in this browser.");
		}		
	}
	return strValue;
}*/

document.onmousedown = checkClickLocation;

function checkClickLocation(e)
{
	if(calendarPopupVisible)
	{
		if(mouseLocation.x < calendarPopupLocation.x || mouseLocation.x > calendarPopupLocation.x + calendarPopupWidth + 3 || mouseLocation.y < calendarPopupLocation.y || mouseLocation.y > calendarPopupLocation.y + calendarPopupHeight + 3)
			calendarPopupHide();
	}
}

function createXMLDoc(xmlData)
{
	// code for IE
	if (window.ActiveXObject)
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.loadXML(xmlData);
	}
	// code for Mozilla, etc.
	else if (document.implementation && document.implementation.createDocument)
	{
		parser = new DOMParser();
 		xmlDoc = parser.parseFromString(xmlData,"text/xml");		
	}
	else
	{
		alert('Your browser cannot handle this script');
	}
	
	return xmlDoc;
}

function calendarPopupShow(returnID, outputFormat, yearControl, currentMonthLock, phpSrc)
{
	var theCurrentMonthLock = currentMonthLock || 0;
	var thePhpSrc = phpSrc || "";
	
	if(thePhpSrc != "") calendarPopupPHPSource = thePhpSrc;
	
	if (window.ActiveXObject)
	{
		calendarXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else if (window.XMLHttpRequest)
	{
		calendarXMLHTTP = new XMLHttpRequest();
	}
	
	
	clickedLocation.x = mouseLocation.x;
	clickedLocation.y = mouseLocation.y;
	calendarPopupVisible = true;
	POSTData = "YearControl="+yearControl+"&CurrentMonthLock="+theCurrentMonthLock+"&OutputFormat="+outputFormat+"&ReturnID="+returnID;
	calendarXMLHTTP.onreadystatechange = calendarPopupProcess;
	calendarXMLHTTP.open("POST",calendarPopupPHPSource,true);
	calendarXMLHTTP.setRequestHeader("Method", "POST " + self.location + " HTTP/1.1");
	calendarXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	calendarXMLHTTP.send(POSTData);
}

function calendarPopupChangeMonth(activeMonthYear)
{
	if (window.ActiveXObject)
	{
		calendarXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else if (window.XMLHttpRequest)
	{
		calendarXMLHTTP = new XMLHttpRequest();
	}
	POSTData = "ActiveMonthYear="+activeMonthYear+"&YearControl="+calendarPopupYearControl+"&CurrentMonthLock="+calendarPopupCurrentMonthLock+"&OutputFormat="+calendarPopupOutputFormat+"&ReturnID="+calendarPopupReturnID;
	calendarXMLHTTP.onreadystatechange = calendarPopupProcess;
	calendarXMLHTTP.open("POST",calendarPopupPHPSource,true);
	calendarXMLHTTP.setRequestHeader("Method", "POST " + self.location + " HTTP/1.1");
	calendarXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	calendarXMLHTTP.send(POSTData);
}

function calendarPopupProcess()
{
	if (calendarXMLHTTP.readyState == 4)
	{
		if (calendarXMLHTTP.status == 200)
		{
			//alert(calendarXMLHTTP.responseText);
			calendarPopupXMLDoc = createXMLDoc(calendarXMLHTTP.responseText);
			if(document.all) var innerHTML = calendarPopupXMLDoc.getElementsByTagName("CalendarHTML")[0].text;
			else var innerHTML = calendarPopupXMLDoc.getElementsByTagName("CalendarHTML")[0].textContent;
			document.getElementById('CalendarPopupSpan').innerHTML = innerHTML;
			//if(document.all)
			//{
				calendarPopupWidth = document.getElementById("CalendarPopupSpan").offsetWidth;
				calendarPopupHeight = document.getElementById("CalendarPopupSpan").offsetHeight;
			//}
			/*else
			{
				var calendarWidth = getStyle(document.getElementById("CalendarPopupSpan"), "width");
				var calendarHeight = getStyle(document.getElementById("CalendarPopupSpan"), "height");
				calendarPopupWidth = parseInt(calendarWidth.substr(0,calendarWidth.length-2),10);
				calendarPopupHeight = parseInt(calendarHeight.substr(0,calendarHeight.length-2),10);
			}*/
			if(document.getElementById('CalendarPopupSpan').style.visibility == 'hidden')
			{
				document.getElementById('CalendarPopupSpan').style.visibility = 'visible';
				document.getElementById('CalendarPopupSpan').style.left = (clickedLocation.x-calendarPopupWidth/2)+"px";
				document.getElementById('CalendarPopupSpan').style.top = (clickedLocation.y-15)+"px";
				calendarPopupLocation.x = clickedLocation.x-calendarPopupWidth/2;
				calendarPopupLocation.y = clickedLocation.y-15;
			}
			if(document.all) calendarPopupActiveMonthYear = calendarPopupXMLDoc.getElementsByTagName("ActiveMonthYear")[0].text;
			else calendarPopupActiveMonthYear = calendarPopupXMLDoc.getElementsByTagName("ActiveMonthYear")[0].textContent;
			if(document.all) calendarPopupCurrentMonthLock = calendarPopupXMLDoc.getElementsByTagName("CurrentMonthLock")[0].text;
			else calendarPopupCurrentMonthLock = calendarPopupXMLDoc.getElementsByTagName("CurrentMonthLock")[0].textContent;
			if(document.all) calendarPopupYearControl = calendarPopupXMLDoc.getElementsByTagName("YearControl")[0].text;
			else calendarPopupYearControl = calendarPopupXMLDoc.getElementsByTagName("YearControl")[0].textContent;
			if(document.all) calendarPopupOutputFormat = calendarPopupXMLDoc.getElementsByTagName("OutputFormat")[0].text;
			else calendarPopupOutputFormat = calendarPopupXMLDoc.getElementsByTagName("OutputFormat")[0].textContent;
			if(document.all) calendarPopupReturnID = calendarPopupXMLDoc.getElementsByTagName("ReturnID")[0].text;
			else calendarPopupReturnID = calendarPopupXMLDoc.getElementsByTagName("ReturnID")[0].textContent;
		}
		else if (calendarXMLHTTP.status == 404)
		{
			alert("404 : Page Not Found");
		}
		else
		{
			alert("Unknown Error: "+calendarXMLHTTP.status);	
		}
	}	
}

function calendarPopupHide()
{
	document.getElementById('CalendarPopupSpan').style.visibility = 'hidden';	
	calendarPopupVisible = false;
}

function calendarPopupReturnDate(dateValue)
{
	if(calendarPopupOutputFormat == '-')
		document.getElementById(calendarPopupReturnID).value = dateValue;
	else if(calendarPopupOutputFormat == '/')
		document.getElementById(calendarPopupReturnID).value = dateValue.substr(5,2)+'/'+dateValue.substr(8,2)+'/'+dateValue.substr(0,4);
	else if(calendarPopupOutputFormat == 'date_only')
	{
		var tempVal = dateValue.substr(8,2);
		if(tempVal.substr(0,1) == 0) tempVal = tempVal.substr(1);
		document.getElementById(calendarPopupReturnID).value = tempVal;
	}
	calendarPopupHide();
}