//==============================================================================
//  Global Variables
//==============================================================================

var g_dtmCurrentDate = null;
var g_strCalendarID;
var g_strLastDateClicked = null
var g_arrMonths = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
var g_objCal;
var g_cursorToUse;

//"You may copy, tweak, rewrite, sell or lease any code example on this site, with one single exception.
//	You may translate any page you like to any language you like, provided
//	the translation will be available online free of charge 
//	you prominently display a link to the original at the top of your translation 
//	you send me the URL when the translation is ready. I will link to your translation from my original page"
//	http://www.quirksmode.org/about/copyright.html

var g_browserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{	// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 	// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};

function getCursor ()
{
	var cursor = "pointer";
	try
	{
		var version = parseFloat (g_browserDetect.version);		
		if (g_browserDetect.browser == "Explorer" && version < 5.5 )
			cursor = "hand";
	}
	catch (e)
	{
	}

	return cursor;
}

function initializeCalendar()
{
	g_browserDetect.init();

	g_cursorToUse = getCursor ();

	if (g_objCal.selectedDate != null)
		g_dtmCurrentDate = new Date(g_objCal.selectedDate);
	else if(g_objCal.initialDate != "" && g_objCal.initialDate != null)
        g_dtmCurrentDate = new Date(g_objCal.initialDate);
	else
		g_dtmCurrentDate = new Date();
}

function disableNav(strNav)
{
    var objImg = document.getElementById (strNav + g_strCalendarID);
	objImg.style.filter = "alpha(opacity=50)";
    objImg.valid = "false"
}

function enableNav(strNav)
{
    var objImg = document.getElementById (strNav + g_strCalendarID);
    objImg.style.filter = "";
    objImg.valid = "true"
}

function toggleCalendar(strCalendarID, strFieldID, objImg, dtmFuture, dtmPast, dtmInitial)
{
    g_strCalendarID = strCalendarID;
    g_objCal = document.getElementById("XTFormDateCalendar_" + g_strCalendarID);

	var objField = document.getElementById(strFieldID);

	if(g_objCal.fieldID == null)
	{
		g_objCal.fieldID = strFieldID;
		g_objCal.futureBound = dtmFuture;
		g_objCal.pastBound = dtmPast;
		g_objCal.initialDate = dtmInitial;
		g_objCal.selectedDate = null;
	}

	if(objField.value != "")
	{
		var dtmDate =  new Date(objField.value);
		
		if(!isNaN(dtmDate))
			g_objCal.selectedDate = dtmDate;
		else
			g_objCal.selectedDate = null;
	}
	else
		g_objCal.selectedDate = null;

	initializeCalendar();
	
	var objImgTemp = objImg;
	
	if(objImg.tagName.toLowerCase() != "img" && objImg.tagName.toLowerCase() != "input")
		objImgTemp = objImg.firstChild;
	
	if(g_objCal.style.display == "none")
	{
		revealCalendar(strCalendarID, objImgTemp);
	}
	else
	{
		hideCalendar(strCalendarID);
	}
}

function revealCalendar(strSpanID, objImg)
{	
    g_strCalendarID = strSpanID;

    if(g_strLastDateClicked != null && g_strLastDateClicked != strSpanID)
        hideCalendar(strSpanID);

	g_objCal.style.left = getLeftCoordinate(objImg);
	g_objCal.style.top = getTopCoordinate(objImg) + objImg.clientHeight + 10;
	g_objCal.style.visibility = "visible";
    g_objCal.style.display = "";
	
	var beginningHtml = "<html><head><title></title></head><body onLoad='initializeCalendar()'>" +
			"<link href= '" + g_strSkinResourceDirectory + "/styles/skin.css' type='text/css' rel='stylesheet' />" + 
			"<script type='text/javascript' language='JavaScript' src='/global/components/Desktop/form/form_controls/resources/date_calendar_subform.js'></script>";
	var endHtml ="</body></html>";
	
	var calHTML = document.getElementById("XTFormDateCalendarHTML_" + g_strCalendarID);	
	var iFrame = window.frames["XTFormDateCalendarIFRAME_" + g_strCalendarID];
	
	iFrame.document.open();
	iFrame.document.write(beginningHtml + calHTML.innerHTML + endHtml);
	iFrame.document.close();

    g_strLastDateClicked = strSpanID;
}

function hideCalendar(strSpanID)
{    
    document.getElementById("XTFormDateCalendar_" + strSpanID).style.visibility = "hidden";
	document.getElementById("XTFormDateCalendar_" + strSpanID).style.display = "none";
    g_strLastDateClicked = null;
}