
﻿
var datePickerDivID="datepicker";var iFrameDivID="datepickeriframe";var dayArrayShort=new Array('&#1588;','&#1740;','&#1583;','&#1587;','&#1670;','&#1662;','&#1580;');var dayArrayMed=new Array('&#1588;&#1606;&#1576;&#1607;','&#1740;&#1705;&#1588;&#1606;&#1576;&#1607;','&#1583;&#1608;&#1588;&#1606;&#1576;&#1607;','&#1587;&#1607;&#32;&#1588;&#1606;&#1576;&#1607;','&#1670;&#1607;&#1575;&#1585;&#1588;&#1606;&#1576;&#1607;','&#1662;&#1606;&#1580;&#1588;&#1606;&#1576;&#1607;','&#1580;&#1605;&#1593;&#1607;');var dayArrayLong=dayArrayMed;var monthArrayShort=new Array('&#1601;&#1585;&#1608;&#1585;&#1583;&#1740;&#1606;','&#1575;&#1585;&#1583;&#1740;&#1576;&#1607;&#1588;&#1578;','&#1582;&#1585;&#1583;&#1575;&#1583;','&#1578;&#1740;&#1585;','&#1605;&#1585;&#1583;&#1575;&#1583;','&#1588;&#1607;&#1585;&#1740;&#1608;&#1585;','&#1605;&#1607;&#1585;','&#1570;&#1576;&#1575;&#1606;','&#1570;&#1584;&#1585;','&#1583;&#1740;','&#1576;&#1607;&#1605;&#1606;','&#1575;&#1587;&#1601;&#1606;&#1583;');var monthArrayMed=monthArrayShort;var monthArrayLong=monthArrayShort;var defaultDateSeparator="/";var defaultDateFormat="ymd"
var dateSeparator=defaultDateSeparator;var dateFormat=defaultDateFormat;function displayDatePicker(dateFieldName,displayBelowThisObject,dtFormat,dtSep){var targetDateField=document.getElementById(dateFieldName);if(!displayBelowThisObject)
displayBelowThisObject=targetDateField;if(dtSep)
dateSeparator=dtSep;else
dateSeparator=defaultDateSeparator;if(dtFormat)
dateFormat=dtFormat;else
dateFormat=defaultDateFormat;var x=displayBelowThisObject.offsetLeft;var y=displayBelowThisObject.offsetTop+displayBelowThisObject.offsetHeight;var parent=displayBelowThisObject;while(parent.offsetParent){parent=parent.offsetParent;x+=parent.offsetLeft;y+=parent.offsetTop;}
x=$("#"+dateFieldName).offset().left-80;y=$("#"+dateFieldName).offset().top+$("#"+dateFieldName).height();drawDatePicker(targetDateField,x,y);}
function drawDatePicker(targetDateField,x,y){var dt=getFieldDate(targetDateField.value);if(!document.getElementById(datePickerDivID)){var newNode=document.createElement("div");newNode.setAttribute("id",datePickerDivID);newNode.setAttribute("class","dpDiv");newNode.setAttribute("style","visibility: hidden;");document.body.appendChild(newNode);}
var pickerDiv=document.getElementById(datePickerDivID);pickerDiv.style.position="absolute";pickerDiv.style.left=x+"px";pickerDiv.style.top=y+"px";pickerDiv.style.visibility=(pickerDiv.style.visibility=="visible"?"hidden":"visible");pickerDiv.style.display=(pickerDiv.style.display=="block"?"none":"block");pickerDiv.style.zIndex=10000000;refreshDatePicker(targetDateField.id,dt[0],dt[1],dt[2]);}
function refreshDatePicker(dateFieldName,year,month,day){var thisDay=getTodayPersian();var weekday=(thisDay[3]-thisDay[2]+1)%7;if(!day)
day=1;if((month>=1)&&(year>0)){thisDay=calcPersian(year,month,1);weekday=thisDay[3];thisDay=new Array(year,month,day,weekday);thisDay[2]=1;}else{day=thisDay[2];thisDay[2]=1;}
var crlf="\r\n";var TABLE="<table cols='7' id='PCal' class='ui-widget-content ui-corner-all'  cellspacing='2px' cellpadding='2px'>"+crlf;var xTABLE="</table>"+crlf;var TR="<tr class='dpTR'>";var TR_title="<tr>";var TR_days="<tr class='dpDayTR'>";var TR_todaybutton="<tr class='dpTodayButtonTR'>";var xTR="</tr>"+crlf;var TD="<td class='dpTD' name='days'";var TD_title="<td colspan=5 class='dpTitleTD'>";var TD_buttons="<td class='dpButtonTD' width='10%'>";var TD_todaybutton="<td colspan=7 class='dpTodayButtonTD'><hr/>";var TD_days="<td class='dpDayTD'>";var TD_selected="<td  class='ui-state-error' onMouseOut='this.className=\"ui-state-error\";' onMouseOver='this.className=\"ui-state-default\";' ";var xTD="</td>"+crlf;var DIV_title="<div class='dpTitleText'>";var DIV_selected="<div class='dpDayHighlight'>";var xDIV="</div>";var html=TABLE;html+="<tr class='dpTitleTR'><td colspan='7' valign='top'><table width='100%' cellspacing='0px' cellpadding='0px'>"
html+=TR_title;html+=TD_buttons+getButtonCodeYear(dateFieldName,thisDay,-1,"&lt;&lt;")+xTD;html+=TD_buttons+getButtonCode(dateFieldName,thisDay,-1,"&lt;")+xTD;html+=TD_title+DIV_title+monthArrayLong[thisDay[1]-1]+thisDay[0]+xDIV+xTD;html+=TD_buttons+getButtonCode(dateFieldName,thisDay,1,"&gt;")+xTD;html+=TD_buttons+getButtonCodeYear(dateFieldName,thisDay,1,"&gt;&gt;")+xTD;html+=xTR;html+="</table></td></tr>"
html+=TR_days;var i;for(i=0;i<dayArrayShort.length;i++)
html+=TD_days+dayArrayShort[i]+xTD;html+=xTR;html+=TR;if(weekday!=6)
for(i=0;i<=weekday;i++)
html+=TD+"&nbsp;"+xTD;var len=31;if(thisDay[1]>6)
len=30;if(thisDay[1]==12&&!leap_persian(thisDay[0]))
len=29;for(var dayNum=thisDay[2];dayNum<=len;dayNum++){TD_onclick=" onclick=\"updateDateField('"+dateFieldName+"', '"+getDateString(thisDay)+"');\">";if(dayNum==day)
html+=TD_selected+TD_onclick+DIV_selected+dayNum+xDIV+xTD;else
html+=TD+TD_onclick+dayNum+xTD;if(weekday==5)
html+=xTR+TR;weekday++;weekday=weekday%7;thisDay[2]++;}
if(weekday>0){for(i=6;i>weekday;i--)
html+=TD+"&nbsp;"+xTD;}
html+=xTR;html+=TR_todaybutton+TD_todaybutton;var today=getTodayPersian();html+="<button class='dpTodayButton' onClick='refreshDatePicker(\""+dateFieldName+"\", "
+today[0]+", "+today[1]+", "+today[2]+");'>&#1575;&#1605;&#1585;&#1608;&#1586;</button> ";html+="<button class='dpTodayButton' onClick='updateDateField(\""+dateFieldName+"\");'>&#1576;&#1587;&#1578;&#1606;</button>";html+=xTD+xTR;html+=xTABLE;document.getElementById(datePickerDivID).innerHTML=html;adjustiFrame();$('#PCal button').eq(0).button({icons:{primary:'ui-icon-carat-1-e',secondary:'ui-icon-carat-1-e'},text:false});$('#PCal button').eq(1).button({icons:{primary:'ui-icon-carat-1-e'},text:false});$('#PCal button').eq(2).button({icons:{primary:'ui-icon-carat-1-w'},text:false});$('#PCal button').eq(3).button({icons:{primary:'ui-icon-carat-1-w',secondary:'ui-icon-carat-1-w'},text:false});$('#PCal button').eq(4).button();$('#PCal button').eq(5).button({icons:{primary:'ui-icon-close'}});$('#PCal td[name=days]').addClass('ui-widget-content').css('cursor','pointer').hover(function(){$(this).addClass('ui-state-hover');},function(){$(this).removeClass('ui-state-hover');});}
function getButtonCode(dateFieldName,dateVal,adjust,label){var newMonth=(dateVal[1]+adjust)%12;var newYear=dateVal[0]+parseInt((dateVal[1]+adjust)/12);if(newMonth<1){newMonth+=12;newYear+=-1;}
return"<button class='dpButton' onClick='refreshDatePicker(\""+dateFieldName+"\", "
+newYear+", "+newMonth+");'>"+label+"</button>";}
function getButtonCodeYear(dateFieldName,dateVal,adjust,label){var newMonth=dateVal[1];var newYear=(dateVal[0]+adjust);return"<button class='dpButton' onClick='refreshDatePicker(\""+dateFieldName+"\", "
+newYear+", "+newMonth+");'>"+label+"</button>";}
function getDateString(dateVal){var dayString="00"+dateVal[2];var monthString="00"+(dateVal[1]);dayString=dayString.substring(dayString.length-2);monthString=monthString.substring(monthString.length-2);switch(dateFormat){case"dmy":return dayString+dateSeparator+monthString+dateSeparator+dateVal[0];case"ymd":return dateVal[0]+dateSeparator+monthString+dateSeparator+dayString;case"mdy":default:return monthString+dateSeparator+dayString+dateSeparator+dateVal[0];}}
function getFieldDate(dateString){var dateVal;var dArray;var d,m,y;try{dArray=splitDateString(dateString);if(dArray){switch(dateFormat){case"dmy":d=parseInt(dArray[0],10);m=parseInt(dArray[1],10);y=parseInt(dArray[2],10);break;case"ymd":d=parseInt(dArray[2],10);m=parseInt(dArray[1],10);y=parseInt(dArray[0],10);break;case"mdy":default:d=parseInt(dArray[1],10);m=parseInt(dArray[0],10);y=parseInt(dArray[2],10);break;}
dateVal=new Array(y,m,d);}else if(dateString){dateVal=getTodayPersian();}else{dateVal=getTodayPersian();}}catch(e){dateVal=getTodayPersian();}
return dateVal;}
function splitDateString(dateString){var dArray;if(dateString.indexOf("/")>=0)
dArray=dateString.split("/");else if(dateString.indexOf(".")>=0)
dArray=dateString.split(".");else if(dateString.indexOf("-")>=0)
dArray=dateString.split("-");else if(dateString.indexOf("\\")>=0)
dArray=dateString.split("\\");else
dArray=false;return dArray;}
function updateDateField(dateFieldName,dateString){var targetDateField=document.getElementById(dateFieldName);if(dateString)
targetDateField.value=dateString;var pickerDiv=document.getElementById(datePickerDivID);pickerDiv.style.visibility="hidden";pickerDiv.style.display="none";adjustiFrame();targetDateField.focus();if((dateString)&&(typeof(datePickerClosed)=="function"))
datePickerClosed(targetDateField);}
function adjustiFrame(pickerDiv,iFrameDiv){var is_opera=(navigator.userAgent.toLowerCase().indexOf("opera")!=-1);if(is_opera)
return;try{if(!document.getElementById(iFrameDivID)){var newNode=document.createElement("iFrame");newNode.setAttribute("id",iFrameDivID);newNode.setAttribute("src","javascript:false;");newNode.setAttribute("scrolling","no");newNode.setAttribute("frameborder","0");document.body.appendChild(newNode);}
if(!pickerDiv)
pickerDiv=document.getElementById(datePickerDivID);if(!iFrameDiv)
iFrameDiv=document.getElementById(iFrameDivID);try{iFrameDiv.style.position="absolute";iFrameDiv.style.width=pickerDiv.offsetWidth;iFrameDiv.style.height=pickerDiv.offsetHeight;iFrameDiv.style.top=pickerDiv.style.top;iFrameDiv.style.left=pickerDiv.style.left;iFrameDiv.style.zIndex=pickerDiv.style.zIndex-1;iFrameDiv.style.visibility=pickerDiv.style.visibility;iFrameDiv.style.display=pickerDiv.style.display;}catch(e){}}catch(ee){}}
function mod(a,b){return a-(b*Math.floor(a/b));}
function jwday(j){return mod(Math.floor((j+1.5)),7);}
var Weekdays=new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");function leap_gregorian(year){return((year%4)==0)&&(!(((year%100)==0)&&((year%400)!=0)));}
var GREGORIAN_EPOCH=1721425.5;function gregorian_to_jd(year,month,day){return(GREGORIAN_EPOCH-1)+
(365*(year-1))+
Math.floor((year-1)/4)+
(-Math.floor((year-1)/100))+
Math.floor((year-1)/400)+
Math.floor((((367*month)-362)/12)+
((month<=2)?0:(leap_gregorian(year)?-1:-2))+
day);}
function jd_to_gregorian(jd){var wjd,depoch,quadricent,dqc,cent,dcent,quad,dquad,yindex,dyindex,year,yearday,leapadj;wjd=Math.floor(jd-0.5)+0.5;depoch=wjd-GREGORIAN_EPOCH;quadricent=Math.floor(depoch/146097);dqc=mod(depoch,146097);cent=Math.floor(dqc/36524);dcent=mod(dqc,36524);quad=Math.floor(dcent/1461);dquad=mod(dcent,1461);yindex=Math.floor(dquad/365);year=(quadricent*400)+(cent*100)+(quad*4)+yindex;if(!((cent==4)||(yindex==4))){year++;}
yearday=wjd-gregorian_to_jd(year,1,1);leapadj=((wjd<gregorian_to_jd(year,3,1))?0:(leap_gregorian(year)?1:2));month=Math.floor((((yearday+leapadj)*12)+373)/367);day=(wjd-gregorian_to_jd(year,month,1))+1;return new Array(year,month,day);}
function leap_persian(year){return((((((year-((year>0)?474:473))%2820)+474)+38)*682)%2816)<682;}
var PERSIAN_EPOCH=1948320.5;var PERSIAN_WEEKDAYS=new Array("يکشنبه","دوشنبه","سه شنبه","چهارشنبه","پنج شنبه","جمعه","شنبه");function persian_to_jd(year,month,day){var epbase,epyear;epbase=year-((year>=0)?474:473);epyear=474+mod(epbase,2820);return day+
((month<=7)?((month-1)*31):(((month-1)*30)+6))+
Math.floor(((epyear*682)-110)/2816)+
(epyear-1)*365+
Math.floor(epbase/2820)*1029983+
(PERSIAN_EPOCH-1);}
function jd_to_persian(jd){var year,month,day,depoch,cycle,cyear,ycycle,aux1,aux2,yday;jd=Math.floor(jd)+0.5;depoch=jd-persian_to_jd(475,1,1);cycle=Math.floor(depoch/1029983);cyear=mod(depoch,1029983);if(cyear==1029982){ycycle=2820;}else{aux1=Math.floor(cyear/366);aux2=mod(cyear,366);ycycle=Math.floor(((2134*aux1)+(2816*aux2)+2815)/1028522)+
aux1+1;}
year=ycycle+(2820*cycle)+474;if(year<=0){year--;}
yday=(jd-persian_to_jd(year,1,1))+1;month=(yday<=186)?Math.ceil(yday/31):Math.ceil((yday-6)/30);day=(jd-persian_to_jd(year,month,1))+1;return new Array(year,month,day);}
function calcPersian(year,month,day){var date,j;j=persian_to_jd(year,month,day);date=jd_to_gregorian(j);weekday=jwday(j);return new Array(date[0],date[1],date[2],weekday);}
function calcGregorian(year,month,day){month--;var j,weekday;j=gregorian_to_jd(year,month+1,day)+
(Math.floor(0+60*(0+60*0)+0.5)/86400.0);perscal=jd_to_persian(j);weekday=jwday(j);return new Array(perscal[0],perscal[1],perscal[2],weekday);}
function getTodayGregorian(){var t=new Date();var today=new Date();var y=today.getYear();if(y<1000){y+=1900;}
return new Array(y,today.getMonth()+1,today.getDate(),t.getDay());}
function getTodayPersian(){var t=new Date();var today=getTodayGregorian();var persian=calcGregorian(today[0],today[1],today[2]);return new Array(persian[0],persian[1],persian[2],t.getDay());}
Date.prototype.getDayName=function(){var d=['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'];return d[this.getDay()];}
function getTodayPersianStr(){var months=new Array('فروردین','اردیبهشت','خرداد','تیر','مرداد','شهریور','مهر','آبان','آذر','دی','بهمن','اسفند');var GrDayName=(new Date()).getDayName();var PDayNam='';switch(GrDayName){case'Saturday':PDayNam='شنبه';break;case'Sunday':PDayNam='یکشنبه';break;case'Monday':PDayNam='دوشنبه';break;case'Tuesday':PDayNam='سه شنبه';break;case'Wednesday':PDayNam='چهارشنبه';break;case'Thursday':PDayNam='پنج شنبه';break;case'Friday':PDayNam='جمعه';break;}
var PDate=getTodayPersian();return PDayNam+' '+PDate[2]+' '+months[PDate[1]-1]+' '+PDate[0];}
