// JavaScript Document

var imgPath="com/datecom/"
imgDir = imgPath;
var bgImg="bg_img.gif";
var	imgsrc = new Array("drop_new1.gif","drop_new1.gif","upnew1.gif","upnew2.gif","down1.gif","down2.gif","close.gif","close1.gif")
var fontFace="arial";
var mthfontColor="#000066";
var monthEffect=21;
var calenderBgColor="#11487D";
var tableBgcolor = "#ECF2F4";
var tableRowcolcor = "white";
var MthYrsBgColor="#F2F6F7";
var weekFontColor="#000066";
var displayCtl;
var displayFormat;
var objName;
var xPos;
var yPos;
var calendarObj;
var objPrevElement = new Object();
var mthConstructed;
var mthSelected;
var d = new Date();

var default_mm = d.getMonth() + 1;
var default_dd = d.getDate();
var default_yyyy = d.getFullYear();

document.write("<div id=mainCalender style='position:absolute;border-top:1px solid #A4ABCD;border-bottom: 1px solid #11487D;border-right: 1px solid #11487D;border-left: 1px solid #A4ABCD;PADDING-RIGHT: 0px;PADDING-BOTTOM: 0px;width:175;display:none;height:175;z-index:1000;background:"+calenderBgColor+"'>");
document.write("</div>");
document.write("<div id=monCalendar style='position:absolute;width:50height:100;background:yellow;display:none:cursor:hand;z-index:1001' onclick='monthClicked()' >");
document.write("</div>");
var month = new Array();
month[0]=new Array('January');
month[1]=new Array('February');
month[2]=new Array("March");
month[3]=new Array("April");
month[4]=new Array("May");
month[5]=new Array("June");
month[6]=new Array("July");
month[7]=new Array("August");
month[8]=new Array("September");	
month[9]=new Array("October");
month[10]=new Array("November");
month[11]=new Array("December");
var char_mth = month[default_mm - 1] ;
var intfont = "<font color='"+mthfontColor+"' size=2 face='verdana'><strong>";
var mth_image = "<img name=im3 src="+ imgsrc[0] +" onclick=displayMonth() onmouseover=changeImage('im3','"+ imgsrc[1] +"') onmouseout=changeImage('im3','"+ imgsrc[0] +"') style='CURSOR:Hand'></font>";
var monthvalue='';
var firstFormat;
var secondFormat;
var thirdFormat;

var CurrentMonth=1
var CurrentYear=2003
var CurrentDay=2
var gbl_date_index;
var gbl_mth_index;
var gbl_yrs_index;
var gbl_sep_type="";


//to display calendar
function init(){
	get_ClientDateIndex();
}

function popUpCalendar(displayCtl,displayFormat,objName,yPos,xPos){
	
	this.displayCtl=displayCtl;
	
	this.displayFormat=displayFormat;
	
	this.objName=objName;
	if(objName.title=="disabled"){
		return;
	}
		
	init();
	if(xPos==0 || xPos==undefined || xPos==""){
		this.xPos=100;
	}else
	this.xPos=xPos;
	if(yPos==0 || yPos==undefined || yPos==""){
		this.yPos=100;
	}else
		this.yPos=yPos;
	var val=displayCtl.value
	if(val==""){
		displayCalender();
		return;
	}else{
		if (check_DateFormat(val)==false){
			displayCalender();
		}else{
			default_dd = get_CTClientDay(val);
			default_mm = get_CTClientMonth(val);
			default_yyyy = get_CTClientYear(val);
			char_mth = month[default_mm - 1] ;
			//alert(default_mm +"-"+default_dd+" -"+default_yyyy)
			//monthCell.innerHTML = intfont + date + image;
			//var year = parseInt(val.substring(6,10));
			//calform.ctlYear.value = year;
			displayCalender();
		}
	}
}

//to display month
function showMonth(displayCtl1, xPos,yPos){
	monCalendar.displayCtl1=displayCtl1;
	if(xPos==0){
		monCalendar.xPos=event.x+20;
	}
	if(yPos==0){
		monCalendar.yPos=event.y+20;
	}
//	alert(monCalendar.xPos +"-"+ monCalendar.yPos)
 	displayMonth();
}

//to display month
function buildMonth() {
	mthSelected=mth_ctl.innerText;
	//alert(mthSelected)
	//if (!mthConstructed) {
		tblHTML =	""
		for	(i=0; i<12;	i++) {
			monthName =month[i];
			if (monthName==mthSelected){
				monthName =	"<B>" +	monthName +	"</B>"
			}
			
			tblHTML += "<tr><td onmouseover='this.style.backgroundColor=\"#FFFF99\"' onmouseout='this.style.backgroundColor=\"\";' style='position:absolute:CURSOR:hand' onclick='changeMonth("+i+")' class=classCell1>&nbsp;" + monthName + "&nbsp;</td></tr>"
	//	}
		monCalendar.innerHTML = "<table name=monthTable width=70 style='color:"+mthfontColor+";font-family:"+fontFace+"; font-size:10px; border-width:1; border-style:solid; border-color:#a0a0a0;cursor:hand' bgcolor='"+MthYrsBgColor+"' cellspacing=0 >" +	tblHTML +	"</table>"

		mthConstructed=true
	}
}


//to display year
function buildYear(){
		ctlYear = default_yyyy;
		ctlMonth =  CurrentMonth;
	html_yrs="<table border='0' width=100% cellpadding=0 cellspacing=0 align=right>"+
	"<tr><td rowspan=2 align=right>"+
	" 	<TABLE cellSpacing=0 cellPadding=0 border=0>"+
    "      <tr>"+
    "         <TD style='PADDING-RIGHT: 0px; PADDING-LEFT: 1px; PADDING-BOTTOM: 0px; PADDING-TOP: 1px; BACKGROUND-COLOR: #cfcfcf' width='100%'>"+
    "             <TABLE cellSpacing=0 cellPadding=0 border=0>"+
    "              <TR>"+
    "           <TD style='	BORDER-RIGHT: #efefef 0px; BORDER-TOP: #efefef 1px solid; BORDER-LEFT: #efefef 1px solid; BORDER-BOTTOM: #efefef 0px; BACKGROUND-COLOR: #ffffff' vAlign=center align=middle width='100%'>"+
	"	<span id=yrs_ctl style='font-weight:bold;text-align:center;width:60;color:"+mthfontColor+";padding:2;font-size:12px;font-family:"+fontFace +"'>"+ctlYear +"</span>"+
	" </TD></TR></TABLE></TD></TR></TABLE>"+	
	"</td><td width=5 align=right><img name='im1' src='"+ imgPath + imgsrc[2] +"' onclick='increaseYear()' alt='Increase Year' onmouseover=changeImage('im1','"+ imgsrc[3] +"') onmouseout=changeImage('im1','"+ imgsrc[2] +"') style='CURSOR:Hand'></td></tr>"+
	"<tr><td align=right width=5 ><img name='im2' src='"+ imgPath+ imgsrc[4] +"' onclick='decreaseYear()' alt='Decrease Year' onmouseover=changeImage('im2','"+ imgsrc[5] +"') onmouseout=changeImage('im2','"+ imgsrc[4] +"') style='CURSOR:Hand'></td></tr></table>"
	
	return html_yrs;
}

                               
//to populate days of particular month
function getDaysInMonth(Month, Year) {
	var prevDate = new Date(Year, Month, 0);
	return prevDate.getDate();
}

//to display week name
function buildWeek(Year, Month){	
	var week = new Array();
	week[0] = new Array(7);
	week[1] = new Array(7);
	week[2] = new Array(7);	
	week[3] = new Array(7);
	week[4] = new Array(7);
	week[5] = new Array(7);
	week[6] = new Array(7);
	var curDate = new Date(Year, Month-1, 1);
	var dayOfFirst = curDate.getDay();
	var daysInMonth = getDaysInMonth(Month, Year);
	var varDate = 1;
	var i, d, w;		
	week[0][0] = "S";
	week[0][1] = "M";
	week[0][2] = "T";
	week[0][3] = "W";
	week[0][4] = "T";
	week[0][5] = "F";
	week[0][6] = "S";
	for (d = dayOfFirst; d < 7; d++) {
		week[1][d] = varDate;
		varDate++;
	}	
	for (w = 2; w < 7; w++) {
		for (d = 0; d < 7; d++) {
			if (varDate <= daysInMonth) {
				week[w][d] = varDate;
				varDate++;
			}
   		}
	}
	return week;
}

//to display days in tabular form
function buildDays(ctlYear, ctlMonth, sDateTextWeight){
	var myMonth;
	//alert(ctlYear+"-"+ctlMonth)
	myMonth = buildWeek(ctlYear, ctlMonth);
	var day = "<table name=tableDay border=0 cellspacing=0 width='100%' bgcolor=white>";
	day += "<tr>";
	day += "<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold;color:"+weekFontColor+"' &nbsp;>" + myMonth[0][0] + "&nbsp;</td>";
	day += "<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold;color:"+weekFontColor+"' &nbsp;>" + myMonth[0][1] + "&nbsp;</td>";
	day += "<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold;color:"+weekFontColor+"' &nbsp;>" + myMonth[0][2] + "&nbsp;</td>";
	day += "<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold;color:"+weekFontColor+"' &nbsp;>" + myMonth[0][3] + "</td>";
	day += "<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold;color:"+weekFontColor+"' &nbsp;>" + myMonth[0][4] + "&nbsp;</td>";
	day += "<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold;color:"+weekFontColor+"' &nbsp;>" + myMonth[0][5] + "&nbsp;&nbsp;</td>";
	day += "<td align='center' style='FONT-FAMILY:Arial;FONT-SIZE:12px;FONT-WEIGHT: bold;color:"+weekFontColor+"' &nbsp;>" + myMonth[0][6] + "&nbsp;</td>";
	day += "</tr>";
	for (w = 1; w < 7; w++) {
		day += "<tr >";
			for (d = 0; d < 7; d++){
				day += "<td align='center' valign='top' id=classCell class=calCell >";
				if (!isNaN(myMonth[w][d])){
					if((myMonth[w][d])==default_dd && ctlMonth==default_mm && ctlYear==default_yyyy){
						day += "<font onmouseover='date_over(this)' onmouseout='date_out(this)' id=calDateText style='width:100%;CURSOR:Hand;FONT-FAMILY:"+fontFace+";FONT-SIZE:10px;FONT-WEIGHT:" + sDateTextWeight + "' color=red onClick=date_Clicked(this)>" + myMonth[w][d] + "</font>";
					}else{
						day += "<font onmouseover='date_over(this)' onmouseout='date_out(this)' id=calDateText style='width:100%;CURSOR:Hand;FONT-FAMILY:"+fontFace+";FONT-SIZE:10px;FONT-WEIGHT:" + sDateTextWeight + "'  onClick=date_Clicked(this)>" + myMonth[w][d] + "</font>";
					}
				}else{
					day += "<font id=calDateText style='CURSOR:Hand;FONT-FAMILY:"+fontFace+";FONT-SIZE:10px;FONT-WEIGHT:" + sDateTextWeight + "' onClick=date_Clicked(this)> </font>";
				}
				day += "</td>";
			}
		day += "</tr>";
	}
	day +="<tr><td colspan=7 align=right><img name='img_close' src='"+ imgPath+ imgsrc[6] +"' onclick='mainCalender.style.display=\"none\";monCalendar.style.display=\"none\";' alt='Close Calendar' onmouseover=changeImage('img_close','"+ imgsrc[7] +"') onmouseout=changeImage('img_close','"+ imgsrc[6] +"') style='CURSOR:Hand'></td></tr>"
	day += "</table>";
	return day;
}
function date_over(objDate){
	if(objDate.innerText!="" && objDate.innerText>0){
		objDate.style.backgroundColor="#FFFF99";
	}else{
		objDate.style.cursor="";
	}
}
function date_out(objDate){
	objDate.style.backgroundColor="";
}
//to change the date as month and year is changede
function updateCal(Year, Month) {
	myMonth = buildWeek(Year, Month);
	//	alert(Year+"-"+Month);
	objPrevElement.bgColor = "";
	for (w = 1; w < 7; w++){
		for (d = 0; d < 7; d++){
			if (!isNaN(myMonth[w][d])){
				if((myMonth[w][d])==default_dd && Month==(default_mm) && Year==default_yyyy){
				calDateText[((7*w)+d)-7].innerText = myMonth[w][d];
				calDateText[((7*w)+d)-7].style.color="#FF0000";
				}else{
				calDateText[((7*w)+d)-7].innerText = myMonth[w][d];
				calDateText[((7*w)+d)-7].style.color="#000000";
				}
				
			}else{
				calDateText[((7*w)+d)-7].innerText = " ";
        	}
     	}
    }
}

//to increase year
function increaseYear(){
	var val=yrs_ctl.innerText;
	var val2 = parseInt(val) + 1;
	yrs_ctl.innerText=val2;
	
	updateCal(val2, get_MonththIndex(mth_ctl.innerText));		
}
//to decrease year
function decreaseYear(ctlYear, ctlMonth){
	
	var val=yrs_ctl.innerText;
	var val2 = parseInt(val) - 1;
	yrs_ctl.innerText=val2;
	
updateCal(val2, get_MonththIndex(mth_ctl.innerText));	
}

//to increase month
function changeMonth(index){
	
	var ctlYear=yrs_ctl.innerText;
	var date1=month[index];
	mth_ctl.innerText=date1;
	mth_img.filters.revealTrans.apply();
	mth_img.src=imgPath+date1+".gif";
	mth_img.filters.revealTrans.play();
	updateCal(ctlYear, index+1);

}

//to put effect on image
function changeImage(img_name,img_src){
	document[img_name].src=imgPath+img_src;
}

//to take the x and y axis
function displayCalender(){
	createCalender();

	mainCalender.style.left=event.x-xPos;
	mainCalender.style.top=event.y+yPos;
	mainCalender.style.display=""
}

//to take the x and y axis for month
function displayMonth(){
	buildMonth();
	leftPos=mainCalender.style.left.replace("px","");
	topPos=mainCalender.style.top;	
	//alert(leftPos+" "+topPos);
	monCalendar.style.left=parseInt(leftPos)+60;
	monCalendar.style.top=topPos;
	monCalendar.style.display=""
}
function month_mover(mthObj){
mthObj.style.borderTop="1px solid #11487D";
mthObj.style.borderBottom="1px solid #A4ABCD";
mthObj.style.borderRight="1px solid #A4ABCD";
mthObj.style.borderLeft="1px solid #11487D";
}
function month_mout(mthObj){
mthObj.style.borderTop="1px solid #A4ABCD";
mthObj.style.borderBottom="1px solid #11487D";
mthObj.style.borderRight="1px solid #11487D";
mthObj.style.borderLeft="1px solid #A4ABCD";
}
function createMonth(){
	//alert(char_mth);
	var html_var="<Table onclick=displayMonth()  onMouseOver=month_mover(this) onMouseOut=month_mout(this) border=0 width=100% height=19 cellpadding=1 cellspacing=0 bgcolor=#DFE8EC style='cursor:hand;border-top:1px solid #A4ABCD;border-bottom: 1px solid #11487D;border-right: 1px solid #11487D;border-left: 1px solid #A4ABCD'><tr><td><table width=100% border=0  bgcolor="+ MthYrsBgColor+"><tr>"+
	"<td><span id=mth_ctl style='width:100%;font-size:10px;cursor:hand;font-weight:bold;color:"+mthfontColor+";font-family:"+fontFace+"' >"+char_mth+"</span></td><td width=5><img name=im3 src="+imgPath+ imgsrc[0] +" onmouseover=changeImage('im3','"+ imgsrc[1] +"') onmouseout=changeImage('im3','"+ imgsrc[0] +"') style='CURSOR:Hand'></td></tr></table></td></tr></table>"
	return html_var;
}
//to give calendar a format
function createCalender(){
	mainCalender.innerHTML="<table border=0 cellspacing=0 bgcolor="+ tableBgcolor +" width='100%'>"+
	"<tr><td colspan=2><img src="+imgPath+char_mth+".gif id=mth_img border=1 onclick=displayMonth() style='cursor:hand;filter:revealTrans(duration=1,transition="+monthEffect+")'></td></tr>"+
	"<tr bgcolor="+ MthYrsBgColor+">"+
	"<Td id=monthCell class=MonthCell width=120>"+ createMonth() +"</td><td class=YearCell>"+ buildYear() +" </td></tr>"+
	"<tr><td colspan=2>"+
		"<table border=0 width='100%' bgcolor='#ffffff'>"+
			"<tr><td >"+ buildDays(default_yyyy, default_mm) +"</td></tr>"+
		"</table>"+
	"</tr></table>";
	//calform.ctlMonth.value=monthvalue;
}

//to get value of the clicked position
function date_Clicked(dateObj){
	sel_date=dateObj.innerText
	if(sel_date=="" || sel_date==0){
		return;
	}
//	alert(sel_date);
	sel_yrs=yrs_ctl.innerText
	sel_mth=get_MonththIndex(mth_ctl.innerText)
	if(sel_mth<10){
		sel_mth="0"+sel_mth;
	}
	if(sel_date<10){
		sel_date="0"+sel_date;
	}
//	alert(sel_yrs +","+sel_mth+","+sel_date)
	cal_date=convertToClientFormat(sel_yrs,sel_mth,sel_date)
	this.displayCtl.value=cal_date;
	displayCtl.focus();
	mainCalender.style.display="none";
	monCalendar.style.display="none"
}
function calenderClicked(){
	val2=calform.ctlYear.value
	calCell = event.srcElement.innerText;
	mon=CurrentMonth;
	//alert(mon);
	date = month[mon - 1];
	monthCell.innerHTML = intfont + date + image;
	calform.ctlYear.value = val2;
	if (calCell<10){
		calCell="0"+calCell;
	}else{
		calCell=calCell;
	}
	if(mon<10){
		mon="0"+ mon;
	}else{
		mon=mon;
	}	
	firstFormat = calCell +"/"+ mon +"/"+ val2;
	secondFormat = mon +"/"+ calCell +"/"+ val2;
	thirdFormat = val2 +"-"+ mon +"-"+ calCell;
	this.displayCtl.value=secondFormat;
	mainCalender.style.display="none";
	
}

//to get value of month clicked and to hide month
function monthClicked(){
	monCalendar.style.display="none"
}

function get_DateInArray(x){
	var myArrayDate=new Array()
	j=this.displayFormat.indexOf("/");
	if(j==-1){
		myArrayDate = x.split("-");
	} else{
		myArrayDate = x.split("/");
	}
	return myArrayDate
}
function get_CTClientMonth(x)
{
	var myArrayDate=new Array()
	myArrayDate=get_DateInArray(x);
	return myArrayDate[gbl_mth_index];
}
function get_CTClientDay(x){
	var myArrayDate=new Array()
	myArrayDate=get_DateInArray(x);
	
	return myArrayDate[gbl_date_index];
}
function get_CTClientYear(x){
	var myArrayDate=new Array()
	myArrayDate=get_DateInArray(x);
	return myArrayDate[gbl_yrs_index];
}
function get_ClientDateIndex(){
	j=this.displayFormat.indexOf("/");
	if(j==-1){
		myArrayDate = this.displayFormat.split("-");
		gbl_sep_type="-";
	} else{
		myArrayDate =this.displayFormat.split("/");
		gbl_sep_type="/";
	}
	for(i=0;i<3;i++){
		if(myArrayDate[i]=="dd"){
			gbl_date_index=i
		}
		if(myArrayDate[i]=="mm"){
			gbl_mth_index=i
		}
		if(myArrayDate[i]=="yyyy" || myArrayDate[i]=="yy"){
			gbl_yrs_index=i
		}		
	}
}
function convertToClientFormat(yrs,mth,dd){
	var newArrDate=new Array()
	newArrDate[gbl_date_index]=dd;
	newArrDate[gbl_mth_index]=mth;
	newArrDate[gbl_yrs_index]=yrs;
	varNewDate=newArrDate[0]+ gbl_sep_type +newArrDate[1]+ gbl_sep_type +newArrDate[2];
	return varNewDate;
}
function check_DateFormat(x){

		bolCondition = check_ClientDate(x);
		//alert (bolCondition);
		if(	bolCondition==false){
			return false
		}else{
			return true
		}
	
}
function check_ClientDate(clientdate)
{
		
	if(clientdate==""){
		return true;
	}
	var myArrayDate=new Array()
	
	myArrayDate=get_DateInArray(clientdate);
		
	if (myArrayDate.length != 3 ){
			return false;
	}
	
		dd = get_CTClientDay(clientdate);
		mm = get_CTClientMonth(clientdate);
		yyyy = get_CTClientYear(clientdate);		
		
		if (yyyy.length != 4)
		{return false;}
		if (is_Num(dd) == false)
		{
		return false;
		}
		if (is_Num(mm) == false)
		{
		return false;
		}
		if (is_Num(yyyy) == false)
		{
		return false;
		}
		
		var maxDay_Array = new Array(30,31)
		var maxDay_Array_Next = new Array(31,30)
		
		leapyear = yyyy % 4;		
		
		if (leapyear == 0)
		{checkFeb = 29;}
		else
		{checkFeb = 28;}
		
		if (mm > 12 || mm < 1)
		{
		return false;
		}
		
		if (mm==2)
		{maxDay = checkFeb}
		else if (mm > 7 )
		{maxDay = maxDay_Array_Next[mm%2]}
		else
		{maxDay = maxDay_Array[mm%2]}
		if (dd > maxDay || dd < 1)
		{
		return false;
		}
		else
		{return true;}
}
function is_Num(str) {
  if(!str) return false;
  for(var i=0; i<str.length; i++){
    var ch=str.charAt(i);
    if (".0123456789".indexOf(ch) ==-1) return false;

  }
  return true;
}
function get_MonththIndex(x){
ret=-1;
for(i=0;i<12;i++){
	if(month[i]==x){
		ret=i+1;	
		break;		
	}
}
return ret;
}


function check_date(obj,limitDate)
{
var x=obj.value;
var y=x.split("/");
var invDate=false;
if (y.length==1){
	y=x.split("-");
	}
for(i=0;i<x.length;i++){
	if(x.charAt(i)==".")
	invDate=true;
	}
if(y.length!=3){
	invDate=true;
}
else{
var dd=last_day(y[0],y[2]);
	for(i=0;i<y.length;i++){
		if(isNaN(y[i]))
		invDate=true;
		else if(i==0 && (y[0].length>2 || y[0]<1 || y[0]>12))
		invDate=true;
		else if(i==1 && (y[1].length>2 || y[1]<1 || y[1]>dd))
		//else if(i==1 && (y[1]<1 || y[1]>31))
		invDate=true;
		else if(i==2 && (y[2]<1 || y[2].length<4 || y[2].length>4))
		invDate=true;
		}
}
if(invDate){
	var frm = document.forms[0].name;
	alert_error("Invalid Date Format !!!\nPlease, enter valid date");
	frm+'.'+obj.select();
	return false;
}else if(limitDate!="" && new Date(x)<new Date(limitDate)){
		var frm = document.forms[0].name;
		alert_error("Date Limitation !!!\nYou can not use before "+ limitDate);
		obj.value=limitDate;
		//frm+'.'+obj.select();
		return false;
}else{
		return true;
		}
}

//check leap year date
function last_day(mm,yyyy)
{
var dayArray=new Array(2);
dayArray[0]=30;
dayArray[1]=31;
dayArray[2]=30;
var leapyear=yyyy%4;
var mFeb=0;
var mDay=0;
if(leapyear==0){
	mFeb=29;
	}
	else{
    mFeb=28;
	}
if(mm==2){
	mDay=mFeb;
}else if(mm>7){
    mDay=dayArray[(mm%2) + 1];
}else{
    mDay=dayArray[mm%2];
}
	return mDay;
}

