
function NullFunc() {}

/////////////////////////////////////////////////////////
// Simple popupwindow
/////////////////////////////////////////////////////////

function openInfo(myUrl,myWinName,myW,myH,myScrolling) {
	
	var myWinProps = 'width='+myW+',height='+myH+',';
	if (myScrolling) {
		myWinProps += 'scrollbars,';
	}
	myWinProps += 'status,resize=yes,screenx=20,screeny=30,left=20,top=30';
	var myPopWin = window.open(myUrl,myWinName,myWinProps);
	myPopWin.focus();
}

/////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////

var openDocentByProductIDWin;

function openDocentByProductID(prid,linked_tours) {
	if (openDocentByProductIDWin) {
		if (openDocentByProductIDWin.closed) {}
		else { openDocentByProductIDWin.close(); }
	}
	var WinName = 'openDocentWin';
	var aUrl = '../product/docents.php?product&prid='+prid;
	if (linked_tours) { aUrl += '&linked_tours=yes'; }
	var WinProps = 'width=600,height=600,scrollbars,status,resize=yes,screenx=20,screeny=30,left=20,top=30';
	openDocentByProductIDWin = window.open(aUrl,WinName,WinProps);
	openDocentByProductIDWin.focus();
}

function openDocentWin(anId) {
	if (openDocentByProductIDWin) {
		if (openDocentByProductIDWin.closed) {}
		else { openDocentByProductIDWin.close(); }
	}
	var WinName = 'openDocentWin';
	var aUrl = '../product/docents.php?id='+anId;
	var WinProps = 'width=600,height=600,scrollbars,status,resize=yes,screenx=20,screeny=30,left=20,top=30';
	openDocentByProductIDWin = window.open(aUrl,WinName,WinProps);
	openDocentByProductIDWin.focus();
}

function openAllDocentWin() {
	if (openDocentByProductIDWin) {
		if (openDocentByProductIDWin.closed) {}
		else { openDocentByProductIDWin.close(); }
	}
	var WinName = 'openDocentWin';
	var aUrl = '../product/docents.php?cmd=all';
	var WinProps = 'width=600,height=600,scrollbars,status,resize=yes,screenx=20,screeny=30,left=20,top=30';
	openDocentByProductIDWin = window.open(aUrl,WinName,WinProps);
	openDocentByProductIDWin.focus();
}

/////////////////////////////////////////////////////////
// Mouse position
/////////////////////////////////////////////////////////

var tempXcorrection = 0;
var tempYcorrection = 0;

function ctGetMousePos(e) {

	var posx = 0;
	var posy = 0;
	if (!e) var e = window.event;
	if (e.pageX || e.pageY) {
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY) 	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}

	posx = posx + tempXcorrection; if (posx<0) { posx=0; }
	posy = posy + tempYcorrection; if (posy<0) { posy=0; }

	posarr = new Array(2); posarr[0] = posx; posarr[1] = posy;
	return(posarr);

}

/////////////////////////////////////////////////////////
// Fix date in format mm/dd/yy
/////////////////////////////////////////////////////////

function FixUserDate(aUserDate) {

	if ((!aUserDate)||(aUserDate=='')||(aUserDate=='mm/dd/yy')) { return (''); }

	var myMonthsShort = new Array("Jan","Feb","Mar",
				"Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

	var splits_arr = aUserDate.split("/");
	if (!splits_arr[2]) { return (''); }
	if (splits_arr[2].length!=2) { return(''); }

	if (splits_arr[0].substring(0,1)=='0')
		{ splits_arr[0]=splits_arr[0].substring(1,2); }
	if (splits_arr[1].substring(0,1)=='0')
		{ splits_arr[1]=splits_arr[1].substring(1,2); }
	
	var aD = parseInt(splits_arr[1],10); if (aD<1) { return(''); }
	var aM = parseInt(splits_arr[0],10); if (aM<1) { return(''); }
	var aYfull = parseInt('20'+splits_arr[2],10);

	var aDate=new Date(aD+' '+myMonthsShort[(aM-1)]+' '+aYfull + ' 12:00:00');

	// NS will output 2007 as 107
	var testYear = aDate.getYear();
	if (testYear<1900) { testYear = testYear+1900; }
	if(testYear!=aYfull) { return(''); }
	if(aDate.getMonth()!=(aM-1)) { return(''); }
	if(aDate.getDate()!=aD) { return(''); }

	var aDstr = aD+''; if (aD<10) { aDstr = '0'+aDstr; }
	var aMstr = aM+''; if (aM<10) { aMstr = '0'+aMstr; }
	var aYstr = aYfull+''; aYstr=aYstr.substr(2,4);
	return(aMstr+'/'+aDstr+'/'+aYstr);

}

/////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////

var DDint;
var DDmin=1;
var DDmax=15;
var DDlocked=false;

function setminDD() {
	if (DDint) { clearInterval(DDint); }
	DDint=setInterval('closeallunlockedDD()',DDmin*1000);
}
function setmaxDD() {
	if (DDint) { clearInterval(DDint); }
	DDint=setInterval('closeallunlockedDD()',DDmax*1000);
}
function openDD(anId) {
	closeallDD(anId);
	if (DDint) { clearInterval(DDint); }
	if (!document.getElementById(anId)) { return; }
	if (document.getElementById(anId).className=='hide') {
		document.getElementById(anId).className='ddlink';
		setmaxDD();
	}
}
function closeallunlockedDD(exceptId) {
	if (!DDlocked) {
		closeallDD(exceptId);
	}
}
function closeallDD(exceptId) {
	DDlocked=false;
	if (DDint) { clearInterval(DDint); }
	var x = document.getElementsByTagName('div');
	for (var i=0; i<x.length; i++) {
		if (x[i].id.substring(0,2)=='dd') {
			if ((!exceptId)||(exceptId!=x[i].id)) {
				document.getElementById(x[i].id).className='hide';
			}
		}
	}
}
function lockDD() {
	DDlocked=true;
}

/////////////////////////////////////////////////////////
//
/////////////////////////////////////////////////////////

function loadMiniCalendar(anId,aUserDate,showSelDate,LeadTime,TargetId) {

	aUserDate = FixUserDate(aUserDate);

	var myMonthsShort = new Array("Jan","Feb","Mar",
			"Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

	var aDateObj;
	var aDate;
	var aMonth;
	var aYear;

	var minDateObj = new Date();
	if (LeadTime==undefined) {
	}
	else {
		minDateObj.setTime(minDateObj.getTime()+(LeadTime-1)*24*60*60*1000);
	}
	
	if ((!aUserDate)||(aUserDate=='')) {
		var tempDate = minDateObj;
		tempDate.setTime(tempDate.getTime()+1*24*60*60*1000);
		aDate = minDateObj.getDate();
		aMonth = minDateObj.getMonth()+1;
		aYear = minDateObj.getYear();
		if (aYear<1900) { aYear = aYear+1900; }
		aDateObj=new Date(1+' '+myMonthsShort[tempDate.getMonth()]+' '+aYear+ ' 12:00:00');
		showSelDate = false;
	}
	else {
		var splits_arr = aUserDate.split("/");
		aDate = parseInt(splits_arr[1],10);
		aMonth = parseInt(splits_arr[0],10);
		aYear = parseInt('20'+splits_arr[2],10);
		aDateObj=new Date(1+' '+myMonthsShort[(aMonth-1)]+' '+aYear + ' 12:00:00');
	}

	aYearShort = aYear+''; aYearShort=aYearShort.substring(2,4);
	
	////////////////////////////////////////////////////
	
	var prevYear = aYear;
	var prevMonth = aMonth-1; if (prevMonth<1) { prevMonth=12; prevYear--; }
	var prevYearStr = prevYear+'';
	var prevUserDate = prevMonth+'/15/'+prevYearStr.substring(2,4);
	var prevMonthLink = "loadMiniCalendar('"+anId+"','"+prevUserDate+"',null,"+LeadTime+",'"+TargetId+"');"

	var nextYear = aYear;
	var nextMonth = aMonth+1; if (nextMonth>12) { nextMonth=1; nextYear++; }
	var nextYearStr = nextYear+'';
	var nextUserDate = nextMonth+'/15/'+nextYearStr.substring(2,4);
	var nextMonthLink = "loadMiniCalendar('"+anId+"','"+nextUserDate+"',null,"+LeadTime+",'"+TargetId+"');"

	////////////////////////////////////////////////////
	
	var h = '';

	h += '<table>';

	h += '<thead>';
	h += '<tr class="month">';
	h += '<td><a href="javascript:'+prevMonthLink+'">&lt;&lt;</a></td>';
	h += '<td colspan="5">'
			+ myMonthsShort[aMonth-1] + ' ' + aYear;
			'</td>';
	h += '<td><a href="javascript:'+nextMonthLink+'">&gt;&gt;</a></td>';
	h += '</tr>';
	h += '<tr class="days">';
	h += '<td>S</td>';
	h += '<td>M</td>';
	h += '<td>T</td>';
	h += '<td>W</td>';
	h += '<td>T</td>';
	h += '<td>F</td>';
	h += '<td>S</td>';
	h += '</tr>';
	h += '</thead>';
	h += '<tbody>';

	if (aDateObj.getDay()>0) {
		h += '<tr>';
		for (var i=0; i<aDateObj.getDay(); i++) {
			h += '<td class="nullday"></td>';
		}
	}
	
	var currDateObj = aDateObj;
	
	var aD = 1;
	while (currDateObj.getMonth() == aDateObj.getMonth()) {

		var w = currDateObj.getDay();
		var currUserDate = FixUserDate(aMonth+'/'+aD+'/'+aYearShort);
		var aDLink = "updateMiniCalendar('"+anId+"','"+currUserDate+"','"+TargetId+"');";

		if (w==0) { h+= '<tr>'; }

		if (currDateObj.getTime() <= minDateObj.getTime()) {
			h += '<td class="nullday">'+aD+'</td>';
		}
		else if ((aD==aDate)&&(showSelDate)) {
			h += '<td class="seldate"><a href="javascript:NullFunc();" onclick='+aDLink+'>'+aD+'</a></td>';
		}
		else {
			h += '<td><a href="javascript:NullFunc();" onclick='+aDLink+'>'+aD+'</a></td>';
		}

		if (w==6) { h+= '</tr>'; }

		aD++;
		var tempYear = currDateObj.getYear();
		if (tempYear<1900) { tempYear = tempYear+1900; }
		var newDateObj=new Date(aD+' '+myMonthsShort[currDateObj.getMonth()]+' '+tempYear + ' 12:00:00');
		currDateObj = newDateObj;

	}
	
	if (currDateObj.getDay()!=0) {
		for (var i=currDateObj.getDay(); i<=6; i++) {
			h += '<td class="nullday"></td>';
		}
		h += '</tr>';
	}

	h += '</tbody>';
	h += '</table>';
	
	h += '<p>[<a href="javascript:NullFunc();" onclick="hideMiniCalendar(\''+TargetId+'\');">close</a>]</p>';

	if (TargetId) {
		document.getElementById(TargetId).innerHTML = h;
	}
	else {
		document.getElementById('minicalendar').innerHTML = h;
	}

}

function displayMiniCalendar(anEvent,anId,altId,LeadTime,TargetId) {

	if ((!anId)||(anId=='')) { alert('Target object contains no ID.'); return; }

	if ((TargetId==undefined)||(TargetId=='')) { TargetId = "minicalendar"; }

	var showSelDate = true;
	aUserDate=document.getElementById(anId).value;
	if (((!aUserDate)||(aUserDate=='mm/dd/yy'))&&(altId)) {
		aUserDate=document.getElementById(altId).value;
		//showSelDate=false;
	}
	posarr = ctGetMousePos(anEvent);
	document.getElementById('minicalendar').style.left=(posarr[0]-120)+'px';
	document.getElementById('minicalendar').style.top=(posarr[1]+15)+'px';
	if (TargetId) {
		loadMiniCalendar(anId,aUserDate,showSelDate,LeadTime,TargetId);
		document.getElementById(TargetId).className='minicalendar relativecalendar screenonly';
		document.getElementById(TargetId).style.top = (Utilities.Top(Utilities.getElement(anId)) + Utilities.getElement(anId).offsetHeight) + 'px';
		document.getElementById(TargetId).style.left = (Utilities.Left(Utilities.getElement(anId)) - 50) + 'px';
	}
	else {
		loadMiniCalendar(anId,aUserDate,showSelDate,LeadTime);
		document.getElementById('minicalendar').className='minicalendar screenonly';
		document.getElementById('minicalendar').style.top = (Utilities.Top(Utilities.getElement(anId)) + Utilities.getElement(anId).offsetHeight) + 'px';
		document.getElementById('minicalendar').style.left = (Utilities.Left(Utilities.getElement(anId)) - 50) + 'px';
	}

}

function hideMiniCalendar(TargetId) {
	if (TargetId) {
		document.getElementById(TargetId).innerHTML = '';
		document.getElementById(TargetId).className='hide';
	}
	else {
		document.getElementById('minicalendar').innerHTML = '';
		document.getElementById('minicalendar').className='hide';
	}
}

function updateMiniCalendar(anId,aUserDate,TargetId) {
	if (TargetId) {
		document.getElementById(anId).value=aUserDate;
		hideMiniCalendar(TargetId);
	}
	else {
		document.getElementById(anId).value=aUserDate;
		hideMiniCalendar();
	}
}
