﻿
var yearShamsiCurrent  ="";
var monthShamsiCurrent ="";
var dayShamsiCurrent ="";

var imageFolder = "/images/Calendar/";
var classNameMouseOut = "";

var arrMonthLengths =new Array(0,31,31,31,31,31,31,30,30,30,30,30,30);

var arrMonthNames   = new Array("",ConvertToUniCode("tv,vndk"),ConvertToUniCode("hvndfiaj"),ConvertToUniCode("ovnhn"),
					ConvertToUniCode("jdv"),ConvertToUniCode("lvnhn"),ConvertToUniCode("aivd,v"),ConvertToUniCode("liv"),
					ConvertToUniCode("hfhk"),ConvertToUniCode("Hbv"),ConvertToUniCode("nd"),ConvertToUniCode("filk"),
					ConvertToUniCode("hstkn"));

function SetToCurrentDate(txbId,closeId,date)
{

closeCalnedar(closeId);
document.getElementById(txbId).value=date;
}
///
// Fires when the user moves the mouse pointer into the cell day.
///
function CheckDate(e)
{
var str=new String();
str=e.value;

var reg= new RegExp("^(1[3-4][0-9][0-9])/[0-1][0-9]/[0-3][0-9]$");
var res=reg.exec(str);
if(res==null)
   {
   
   e.value="";
    
   }

}
function cell_onmouseover(e)
{
	var cellSelect=e.srcElement;
	var cellSelectId=cellSelect.id;
	var strIndexDay = new String(cellSelectId.substring(cellSelectId.lastIndexOf('_')+1,cellSelectId.length));
	strIndexDay = strIndexDay.substr(6,2);
	var indexLatinDay = Math.floor(strIndexDay);
	classNameMouseOut = document.getElementById(cellSelectId).className;
	document.getElementById(cellSelectId).className = "calday-over";
}
///
// Fires when the user moves the mouse pointer outside the boundaries of the cell day
///
function cell_onmouseout(e)
{
	var cellSelect=e.srcElement;
	var cellSelectId=cellSelect.id;
	document.getElementById(cellSelectId).className = classNameMouseOut;
}
///
// Fires when the user clicks the left mouse button on the cell day. 
///
function cell_onclick(e)
{
	var cellSelect=e.srcElement;	
	var cellSelectId=new String(cellSelect.id);
	
	var calenderSelect=cellSelect;
	while (calenderSelect.tagName !="TABLE") 
	{
		calenderSelect=calenderSelect.parentElement;
	}
	
	var calenderId=calenderSelect.id;
	closeCalnedar(calenderId);
	cellSelectId = cellSelectId.substring(cellSelectId.lastIndexOf('_')+1,cellSelectId.length);
	var yearSelect=cellSelectId.substring(0,4);
	var monthSelect=cellSelectId.substring(4,6);
	var daySelect=cellSelectId.substring(6,9);
	document.getElementById("txt"+calenderId).value=yearSelect+"/"+monthSelect+"/"+daySelect;
}
///
//  Fires when the user presses a key in surface panel calendar .
///
function pnlMain_onkeydwon(calenderId)
{
	// if selectIndex = 1 display calendar 
	if (document.getElementById("icon"+calenderId).selectIndex==1) 
	{
		if (event.keyCode==27) //press Esc key
			closeCalnedar(calenderId);
	}
}
///
// Validation date input 
///
function checkDateInput(calenderId) {

    var ram = document.getElementById("icon" + calenderId);

    if (ram.selectIndex==null)
         ram.selectIndex = 0;
    

	if (document.getElementById("icon"+calenderId).selectIndex==0)
	{
		var dateHejri =new String(document.getElementById("txt"+calenderId).value);
		var chrSplit=/,/g;
		var strFirstDays=new String(document.getElementById("txtFirst"+calenderId).value);		
		var arrFirstDays=new Array();
		//arrFirstDays [0] = Frist Day of Month
		//arrFirstDays [1] = First Day Next Month
		//arrFirstDays [2] = Date Hejri Now
		///
		// for save first day of current month and first day of next month when change date input
		/// 
		//arrFirstDays [3] = Frist Day of Month
		//arrFirstDays [4] = First Day Next Month
		//arrFirstDays [5] = Date Hejri Now
		
		arrFirstDays=strFirstDays.split(chrSplit);
	
		arrFirstDays[0] = arrFirstDays[3];
		arrFirstDays[1] = arrFirstDays[4];
		arrFirstDays[2] = arrFirstDays[5];		
		
		var strValueTxtFrist = arrFirstDays[3]+","+arrFirstDays[4]+","+arrFirstDays[5]+",";
		strValueTxtFrist +=arrFirstDays[3]+","+arrFirstDays[4]+","+arrFirstDays[5];
		
		document.getElementById("txtFirst"+calenderId).value = strValueTxtFrist;
		
		var dateHejriNow=new String(arrFirstDays[2]);
		
		yearShamsiCurrent = Math.floor(dateHejriNow.substring(0,4));
		monthShamsiCurrent = Math.floor(dateHejriNow.substring(5,7));
		dayShamsiCurrent = Math.floor(dateHejriNow.substring(8,10));
		
		if (dateHejri.length==0 || dateHejri == "____/__/__" ) 
		{
			dateHejri = dateHejriNow;
			document.getElementById("txt"+calenderId).value = dateHejri;
		}	
		
		var enterYear  = Math.floor(dateHejri.substring(0,4));
		var enterMonth = Math.floor(dateHejri.substring(5,7));
		var enterDay  = Math.floor(dateHejri.substring(8,10));
		
		if (isNaN(enterYear))
			enterYear = yearShamsiCurrent;
		if (isNaN(enterMonth))
			enterMonth = monthShamsiCurrent;
		if (isNaN(enterDay))
			enterDay = dayShamsiCurrent;	
		
		var strYearMonthInput = enterYear + toTwoDigit(enterMonth);
		var strYearMonthNow = yearShamsiCurrent + toTwoDigit(monthShamsiCurrent);
		
		if (yearShamsiCurrent != enterYear )
		{
			while (yearShamsiCurrent!=enterYear)
			{
			//	alert(" yearShamsiCurrent = "+yearShamsiCurrent+" monthShamsiCurrent = "+monthShamsiCurrent+' strYearMonthNow = '+strYearMonthNow);
				if (yearShamsiCurrent < enterYear)
					var arrGetMonth=nextMonth(yearShamsiCurrent,monthShamsiCurrent,calenderId);
				else
					arrGetMonth=lastMonth(yearShamsiCurrent,monthShamsiCurrent,calenderId);			
				yearShamsiCurrent=arrGetMonth[1];
				monthShamsiCurrent=arrGetMonth[0];
			}	
		}
	//	alert(" yearShamsiCurrent = "+yearShamsiCurrent+" monthShamsiCurrent = "+monthShamsiCurrent+' strYearMonthNow = '+strYearMonthNow);
		if (monthShamsiCurrent != enterMonth)
		{
			while (strYearMonthInput!=strYearMonthNow)
			{
				if (monthShamsiCurrent<enterMonth)
					var arrGetMonth=nextMonth(yearShamsiCurrent,monthShamsiCurrent,calenderId);
				else 
					arrGetMonth=lastMonth(yearShamsiCurrent,monthShamsiCurrent,calenderId);
				yearShamsiCurrent=arrGetMonth[1];
				monthShamsiCurrent=arrGetMonth[0];
				strYearMonthNow=yearShamsiCurrent+toTwoDigit(monthShamsiCurrent);
			//	alert(" yearShamsiCurrent = "+yearShamsiCurrent+" monthShamsiCurrent = "+monthShamsiCurrent+' strYearMonthNow = '+strYearMonthNow);
			}	
		}
		displayCalnder(calenderId);
	}
}
///
// Call for dispaly calendar 
///
function displayCalnder(calenderId)
{
	var tblPnlCaelnder=document.getElementById("pnl"+calenderId);
	var captionCalnderId="caption"+calenderId;
	var tblCalender=document.getElementById(calenderId);
	document.getElementById("icon"+calenderId).selectIndex=1;
	tblPnlCaelnder.style.display='inline';
	var dateHejri = new String(document.getElementById("txt"+calenderId).value);
	if (dateHejri.length==0)
	{
		dateHejri = yearShamsiCurrent+"/"+toTwoDigit(monthShamsiCurrent)+"/"+toTwoDigit(dayHejriNow);
		document.getElementById("txt"+calenderId).value = dateHejri;
	}
	enterYear=Math.floor(dateHejri.substring(0,4));
	enterMonth=Math.floor(dateHejri.substring(5,7));
	var enterDay=Math.floor(dateHejri.substring(8,10));
	if (isNaN(enterYear))
		enterYear = yearShamsiCurrent;
	if (isNaN(enterMonth))
		enterMonth = monthShamsiCurrent;
	if (isNaN(enterDay))
		enterYear = dayHejriNow;	
//	alert(enterYear+' '+enterMonth+' '+enterDay);
	var theMonthLength  = arrMonthLengths[enterMonth];
	var theMonthName    = arrMonthNames[enterMonth];
	var chrSplit=/,/g;
	var strFirstDays=new String(document.getElementById("txtFirst"+calenderId).value);
//	alert(' strFirstDays = '+strFirstDays);
	var arrFirstDays=new Array();
	arrFirstDays=strFirstDays.split(chrSplit);
	
	
	var theFirstDayName = Math.floor(arrFirstDays[0]);
	document.getElementById(captionCalnderId).innerText=theMonthName+ConvertToUniCode(" lhi ")+enterYear;
	
	var row_Calender=tblCalender.insertRow();
	var numDay=0;
	for (var i=0;i<7;i++)
	{
		var cellDay = row_Calender.insertCell();
		if (i<theFirstDayName)
			cellDay.className = "calday-blank";					
		else 
		{
		    numDay++;
	        cellDay.innerText = numDay ;
	        cellDay.id=calenderId+"_"+enterYear+toTwoDigit(enterMonth)+toTwoDigit(numDay);	
	        addEventsCalendarCell(cellDay);
	        
		    if (i!=6)
		        cellDay.className = "calday-blank";
		    else //friday
			    cellDay.className = "calday-hol";
		}
		
		if (numDay==enterDay) //current day
		    cellDay.className = "calday-crt";
	}
	var firstDayNextMonth=Math.floor(arrFirstDays[1]);
	while (numDay<theMonthLength)
	{
		row_Calender=tblCalender.insertRow();
		for (var i=0;i<7;i++)
		{
			numDay++;
			var cellDay=row_Calender.insertCell();	
			cellDay.id=calenderId+"_"+enterYear+toTwoDigit(enterMonth)+toTwoDigit(numDay);
            cellDay.className = "calday-blank";
			
			if (numDay<=theMonthLength)
			{
				cellDay.innerText = numDay ;
				 if (i == 6) //friday
		            cellDay.className = "calday-hol";
				addEventsCalendarCell(cellDay);
			}	
			else
			{
				if ((numDay-1)==theMonthLength)
					firstDayNextMonth=i;
				cellDay.className = "calday-blank";	
			}	
			if (numDay==enterDay)
			{
				if (numDay==enterDay) //current day
		            cellDay.className = "calday-crt";
			}	
		}
	}
	
	var iFrame= document.getElementById("iFrame"+calenderId);
	iFrame.style.display='inline';
	iFrame.style.height = 150;
	iFrame.style.width = 200;
	
	
		
	var strValueTxtFrist = theFirstDayName+","+firstDayNextMonth+","+arrFirstDays[2]+",";
	strValueTxtFrist +=arrFirstDays[3]+","+arrFirstDays[4]+","+arrFirstDays[5];
	document.getElementById("txtFirst"+calenderId).value = strValueTxtFrist;
	
	
}

function addEventsCalendarCell(cellDay)
{
    cellDay.attachEvent("onmouseover",cell_onmouseover);
    cellDay.attachEvent("onmouseout",cell_onmouseout);
    cellDay.attachEvent("onclick",cell_onclick);
}
///
// Get first day of month 
///
function GetFirstDay(monthLength,today)
{
	var fristDayOfMonth=0;
	if((monthLength%7)>(today+1))
		fristDayOfMonth=today+8-(monthLength%7);
	else
		fristDayOfMonth=today-(monthLength%7)+1;
	return fristDayOfMonth;
}
///
// Fires when the user clicks the left mouse button on the image last month. 
///
function lastMonth_onclick(calenderId)
{
	var dateHejri =new String(document.getElementById("txt"+calenderId).value);
	var enterYear=Math.floor(dateHejri.substring(0,4));
	var enterMonth=Math.floor(dateHejri.substring(5,7));
	var enterDay=Math.floor(dateHejri.substring(8,10));
//	alert(enterYear+' '+enterMonth+' '+enterDay);
	var arrGetMonth=lastMonth(enterYear,enterMonth,calenderId);
	var dataSend=arrGetMonth[1]+"/"+toTwoDigit(arrGetMonth[0])+"/"+toTwoDigit(enterDay);
	document.getElementById("txt"+calenderId).value=dataSend;
	var tblTmp=document.getElementById(calenderId);
	var countRow=tblTmp.rows.length;
	for (var i=3;i<countRow;i++)
		tblTmp.deleteRow();	
	displayCalnder(calenderId);
	setIndexlistMonth('listMonth'+calenderId);
	setIndexlistYear('listYear'+calenderId);
}
///
// Fires when the user clicks the left mouse button on the image next month. 
///
function nextMonth_onclick(calenderId)
{
	var dateHejri =new String(document.getElementById("txt"+calenderId).value);
	var enterYear=Math.floor(dateHejri.substring(0,4));
	var enterMonth=Math.floor(dateHejri.substring(5,7));
	var enterDay=Math.floor(dateHejri.substring(8,10));
	
	var arrGetMonth = nextMonth(enterYear,enterMonth,calenderId);
	
	var dataSend=arrGetMonth[1]+"/"+toTwoDigit(arrGetMonth[0])+"/"+toTwoDigit(enterDay);
	document.getElementById("txt"+calenderId).value=dataSend;
	var tblTmp=document.getElementById(calenderId);
	var countRow=tblTmp.rows.length;
	for (var i=3;i<countRow;i++)
		tblTmp.deleteRow();	
	displayCalnder(calenderId);
	setIndexlistMonth('listMonth'+calenderId);
	setIndexlistYear('listYear'+calenderId);
}

///
// Calculate leap-year 
///
function kabiseYear(year)
{
	if(((year-1303)%4)!=0)
		arrMonthLengths[12]=29;
	else
		arrMonthLengths[12]=30;
}
///
// Calculate next year
///
function nextMonth(year,month,calenderId)
{
	var arrRetrun=new Array();
	month++;
	if (month==13)
	{
		month=1;
		year=nextYear(year);
	}
	arrRetrun[0]=month;
	arrRetrun[1]=year;
	var chrSplit=/,/g;
	var strFirstDays=new String(document.getElementById("txtFirst"+calenderId).value);
	
	var arrFirstDays=new Array();
	arrFirstDays=strFirstDays.split(chrSplit);
	var theFirstDayName = Math.floor(arrFirstDays[0]);
			
	var strValueTxtFrist = arrFirstDays[1]+",0,"+arrFirstDays[2]+",";
	strValueTxtFrist +=arrFirstDays[3]+","+arrFirstDays[4]+","+arrFirstDays[5];
	
	document.getElementById("txtFirst"+calenderId).value= strValueTxtFrist;
	
	
	return arrRetrun;
}
///
// Calculate last year
///
function lastMonth(year,month,calenderId)
{
	var arrRetrun=new Array();
	month--;
	if (month==0)
	{
		month=12;
		year=lastYear(year);
	}
	arrRetrun[0]=month;
	arrRetrun[1]=year;
	var chrSplit=/,/g;
	var strFirstDays=new String(document.getElementById("txtFirst"+calenderId).value);
	var arrFirstDays=new Array();
	arrFirstDays=strFirstDays.split(chrSplit);
	var theFirstDayName = Math.floor(arrFirstDays[0]);
	if(theFirstDayName==0)
		theFirstDayName=GetFirstDay(arrMonthLengths[month],6);
	else
		theFirstDayName=GetFirstDay(arrMonthLengths[month],theFirstDayName-1);
		
	var strValueTxtFrist = theFirstDayName+",0,"+arrFirstDays[2]+",";
	strValueTxtFrist +=arrFirstDays[3]+","+arrFirstDays[4]+","+arrFirstDays[5];	
	
	document.getElementById("txtFirst"+calenderId).value = strValueTxtFrist;

	return arrRetrun;
}
///
// Get next year
///

function nextYear(year)
{
	year++;
	kabiseYear(year);
	return year;
}
///
// Get last year
///
function lastYear(year)
{
	year--;
	kabiseYear(year);
	return year;
}
///
// Convert item input to twodigit 
///
function toTwoDigit(item)
{
	if (item<10)
		return '0'+item;
	else
		return	String(item);
}
///
// Call when close calendar 
///	
function closeCalnedar(calenderId)
{
	
	var calenderSelect=document.getElementById(calenderId);
	var countRow=calenderSelect.rows.length;
	for (var i=3;i<countRow;i++)	
		calenderSelect.deleteRow();
	document.getElementById("icon"+calenderId).selectIndex=0;	
	var tblPnlCaelnder=document.getElementById("pnl"+calenderId);
	tblPnlCaelnder.style.display='none';
	var iFrame= document.getElementById("iFrame"+calenderId);
	iFrame.style.display='none';
	showHideSelectDate('menuSelectDate'+calenderId,true);
	
}	
///
// Call for show and hidden menu select date
///
function showHideSelectDate(menuSelectID,mustClose)
{

  
	var strIDContrl = new String(menuSelectID);
	
	strIDContrl = strIDContrl.substring(strIDContrl.indexOf("_")+1,strIDContrl.length);
	if (document.getElementById(menuSelectID).style.display == 'none' & !mustClose)
	{
		document.getElementById(menuSelectID).style.display = 'inline';
		
		document.getElementById('imgeHideShowcalender_'+strIDContrl).src = imageFolder + "DateHide.gif";
		document.getElementById('listYearcalender_'+strIDContrl).selectedIndex = getIndexListBox('listYearcalender_'+strIDContrl,enterYear);
		document.getElementById('listMonthcalender_'+strIDContrl).selectedIndex = enterMonth -1;
	}
	else
	{
		document.getElementById(menuSelectID).style.display = 'none';
		document.getElementById('imgeHideShowcalender_'+strIDContrl).src = imageFolder + "DateShow.gif";		
	}
	
	
}

///
// Returns the item position within a listitem 
///
function getIndexListBox(listId,itemSearch)
{
	var arrItemList = new Array();
	arrItemList = document.getElementById(listId).options;
	for (var i=0;i<arrItemList.length;i++)		
	{
		if (arrItemList[i].text == itemSearch)
			return i;
	}
	return 0;
}
///
// Call for set value textbox date when change year
///
function setYearSelect(listYearId)
{
	var calenderId = new String(listYearId);
	calenderId = calenderId.substring(calenderId.indexOf("_")+1,calenderId.length);
	var strDateNow = new  String(document.getElementById("txtcalender_"+calenderId).value);
	var strYearCurrent = strDateNow.substring(0,4);
	var strYearSelect = document.getElementById(listYearId).options[document.getElementById(listYearId).selectedIndex].text;
	document.getElementById("txtcalender_"+calenderId).value = strDateNow.replace(strYearCurrent,strYearSelect);
}
///
// Call for set value textbox date when change month
///
function setMonthSelect(listMonthId)
{
	var calenderId = new String(listMonthId);
	calenderId = calenderId.substring(calenderId.indexOf("_")+1,calenderId.length);
	var strDateNow = new  String(document.getElementById("txtcalender_"+calenderId).value);
	var strMonthCurrent = strDateNow.substr(5,2);
	var indexMonth = document.getElementById(listMonthId).selectedIndex;
	indexMonth = toTwoDigit(indexMonth+1);
	document.getElementById("txtcalender_"+calenderId).value = strDateNow.replace(strMonthCurrent,indexMonth);
}
///
// Fires when the user clicks the left mouse button on the image select date.
///
function selectDate_onclick(selectDateId)
{
	var ctrlId = new String(selectDateId);
	var calenderId = ctrlId.substring(ctrlId.indexOf("calender"),ctrlId.length);
	ctrlId = ctrlId.substring(ctrlId.indexOf("_")+1,ctrlId.length);
	var listYearId = "listYearcalender_"+ctrlId;
	var listMonthId = "listMonthcalender_"+ctrlId;
	setYearSelect(listYearId);
	setMonthSelect(listMonthId);
	closeCalnedar(calenderId);
	checkDateInput(calenderId);
		
}
///
// Call for set index list month
///
function setIndexlistMonth(listMonthId)
{
	var ctrlId = new String(listMonthId);
	ctrlId = ctrlId.substring(ctrlId.indexOf("_")+1,ctrlId.length);
	var strCurrentDate = new String(document.getElementById("txtcalender_"+ctrlId).value);
	var monthCurrent = Math.floor(strCurrentDate.substr(5,2));
//	alert(monthCurrent);
	document.getElementById(listMonthId).selectedIndex = monthCurrent - 1;
}
///
// Call for set index list year
///
function setIndexlistYear(listYearId)
{
	var ctrlId = new String(listYearId);
	ctrlId = ctrlId.substring(ctrlId.indexOf("_")+1,ctrlId.length);
	var strCurrentDate = new String(document.getElementById("txtcalender_"+ctrlId).value);
	var yearCurrent = Math.floor(strCurrentDate.substr(0,4));
	//alert(yearCurrent);
	document.getElementById(listYearId).selectedIndex = getIndexListBox(listYearId,yearCurrent);
}

///
// Convert value to unicode
///
function ConvertToUniCode(value)
{
	var arrayFontFarsi=new Array(32,33,34,35,36,37,1548,1711,41,40,
	215,43,1608,45,46,47,1776,1777,1778,1779,1780,1781,1782,1783,1784,1785,
	58,1603,44,61,46,1567,64,1616,1584,125,1609,1615,
	1609,1604,1570,247,1600,1548,47,8217,1583,215,1563,
	1614,1569,1613,1601,8216,123,1611,1618,1573,126,1580,
	1688,1670,94,95,1662,1588,1584,1586,1610,1579,1576,
	1604,1575,1607,1578,1606,1605,1574,1583,1582,1581,
	1590,1602,1587,1601,1593,1585,1589,1591,1594,1592,
	60,124,62,1617);
	var strInput=new String(value);
	strInput=strInput.toLowerCase();
	var strUniCode=new String();
	for (var i=0;i<strInput.length;i++)
	{
		var charCode=strInput.charCodeAt(i);
		var uniCode=arrayFontFarsi[charCode-32];
		strUniCode+=String.fromCharCode(uniCode);
	}	
	return strUniCode;
}			

