//This file contains a date selector control for IE4 and 5
//to use place a few lines of html as below:
//*****************************************************
//Place the following events in the body:
//<BODY onclick="hideDateBox()" onblur="hideDateBox()">
//and the following html in the page anywhere:
//<script language=javascript src="_ScriptLibrary/dateBox.js">
//</script>
//and this html: where you want the box to appear.
//<input name=start_dt id=start_dt onblur="validateDate()" >
//<input type=button name=buttonDisplay onclick="showDateBox(window.event.srcElement.previousSibling,-140,18)" style="BACKGROUND-IMAGE: url(../images/arrow.gif);HEIGHT:22px;WIDTH:17">
//*************************************************************
//Here is a description of the functions:
//function validateDate() :will check if date is valid and ifso will return focus back to control after giving error message
//function isDate() returns true if its a valid date and false if it is invalid
//function showDateBox(controlID) shows the date box at the controls current date
//function moveForward() moves the date box forward a month
//funciton moveBack() moves the date box back a month
//function getInner() returns the HTML required by the date box for a specified month

//download images
var imgRightArrow = new Image();
imgRightArrow.src = "../images/rightarrow.gif";
var imgLeftArrow = new Image();
imgLeftArrow.src = "../images/leftarrow.gif";

var textBoxHeight = 20;

var objDate = new Date();
var dtSelected = null;
var monArray = new Array(12);
var aMid = new Array(42);
var glControl;
var objDateBoxDiv;
var objDateBoxBG;

monArray[0] = 'January';
monArray[1] = 'February';
monArray[2] = 'March';
monArray[3] = 'April';
monArray[4] = 'May';
monArray[5] = 'June';
monArray[6] = 'July';
monArray[7] = 'August';
monArray[8] = 'September';
monArray[9] = 'October';
monArray[10] = 'November';
monArray[11] = 'December';

function validateDate(){
	var objElement = window.event.srcElement
	var varDay, varMonth
	objElement.value = objElement.value.replace('.','/');
	objElement.value = objElement.value.replace('.','/');
	objElement.value = objElement.value.replace('-','/');
	objElement.value = objElement.value.replace('-','/');
	objElement.value = objElement.value.replace('\\','/');
	objElement.value = objElement.value.replace('\\','/');
	if (objElement.value == '')
		return;

	var dtArray = objElement.value.split('/')
	if (dtArray[2] < 50) 
		dtArray[2] = (dtArray[2]*1) + 2000;
	if (dtArray[2] > 50 && dtArray[2] <100) 
		dtArray[2] = (dtArray[2]*1) + 1900;
	if (dtArray[0]> -1 && dtArray[1] > -1 && dtArray[2] > -1)
		objElement.value = 	dtArray[0] + '/' + dtArray[1] + '/' + dtArray[2];
	if (!isDate(objElement.value)){
		alert('Date is not in format D/M/YYYY');
		objElement.focus();
	}else{
		var tempDate = new Date(dtArray[2],(dtArray[1]-1),dtArray[0]);
		varDay = tempDate.getDate() + '/';
		varMonth = ((tempDate.getMonth()*1) + 1);
		varMonth = varMonth + '/';
		if (varDay.length == 2){
			varDay = '0' + varDay;
		}
		if (varMonth.length == 2){
			varMonth = '0' + varMonth;
		}
		objElement.value = 	varDay + varMonth + dtArray[2];
	}
}

function isDate(strDate){
try{
	var datePat = /^([1-9]|([0-2][0-9])|([3][01]))\/([1-9]|([0][1-9])|([1][012]))\/\d{4}$/;
	if (!datePat.test(strDate)){
		return false;
	}
	var dtArray = strDate.split('/')
	var tempDate = new Date(dtArray[2],(dtArray[1]-1),dtArray[0])
	if (tempDate.toString() == 'NaN'){
		return false;
	}
	
}catch(e){return false}
return true;
}

function showDateBox(controlID,offSetClickX,offSetClickY){
	var temp = 3;
	var consttemp = 2;
	var tableX;
	var tableY;
	var tempDate = new Date();
	var varUndefined;

	dtSelected = null;
	glControl = controlID;
	if (objDateBoxDiv != varUndefined){
		if (objDateBoxDiv.style.visibility == ''){
			hideDateBox();
			return;
		}
	}
try{
	if (glControl.value != ''){
		var dtArray = glControl.value.split('/')
		if (dtArray[2] < 50) 
			dtArray[2] = '(dtArray[2]*1)' + 2000; 
		if (dtArray[2]> 50 && dtArray[2] < 100)
			dtArray[2] = '(dtArray[2]*1)' + 1900; 
		objDate = new Date(dtArray[2],(dtArray[1]-1),dtArray[0]);
		dtSelected = new Date(objDate.getYear(),objDate.getMonth(),objDate.getDate());
	}else{ 
		objDate.setTime(tempDate.getTime());
		dtSelected = null ;
	}
	if (objDate.toString() == "NaN"){
		objDate=new Date();
		dtSelected=null;
	} 
}catch(e){
	objDate = new Date()
	dtSelected = null 
}
	if (objDateBoxDiv == varUndefined){
		objDateBoxDiv = window.document.createElement("DIV");
		objDateBoxDiv.style.position = 'absolute';
		objDateBoxDiv.zIndex = 1001
		objDateBoxDiv.style.top = 0;
		objDateBoxDiv.style.left = 0;
		objDateBoxBG = window.document.createElement("IFRAME");
		objDateBoxBG.style.position = 'absolute';
		objDateBoxBG.scrolling = 'no';
		objDateBoxBG.zIndex = 1000;
		objDateBoxBG.style.top = 0;
		objDateBoxBG.style.left = 0;
		window.document.body.appendChild(objDateBoxBG);
		window.document.body.appendChild(objDateBoxDiv);
	}
	objDateBoxDiv.innerHTML = getInner(objDate)
	tableLeft = document.body.scrollLeft + window.event.x - window.event.offsetX + offSetClickX 
	tableTop  = document.body.scrollTop  + window.event.y - window.event.offsetY + offSetClickY 
	if (tableLeft < 0)
		tableLeft = 0;
	if (tableTop < 0)
		tableTop = 0;
	if ((document.body.clientHeight - (window.event.y - window.event.offsetY + 20)) < objDateBoxDiv.clientHeight){
		tableTop = tableTop - objDateBoxDiv.clientHeight - textBoxHeight;
		if (tableTop < 0)
			tableTop = 0;
	}
	objDateBoxDiv.style.left = tableLeft;
	objDateBoxDiv.style.top  = tableTop;
	objDateBoxDiv.style.visibility = '';
	objDateBoxBG.style.left = tableLeft;
	objDateBoxBG.style.top  = tableTop;
	objDateBoxBG.style.width = objDateBoxDiv.clientWidth;
	objDateBoxBG.style.height = objDateBoxDiv.clientHeight;
	objDateBoxBG.style.visibility = '';
	window.event.cancelBubble = true;
}

function getInner(dtDisplay){ 
	var strInner, j, i, k 
	var offset, prevMonth, currMonth 
	var dtTemp = new Date(dtDisplay.getYear(),dtDisplay.getMonth(),1) 
	
	switch(dtDisplay.getMonth()+1){ 
		case 1: 
		case 8:
			prevMonth = 31 
			currMonth = 31 
			break; 
		case 2:
			k = dtDisplay.getYear() 
			if (k%4 == 0)
				currMonth=29;
			else
				currMonth=28;
			prevMonth = 31 
			break; 
		case 3:
			k = dtDisplay.getYear()
			if (k%4 == 0)
				prevMonth=29;
			else 
				prevMonth=28;
			currMonth = 31
				break;
		case 4:
		case 6:
		case 9:
		case 11:
			prevMonth = 31
			currMonth = 30
			break;
		case 5:
		case 7:
		case 10:
		case 12:
			prevMonth = 30
			currMonth = 31
			break;
	}
	i = dtTemp.getDay()
	if (i == 0)
		i = 7;
	k = 0
	for(j=prevMonth-i+1;j<=prevMonth;j++){
		aMid[k] = '<font color=#dcdcdc id=prevmonth>' +j+ '</font>';
		k++
	}

	for(j=1;j<=currMonth;j++){ 
		aMid[k]=j;
		k++
	} 
	if (dtSelected != null){
		if (dtSelected.getMonth()== objDate.getMonth() && dtSelected.getYear() == objDate.getYear()){
			aMid[k - currMonth + dtSelected.getDate() - 1]='<font style="background-color=#000060" color=#ffffff>' + dtSelected.getDate() + '</font>'
		}
	}

	for(j=1;k<48;j++){
		aMid[k] = '<font color=#b2b2b2 id=nextmonth>' + j + '</font>';
		k++;
	}
	strInner = '<table onclick="checkBubble()" bgcolor="#FFFFFF" cellspacing="0" cellpadding="0" style="BORDER: #dcdcdc 2px outset;FONT-FAMILY:Arial;FONT-SIZE:8pt;"><tr><td><table style="BORDER: white 2px inset;FONT-FAMILY:Arial;CURSOR:default;"><tr><td>'
	strInner = strInner + '<table onmouseup="date_select()" border="0" style="FONT-FAMILY:Arial;FONT-SIZE:8pt;CURSOR:default;">';
	strInner = strInner + '	<tr bgcolor="silver"><td style="TEXT-ALIGN: center;FONT-SIZE:8pt"><img border="0" src="../images/leftarrow.gif" onmouseup="moveBack()"></td><td colspan="5" style="FONT-SIZE:8pt;TEXT-ALIGN: center"><span name="dtHeader" id="dtHeader" style="FONT-WEIGHT: bolder;COLOR:#000060">'+monArray[dtDisplay.getMonth()] + ' ' + dtDisplay.getYear()+'</span></td><td style="TEXT-ALIGN: center"><img border="0" src="../images/rightarrow.gif" onmouseup="moveForward();"></td></tr>';
	strInner = strInner + '	<tr><td style="FONT-SIZE:8pt" width="16">Su</td><td style="FONT-SIZE:8pt" width="16">M</td><td style="FONT-SIZE:8pt" width="16">T</td><td style="FONT-SIZE:8pt" width="16">W</td><td style="FONT-SIZE:8pt" width="16">Th</td><td style="FONT-SIZE:8pt" width="16">F</td><td style="FONT-SIZE:8pt" width="16">S</td></tr>';
	strInner = strInner + '	<tr bgcolor="#000060" height="2"><td style="FONT-SIZE:8pt" colspan="7"></td></tr>';
	strInner = strInner + '	<tr><td style="FONT-SIZE:8pt">'+(aMid[0])+'</td><td style="FONT-SIZE:8pt">'+(aMid[1])+'</td><td style="FONT-SIZE:8pt">'+(aMid[2])+'</td><td style="FONT-SIZE:8pt">'+(aMid[3])+'</td><td style="FONT-SIZE:8pt">'+(aMid[4])+'</td><td style="FONT-SIZE:8pt">'+(aMid[5])+'</td><td style="FONT-SIZE:8pt">'+(aMid[6])+'</td></tr>';
	strInner = strInner + '	<tr><td style="FONT-SIZE:8pt">'+(aMid[7])+'</td><td style="FONT-SIZE:8pt">'+(aMid[8])+'</td><td style="FONT-SIZE:8pt">'+(aMid[9])+'</td><td style="FONT-SIZE:8pt">'+(aMid[10])+'</td><td style="FONT-SIZE:8pt">'+(aMid[11])+'</td><td style="FONT-SIZE:8pt">'+(aMid[12])+'</td><td style="FONT-SIZE:8pt">'+(aMid[13])+'</td></tr>';
	strInner = strInner + '	<tr><td style="FONT-SIZE:8pt">'+(aMid[14])+'</td><td style="FONT-SIZE:8pt">'+(aMid[15])+'</td><td style="FONT-SIZE:8pt">'+(aMid[16])+'</td><td style="FONT-SIZE:8pt">'+(aMid[17])+'</td><td style="FONT-SIZE:8pt">'+(aMid[18])+'</td><td style="FONT-SIZE:8pt">'+(aMid[19])+'</td><td style="FONT-SIZE:8pt">'+(aMid[20])+'</td></tr>';
	strInner = strInner + '	<tr><td style="FONT-SIZE:8pt">'+(aMid[21])+'</td><td style="FONT-SIZE:8pt">'+(aMid[22])+'</td><td style="FONT-SIZE:8pt">'+(aMid[23])+'</td><td style="FONT-SIZE:8pt">'+(aMid[24])+'</td><td style="FONT-SIZE:8pt">'+(aMid[25])+'</td><td style="FONT-SIZE:8pt">'+(aMid[26])+'</td><td style="FONT-SIZE:8pt">'+(aMid[27])+'</td></tr>';
	strInner = strInner + '	<tr><td style="FONT-SIZE:8pt">'+(aMid[28])+'</td><td style="FONT-SIZE:8pt">'+(aMid[29])+'</td><td style="FONT-SIZE:8pt">'+(aMid[30])+'</td><td style="FONT-SIZE:8pt">'+(aMid[31])+'</td><td style="FONT-SIZE:8pt">'+(aMid[32])+'</td><td style="FONT-SIZE:8pt">'+(aMid[33])+'</td><td style="FONT-SIZE:8pt">'+(aMid[34])+'</td></tr>';
	strInner = strInner + '	<tr><td style="FONT-SIZE:8pt">'+(aMid[35])+'</td><td style="FONT-SIZE:8pt">'+(aMid[36])+'</td><td style="FONT-SIZE:8pt">'+(aMid[37])+'</td><td style="FONT-SIZE:8pt">'+(aMid[38])+'</td><td style="FONT-SIZE:8pt">'+(aMid[39])+'</td><td style="FONT-SIZE:8pt">'+(aMid[40])+'</td><td style="FONT-SIZE:8pt">'+(aMid[41])+'</td></tr>';
	strInner = strInner + '	</td></tr></table></td></tr></table>';
	return strInner
}

function hideDateBox(){
	try{
		objDateBoxDiv.style.visibility = 'hidden';
		objDateBoxBG.style.visibility = 'hidden';
	}catch(e){}
}

function moveBack(){
var i = objDate.getMonth()
if (i==1){
	objDate.setMonth(12)
	objDate.setYear(objDate.getYear()-1)
}else{
	objDate.setMonth(i-1)
}
objDateBoxDiv.innerHTML = getInner(objDate)
}
function moveForward(){
var i = objDate.getMonth()
if (i==12){
	objDate.setMonth(1)
	objDate.setYear(objDate.getYear()+1)
}else{
	objDate.setMonth(i+1)
}
objDateBoxDiv.innerHTML = getInner(objDate)
}

function date_select(){
var daySelected = window.event.srcElement
var dayExp =  /^([1-9]|([0-2][0-9])|([3][01]))$/
var yearVal
var monthVal
var dayVal
var objFrm = document.forms[0];
if (!dayExp.test(daySelected.innerText))
	return;
if (objDate.getYear() < 100)
	yearVal = objDate.getYear() + 1900;
else
	yearVal = objDate.getYear();
if (daySelected.id == 'prevmonth'){
	monthVal = objDate.getMonth();
}else{
	if (daySelected.id == 'nextmonth'){
		monthVal = objDate.getMonth() + 2;
	}else{
		//must be current month
		monthVal = objDate.getMonth() + 1;
	}
}
if (monthVal==0){
	monthVal = 12;
	yearVal--;
}
if (monthVal==13){
	monthVal = 1;
	yearVal++;
}

dayVal = daySelected.innerText + '/';
if (dayVal.length == 2){
	dayVal = '0' + dayVal;
}
monthVal = monthVal + '/';
if (monthVal.length == 2){
	monthVal = '0' + monthVal;
}
glControl.value = dayVal + monthVal + yearVal;
hideDateBox();
try{
	setTimeout('try{checkFinish_dt()}catch(e){}',1000);
}catch(e){}
}

function checkBubble(){
if (objDateBoxDiv.style.visibility == ''){
	window.event.cancelBubble=true
}else{
	window.event.cancelBubble=false
}
}
///  add more code for OTAL project 

// Control: identify From Date or To Date
function ConvertToInt(strNum)
{
    var result=0;
    switch(strNum)
    {
        case "01":
            result= 1;
        break;
        case "02":
            result= 2;
        break;
        case "03":
            result= 3;
        break;
        case "04":
            result= 4;
        break;
        case "05":
            result= 5;
        break;
        case "06":
            result= 6;
        break;
        case "07":
            result= 7;
        break;
        case "08":
            result= 8;
        break;
        case "09":
            result= 9;
        break;
        default:
        result= parseInt(strNum);
    }
    return result;
}
function IsDateValid(ctrControl)
{
    var FromDate;
    var ToDate;
    var id="";
    var dmy;
    var FDate = new Date();
    var TDate = new Date();
    if(ctrControl.id.indexOf("txtFromDate")>=0)
    {
        FromDate = ctrControl;
        id = ctrControl.name.replace(/txtFromDate/,"txtToDate");
        ToDate = document.getElementById(id);
        if((FromDate.value.length>1) && (ToDate.value.length>1))
        {
           dmy= FromDate.value.split("/");
           FDate.setFullYear(ConvertToInt(dmy[2]),ConvertToInt(dmy[1])-1,ConvertToInt(dmy[0]));
           dmy= ToDate.value.split("/");
           TDate.setFullYear(ConvertToInt(dmy[2]),ConvertToInt(dmy[1])-1,ConvertToInt(dmy[0]));
           if(FDate>TDate)
           {
                alert("From Date is less than or equal To Date.\n From Date or To Date is not valid.");
                ctrControl.focus();
                ctrControl.select();
           }
           else{
                validTotalDayNoticePeriod(FromDate.value, ToDate.value,ctrControl);
           }
        }
        else{
            
        }
    }
    else{ // get To Date before
        ToDate = ctrControl;
        id = ctrControl.name.replace(/txtToDate/,"txtFromDate");
        FromDate = document.getElementById(id);
        if((FromDate.value.length>1) && (ToDate.value.length>1))
        {
           dmy= FromDate.value.split("/");
           FDate.setFullYear(ConvertToInt(dmy[2]),ConvertToInt(dmy[1])-1,ConvertToInt(dmy[0]));
           dmy= ToDate.value.split("/");
           TDate.setFullYear(ConvertToInt(dmy[2]),ConvertToInt(dmy[1])-1,ConvertToInt(dmy[0]));
           if(FDate>TDate)
           {
                alert("From Date is less than or equal To Date.\n From Date or To Date is not valid.");
                ctrControl.focus();
                ctrControl.select();
           }
           else{
                validTotalDayNoticePeriod(FromDate.value, ToDate.value,ctrControl);
           }
        }
        else{
                     
        }
    }
}

 

