// JavaScript Document
var xhr = false;
var calDiv;

function validDate(a) {
	var RegExPattern = /^(?=\d)(?:(?:(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})|(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))|(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2}))($|\ (?=\d)))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\ [AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/;
    if ((a.match(RegExPattern)) && (a!='')) {return true;} 
	else {return false;} 
}

function getCalendar(a,b,c,d) {
	calDiv = c;
	var prevWin = document.getElementById(calDiv);
	var dtToday = new Date();
	prevWin.innerHTML = '<img src="includes/images/ajax/loader1.gif" alt="Loading...">';
	
	if(d=='undefined'){var target = '';}
	else{var target = d;}
	
	var url = 'async/calendar.cfm?cmo='+a+'&dir='+b+'&calDiv='+c+'&target_date='+target+'&uti='+dtToday.getHours() + dtToday.getMinutes() + dtToday.getMilliseconds();
	
	try{xhr=new XMLHttpRequest();}	// Firefox, Opera 8.0+, Safari  
	catch (e){	// Internet Explorer
		try{xhr=new ActiveXObject("Msxml2.XMLHTTP");}
		catch (e){	// IE 7 on Vista
			try{xhr=new ActiveXObject("Microsoft.XMLHTTP");}
			catch (e){        
				alert("Asynchronis Data Transfer unavailable, please use Internet Explorer!");        
				return false;
			}
		}
	}

	if (xhr) {
		xhr.onreadystatechange = showContents;
		xhr.open("GET", url, true);
		xhr.send(null);
	}
	else {
		alert("Asynchronous Data Error!");
	}
}

function showContents() {
	var prevWin = document.getElementById(calDiv);
//	prevWin.className = 'czResultsFrame';
	
	if (xhr.readyState == 4) {
		if (xhr.status == 200){
			prevWin.innerHTML = xhr.responseText;
		}
		else{
			prevWin.innerHTML = 'Error: ' + xhr.status + ': ' + showStatus(xhr.status);
		}
	}
	else{
		if (xhr.readyState == 'undefined') {
			if (xhr.status == 200){
				prevWin.innerHTML = xhr.responseText;
			}
			else{
				prevWin.innerHTML = 'Error: ' + xhr.status + ': ' + showStatus(xhr.status);
			}
		}
	}
}

function placeDate(a,b){
	var locDate = document.getElementById(a);
	var calDiv = document.getElementById('pop_calendar');
	locDate.value = b;
	calDiv.style.display = 'none';
	if(a!=='end_date') valEndDate(b);  // Called from search.js
}

function mouseX(evt) {
	if (evt.pageX){return evt.pageX;}
	else if (evt.clientX){
	   return evt.clientX + (document.documentElement.scrollLeft ?
	   document.documentElement.scrollLeft :
	   document.body.scrollLeft);
	}
	else {return null;}
}

function mouseY(evt) {
	if (evt.pageY) return evt.pageY;
	else if (evt.clientY)
	   return evt.clientY + (document.documentElement.scrollTop ?
	   document.documentElement.scrollTop :
	   document.body.scrollTop);
	else return null;
}

function openDate(a,evt){
	var xPos = mouseX(evt) - 200;
	var yPos = mouseY(evt) + 5;
	var calDiv = document.getElementById('pop_calendar');

	var currDate = document.getElementById(a).value;
	if(validDate(currDate)){var startDate = currDate;}
	else{var startDate = new Date();}

	calDiv.style.top = yPos+'px';
	calDiv.style.left = xPos+'px';
	getCalendar(startDate,'','pop_calendar',a);
	calDiv.style.display = 'block';
}

