var curSelectTd ;
var selectTdHold ;

function initTargetDate() {
	if(document.selectorForm.timeSeperator) {
		var tSep = document.selectorForm.timeSeperator.value ;
	}
	if(document.selectorForm.serverdateseperator) {
		var dSep = document.selectorForm.serverdateseperator.value ;
	}
	var tDt = targetdate ;

	if(tDt.indexOf(' ',0) > 0) {
		// We have a time, so remove it.
		tDt = tDt.substring(0,tDt.indexOf(' ',0)) ;
	}

	var regEx = new RegExp(dSep, "gi");
	tDt = tDt.replace(regEx,'_') ;

	curSelectTd = eval('document.getElementById(\'td_' + tDt + '\')') ;
	if(curSelectTd) {
		selectTdHold = curSelectTd.className ;
		curSelectTd.className = 'mup_selectedDate' ;
		if ("function" == typeof curSelectTd.onclick)
		{
			curSelectTd.onclick();
		}
	}

	document.selectorForm.newDateTime.value = targetdate ;
	var curSelectDiv = eval('document.getElementById(\'div_' + tDt + '\')') ;

	if(curSelectDiv) {
		document.selectorForm.newDisplayDateTime.value = curSelectDiv.innerHTML ;
	}
	// now set the time, if we need to. Use the TimeSeperator as the litmus
	if(document.selectorForm.timeSeperator) {
		tDt = targetdate ;
		if(tDt.indexOf(tSep,0)>0) {

			if(tDt.indexOf(dSep)>0) {
				tDt = tDt.substring(tDt.indexOf(' ',0), tDt.length) ;
			}

			var nextIndex = tDt.indexOf(tSep,0) ;
			var hr = parseInt(tDt.substring(0,nextIndex), 10) ;
			var curIndex = nextIndex + 1;
			nextIndex = tDt.indexOf(tSep,curIndex) ;

			if(nextIndex<0) {
				nextIndex = tDt.indexOf(' ',curIndex+1) ;
				if(nextIndex<0) {
					nextIndex = tDt.length ;
				}
			}
			var min = parseInt(tDt.substring(curIndex,nextIndex), 10) ;
			var merid = tDt.substring(tDt.lastIndexOf(' ')+1,tDt.length) ;

			if(merid.indexOf(tSep)<0) {
				// We have a Meridian on the server...
				if(document.selectorForm.amdesignator.value!='') {
					// No need to convert to 24Hr. set hour, minute, meridian
					document.selectorForm.hrSelect.value = hr ;
					if(merid.replace(/ /gi,'')==document.selectorForm.serveramdesignator.value.replace(/ /gi,'')) {
						document.selectorForm.meridSelect.value = "a"
						document.selectorForm.newDisplayDateTime.value += ' ' + hr + tSep + min + ' ' + document.selectorForm.amdesignator.value ;
					} else {
						document.selectorForm.meridSelect.value = "p"
						document.selectorForm.newDisplayDateTime.value += ' ' + hr + tSep + min + ' ' + document.selectorForm.pmdesignator.value ;
					}
				} else {
					// Convert 12hr. to 24Hr. and set Hour and Minute
					if(merid.replace(/ /gi,'')==document.selectorForm.serveramdesignator.value.replace(/ /gi,'')) {
						// in the anti-meridian, set the hour
						document.selectorForm.hrSelect.value = hr ;
						document.selectorForm.newDisplayDateTime.value += ' ' + hr + tSep + min ;
					} else {
						// in the post-meridian, set the hour, unless it's 12
						if(hr!=12) {
							document.selectorForm.hrSelect.value = hr + 12 ;
							document.selectorForm.newDisplayDateTime.value += ' ' + (hr + 12) + tSep + min ;
						} else {
							document.selectorForm.hrSelect.value = 12 ;
							document.selectorForm.newDisplayDateTime.value += ' 12' + tSep + min ;
						}
					}
				}
				document.selectorForm.miSelect.value = min ;
			} else {
				// We do not have a Meridian on the Server... 			
				// Check if have a meridian on the display
				var mer ;
				if(document.selectorForm.meridSelect) {
					// Meridian on Display, convert 24 Hr. to 12 Hr. and set
					if(hr>11) {
						if(hr==12) {
							document.selectorForm.meridSelect.value='a' ;
							mer = document.selectorForm.serveramdesignator.value ;
						} else {
							hr -= 12 ;
							document.selectorForm.meridSelect.value='p' ;
							mer = document.selectorForm.serverpmdesignator.value ;
						}
					} else {
						document.selectorForm.meridSelect.value='a' ;
						mer = document.selectorForm.serveramdesignator.value ;
						if(hr==0) {
							hr = 12 ;
						}
					}

					document.selectorForm.hrSelect.value = hr ;
					document.selectorForm.miSelect.value = min ;
					min = min.toString() ;
					hr = hr.toString() ;
					if(min.length<2) {
						min = '0' + min ;
					}
					if(hr.length<2) {
						hr = '0' + min ;
					}
					document.selectorForm.newDisplayDateTime.value += ' ' + hr + tSep + min + ' ' + mer ;
				} else {
					// No meridian on display, no problem, set hours and minutes
					document.selectorForm.hrSelect.value = hr ;
					document.selectorForm.miSelect.value = min ;
					document.selectorForm.newDisplayDateTime.value += ' ' + hr + tSep + min ;
				}
			}
			if (document.selectorForm.hrSelect && "function" == typeof document.selectorForm.hrSelect.onchange)
			{
				document.selectorForm.hrSelect.onchange();
			}
		}
	}

}

function setSelectedDate(inServerDate) {
	if(document.selectorForm.timeSeperator) {
		var tSep = document.selectorForm.timeSeperator.value ;
	}

	var tDt = inServerDate ;

	if(tDt.indexOf(' ',0) > 0) {
		// We have a time, so remove it.
		tDt = tDt.substring(0,tDt.indexOf(' ',0)) ;
	}

	var regEx = new RegExp(document.selectorForm.serverdateseperator.value, "gi");
	tDt = tDt.replace(regEx,'_') ;

	if(selectTdHold) {
		curSelectTd.className = selectTdHold ;
	}
	
	curSelectTd = eval('document.getElementById(\'td_' + tDt + '\')') ;
	if (curSelectTd != null)
	{
		selectTdHold = curSelectTd.className ;
		curSelectTd.className = 'mup_selectedDate' ;
	}
}

function updateParentDate(serverDate, displayDate, n_dow, n_dom, n_monum, n_yrnum) {

	if((n_dow)&&(n_dom)&&(n_monum)&&(n_yrnum)) {
		document.selectorForm.new_dow.value = n_dow ;
		document.selectorForm.new_dom.value = n_dom ;
		document.selectorForm.new_monum.value = n_monum ;
		document.selectorForm.new_yrnum.value = n_yrnum ;
	}

	document.selectorForm.newDateTime.value = serverDate ;
	document.selectorForm.newDisplayDateTime.value = displayDate ;
	setSelectedDate(serverDate) ;
}

function updateParentDateWithTime(serverDate, displayDate, n_dow, n_dom, n_monum, n_yrnum) {
	var f = document.selectorForm ;
	var fE = f.newDateTime ;

	if((n_dow)&&(n_dom)&&(n_monum)&&(n_yrnum)) {
		document.selectorForm.new_dow.value = n_dow ;
		document.selectorForm.new_dom.value = n_dom ;
		document.selectorForm.new_monum.value = n_monum ;
		document.selectorForm.new_yrnum.value = n_yrnum ;
	}

	if(serverDate!=0) {
		fE.value = serverDate ;
	} else {
		//var x = fE.value.indexOf(' ',0) ;
		serverDate = fE.value.substring(0,fE.value.indexOf(' ',0)) ;
		fE.value = serverDate ;
	}
	// Now add the time in
	if(f.hrSelect) {
		var hrSelect = f.hrSelect.value ;
		var miSelect = f.miSelect.value ;

		if(f.meridSelect) {
			if(f.meridSelect.value=='p') {
				if(hrSelect!='12') {
					hrSelect = parseInt(hrSelect, 10) ;
					hrSelect += 12 ;
					hrSelect = hrSelect.toString();
				}
			}

			if((f.meridSelect.value=='a')&&(hrSelect=='12')) {
				hrSelect = '0' ;
			}
		}

		if(hrSelect.length<2) {
			hrSelect = '0' + hrSelect;
		}
		if(miSelect.length<2) {
			miSelect = '0' + miSelect;
		}

		fE.value += ' ' + hrSelect + f.timeSeperator.value + miSelect ;

		var regEx = new RegExp(document.selectorForm.serverdateseperator.value, "gi");
		var tDate = serverDate.replace(regEx,'_');
		if (eval('document.selectorForm.z' + tDate))
		{
			eval('f.newDisplayDateTime.value = document.selectorForm.z' + tDate + '.value ;') ;
		}

		hrSelect = f.hrSelect.value ;
		if(hrSelect.length<2) {
			hrSelect = '0' + hrSelect;
		}
		
		f.newDisplayDateTime.value += ' ' + hrSelect + f.localTimeSeperator.value + miSelect ;

		if(f.meridSelect) {
			f.newDisplayDateTime.value += ' ' + f.meridSelect[f.meridSelect.selectedIndex].innerHTML ;
		}
	}
	setSelectedDate(fE.value) ;
}
function getHour()
{
	var f = document.selectorForm ;
	var fE = f.newDateTime ;
	var hrSelect = f.hrSelect.value ;
	if(f.meridSelect) {
		if(f.meridSelect.value=='p') {
			if(hrSelect!='12') {
				hrSelect = parseInt(hrSelect, 10) ;
				hrSelect += 12 ;
				hrSelect = hrSelect.toString();
			}
		}

		if((f.meridSelect.value=='a')&&(hrSelect=='12')) {
			hrSelect = '0' ;
		}
	}

	if(hrSelect.length<2) {
		hrSelect = '0' + hrSelect;
	}
	return hrSelect;
		
}
function getMin()
{
	var f = document.selectorForm ;
	var miSelect = f.miSelect.value ;
	if(miSelect.length<2) {
		miSelect = '0' + miSelect;
	}
	return miSelect;
}
function updateTime() {
		var f = document.selectorForm ;
		var fE = f.newDateTime ;
		var hrSelect = f.hrSelect.value ;
		var miSelect = f.miSelect.value ;

		if(f.meridSelect) {
			if(f.meridSelect.value=='p') {
				if(hrSelect!='12') {
					hrSelect = parseInt(hrSelect, 10) ;
					hrSelect += 12 ;
					hrSelect = hrSelect.toString();
				}
			}

			if((f.meridSelect.value=='a')&&(hrSelect=='12')) {
				hrSelect = '0' ;
			}
		}

		if(hrSelect.length<2) {
			hrSelect = '0' + hrSelect;
		}
		if(miSelect.length<2) {
			miSelect = '0' + miSelect;
		}

		fE.value = hrSelect + f.timeSeperator.value + miSelect ;

		// eval('f.newDisplayDateTime.value = document.selectorForm.z' + serverDate.replace(/\//gi,'_') + '.value ;') ;

		hrSelect = f.hrSelect.value ;
		if(hrSelect.length<2) {
			hrSelect = '0' + hrSelect;
		}
		
		f.newDisplayDateTime.value = ' ' + hrSelect + f.localTimeSeperator.value + miSelect ;

		if(f.meridSelect) {
			f.newDisplayDateTime.value += ' ' + f.meridSelect[f.meridSelect.selectedIndex].innerHTML ;
		}
}

function doneClick() {

	var objWindow = window.opener;
	if (objWindow && !objWindow.closed)
	{
		var hiddenElem = eval('window.opener.document.' + formname + '.' + formelement) ;
		var spanTag = eval('window.opener.document.getElementById(\'' + spanid +'\')') ;
		hiddenElem.value = document.selectorForm.newDateTime.value ;
		spanTag.innerHTML = document.selectorForm.newDisplayDateTime.value ;
		
		// Extended Mode
		var dowElem = eval('window.opener.document.' + formname + '.' + formelement + '_dow') ;
		var domElem = eval('window.opener.document.' + formname + '.' + formelement + '_dom') ;
		var monumElem = eval('window.opener.document.' + formname + '.' + formelement + '_monum') ;
		var yrnumElem = eval('window.opener.document.' + formname + '.' + formelement + '_yrnum') ;
		var hourElem = eval('window.opener.document.' + formname + '.' + formelement + '_hr') ;
		var minElem = eval('window.opener.document.' + formname + '.' + formelement + '_mi') ;
		// var eventFire = eval('window.opener.document.' + formname + '.eventfire') ;

		if((dowElem) && (domElem) && (monumElem) && (yrnumElem)) {
			dowElem.value = document.selectorForm.new_dow.value ;
			domElem.value = document.selectorForm.new_dom.value ;
			monumElem.value = document.selectorForm.new_monum.value ;
			yrnumElem.value = document.selectorForm.new_yrnum.value ;
			
			if ((hourElem) && (minElem))
			{
				hourElem.value = getHour() ;
				minElem.value = getMin() ;
			}

			if(window.opener.dateUpdatedEvent) {
				// If a developer wants a specific action to occur after a date is 
				// updated from the selector she will have to create a function on 
				// the parent page with this name (dateUpdatedEvent). The parameter
				// is for the name of the element being updated.
				window.opener.dateUpdatedEvent() ;
			}
		}
	}
	window.close() ;
}

function cancelClick() {
	window.close() ;
}

function openDTselector(dType, targetDate, spanId, formName, formElement, cmsAppPath) {
	var winProps = 'toolbar=0, status=0, resizable=1' ;
	if(dType=='time') {
		winProps += ', height=150, width=250' ;
	} else {
		winProps += ', height=350, width=300' ;
	}
	if (targetDate == null)
	{
		targetDate = "";
	}
	window.open(cmsAppPath + 'calendarAdmin/datetimeselector.aspx?type=' + dType + '&targetdate=' + targetDate 
			+ '&spanid=' + spanId + '&formname=' + formName + '&formelement=' + formElement + '&sdate=' + targetDate,'dtSelWin',
			winProps);
}

function EkDTCompareDates(objLowDateField, objHighDateField)
{

	if ((objLowDateField == null) || (objHighDateField == null))
	{							
		return true;
	}
	if ((objLowDateField.value == null) || (objLowDateField.value == "")
			|| (objHighDateField.value == null) || (objHighDateField.value == ""))
	{
		return true;
	}
	
	var name = objLowDateField.name;
	var _minDay = eval("document.forms[0]." + name + "_dom.value;");
	var _minMonth = eval("document.forms[0]." + name + "_monum.value;");
	if (_minMonth)
	{
		_minMonth = parseInt(_minMonth, 10) - 1;
	}
	var _minYear = eval("document.forms[0]." + name + "_yrnum.value;");
	var _minHr = eval("document.forms[0]." + name + "_hr;");
	var _minMi = eval("document.forms[0]." + name + "_mi;");
	
	var name = objHighDateField.name;
	var _maxDay = eval("document.forms[0]." + name + "_dom.value;");
	var _maxMonth = eval("document.forms[0]." + name + "_monum.value;");
	if (_maxMonth)
	{
		_maxMonth = parseInt(_maxMonth, 10) - 1;
	}
	var _maxYear = eval("document.forms[0]." + name + "_yrnum.value;");
	var _maxHr = eval("document.forms[0]." + name + "_hr;");
	var _maxMi = eval("document.forms[0]." + name + "_mi;");
	if (_minHr == null && _minHr != "undefined") _minHr = "";
	if (_maxHr == null && _maxHr != "undefined") _maxHr = "";
	
	if (_minHr != "")
	{
		var myLowerDate=new Date(_minYear, _minMonth, _minDay, _minHr.value, _minMi.value);
	}
	else
	{
		//var myLowerDate=new Date(_minYear, _minMonth, _minDay);
		var myLowerDate=new Date(_minYear, _minMonth, _minDay,0,0);
	}
	
	if (_maxHr != "")
	{
		var myHighDate=new Date(_maxYear, _maxMonth, _maxDay, _maxHr.value, _maxMi.value);	
	}
	else
	{
		//var myHighDate=new Date(_maxYear, _maxMonth, _maxDay);
		var myHighDate=new Date(_maxYear, _maxMonth, _maxDay,23,59);
	}
	
	if (myLowerDate >= myHighDate)
	{
		return false;
	}
	return true;
							
}