function _gregorian_to_islamic(g_y,g_m,g_d){this.intPart=_intPart;if((g_y>1582)||((g_y==1582)&&(g_m>10))||((g_y==1582)&&(g_m==10)&&(g_d>14)))
{jd=this.intPart((1461*(g_y+4800+this.intPart((g_m-14)/12)))/4)+this.intPart((367*(g_m-2-12*(this.intPart((g_m-14)/12))))/12)-
this.intPart((3*(this.intPart((g_y+4900+this.intPart((g_m-14)/12))/100)))/4)+g_d-32075}
else
{jd=367*g_y-this.intPart((7*(g_y+5001+this.intPart((g_m-9)/7)))/4)+this.intPart((275*g_m)/9)+g_d+1729777}
l=jd-1948440+10632
n=this.intPart((l-1)/10631)
l=l-10631*n+354
j=(this.intPart((10985-l)/5316))*(this.intPart((50*l)/17719))+(this.intPart(l/5670))*(this.intPart((43*l)/15238))
l=l-(this.intPart((30-j)/15))*(this.intPart((17719*j)/50))-(this.intPart(j/16))*(this.intPart((15238*j)/43))+29
i_m=this.intPart((24*l)/709)
i_d=l-this.intPart((709*i_m)/24)
i_y=30*n+j-30
return Array(i_y,i_m,i_d)}
function _islamic_to_gregorian(i_y,i_m,i_d){this.intPart=_intPart;jd=this.intPart((11*i_y+3)/30)+354*i_y+30*i_m-this.intPart((i_m-1)/2)+i_d+1948440-385
if(jd>2299160)
{l=jd+68569
n=this.intPart((4*l)/146097)
l=l-this.intPart((146097*n+3)/4)
i=this.intPart((4000*(l+1))/1461001)
l=l-this.intPart((1461*i)/4)+31
j=this.intPart((80*l)/2447)
g_d=l-this.intPart((2447*j)/80)
l=this.intPart(j/11)
g_m=j+2-12*l
g_y=100*(n-49)+i+l}
else
{j=jd+1402
k=this.intPart((j-1)/1461)
l=j-1461*k
n=this.intPart((l-1)/365)-this.intPart(l/1461)
i=l-365*n+30
j=this.intPart((80*i)/2447)
g_d=i-this.intPart((2447*j)/80)
i=this.intPart(j/11)
g_m=j+2-12*i
g_y=4*k+n+i-4716}
return Array(g_y,g_m,g_d,jd)}
function _gregorian_to_jalali(g_y,g_m,g_d){g_days_in_month=new Array(31,28,31,30,31,30,31,31,30,31,30,31);j_days_in_month=new Array(31,31,31,31,31,31,30,30,30,30,30,29);gy=g_y-1600;gm=g_m-1;gd=g_d-1;this.div=_div;g_day_no=365*gy+this.div(gy+3,4)-this.div(gy+99,100)+this.div(gy+399,400);for(i=0;i<gm;++i)g_day_no+=g_days_in_month[i];if(gm>1&&((gy%4==0&&gy%100!=0)||(gy%400==0)))
g_day_no++;g_day_no+=gd;j_day_no=g_day_no-79;j_np=this.div(j_day_no,12053);j_day_no=j_day_no%12053;jy=979+33*j_np+4*this.div(j_day_no,1461);j_day_no%=1461;if(j_day_no>=366){jy+=this.div(j_day_no-1,365);j_day_no=(j_day_no-1)%365;}
for(i=0;i<11&&j_day_no>=j_days_in_month[i];++i)
j_day_no-=j_days_in_month[i];jm=i+1;jd=j_day_no+1;return Array(jy,jm,jd)}
function _jalali_to_gregorian(j_y,j_m,j_d){g_days_in_month=new Array(31,28,31,30,31,30,31,31,30,31,30,31);g_days_in_month_kabise=new Array(31,28,31,30,31,30,31,31,30,31,30,31);j_days_in_month=new Array(31,31,31,31,31,31,30,30,30,30,30,29);j_days_in_month_kabise=new Array(31,31,31,31,31,31,30,30,30,30,30,30);jy=j_y-979;jm=j_m-1;jd=j_d-1;j_day_no=365*jy+this.div(jy,33)*8+this.div(jy%33+3,4);for(i=0;i<jm;++i)
j_day_no+=j_days_in_month[i];j_day_no+=jd;g_day_no=j_day_no+79;gy=1600+400*this.div(g_day_no,146097);g_day_no=g_day_no%146097;leap=true;if(g_day_no>=36525)
{g_day_no--;gy+=100*this.div(g_day_no,36524);g_day_no=g_day_no%36524;if(g_day_no>=365)
g_day_no++;else
leap=false;}
gy+=4*this.div(g_day_no,1461);g_day_no%=1461;if(g_day_no>=366){leap=false;g_day_no--;gy+=this.div(g_day_no,365);g_day_no=g_day_no%365;}
for(i=0;g_day_no>=g_days_in_month[i]+(i==1&&leap);i++)
g_day_no-=g_days_in_month[i]+(i==1&&leap);gm=i+1;gd=g_day_no+1;return Array(gy,gm,gd);}
function chbg(id,divCal){document.getElementById(divCal+"_"+id).bgColor="#efefff"}
function nbg(id,divCal){document.getElementById(divCal+"_"+id).bgColor=""}
function _div(a,b){return(Math.floor(a/b));}
function _intPart(floatNum){if(floatNum<-0.0000001){return Math.ceil(floatNum-0.0000001)}
return Math.floor(floatNum+0.0000001)}
function ltrim(str,chars)
{chars=chars||"\\s";return str.replace(new RegExp("^["+chars+"]+","g"),"");}
function sind(x){return(Math.sin(Math.PI/180.0*x));}
function cosd(x){return(Math.cos(Math.PI/180.0*x));}
function tand(x){return(Math.tan(Math.PI/180.0*x));}
function atand(x){return(Math.atan(x)*180.0/Math.PI);}
function asind(x){return(Math.asin(x)*180.0/Math.PI);}
function acosd(x){return(Math.acos(x)*180.0/Math.PI);}
function sqrt(x){return(Math.sqrt(x));}
function frac(x){return(x%1);}
function floor(x){return(Math.floor(x));}
function ceil(x){return(Math.ceil(x));}
function loc2hor(z,d,p)
{return(acosd((cosd(z)-sind(d)*sind(p))/cosd(d)/cosd(p))/15);}
function Round(x,a)
{var tmp=x%a;if(tmp<0)
tmp+=a;return(tmp)}
function owghat(ClientID)
{this.ClientID="";this.ClientID=ClientID;this.longitude=0;this.latitude=0;this.city=0;this.datePicker;this.Cultcure='fa-IR';this.SetCultcure=_SetCultcure;this.getDataDate=_getDataDate;this.main=_main;this.sun=_sun;this.SetSharie=_SetSharie;this.coord=_coord;this.hms=_hms;}
function _SetCultcure(cul,datepicker)
{Cultcure=cul;Today=new Date();var _date;switch(Cultcure)
{case'fa-IR':_date=_gregorian_to_jalali(Today.getFullYear(),parseInt(Today.getMonth()+1),Today.getDate());break;case'ar-SA':_date=_gregorian_to_islamic(Today.getFullYear(),parseInt(Today.getMonth()+1),Today.getDate());break;default:_date=Array(Today.getFullYear(),parseInt(Today.getMonth()+1),Today.getDate());break;}
datepicker.value=_date[0]+"-"+(parseInt(_date[1]))+"-"+_date[2];}
function _getDataDate(date)
{if(date=='')
{Today=new Date();_date=_gregorian_to_jalali(Today.getFullYear(),Today.getMonth()+1,Today.getDate());return _date[0]+"-"+(parseInt(_date[1])+1)+"-"+_date[2];}
else
{if(Cultcure=='fa-IR'){return date.split("-")}
if(Cultcure=='ar-SA')
{_date=date.split("-");if(_date[1]<10)_date[1]=ltrim(_date[1],'0');_date=_islamic_to_gregorian(parseInt(_date[0]),parseInt(_date[1]),parseInt(_date[2]));_date=_gregorian_to_jalali(parseInt(_date[0]),parseInt(_date[1]),parseInt(_date[2]));return _date;}
else
{_date=date.split("-");_date=_gregorian_to_jalali(parseInt(_date[0]),parseInt(ltrim(_date[1],'0')),parseInt(_date[2]));return _date;}}}
function _main()
{date=this.datePicker.value;var i=document.getElementById("cities"+this.ClientID).selectedIndex;if(i==0)
return
date=this.getDataDate(date);var m=parseInt(date[1],10);var d=parseInt(date[2],10);var lg=this.longitude;var lat=this.latitude;var ep=this.sun(m,d,4,lg)
var zr=ep[0];delta=ep[1];ha=loc2hor(108.0,delta,lat)
var t1=Round(zr-ha,24)
ep=this.sun(m,d,t1,lg)
zr=ep[0];delta=ep[1];ha=loc2hor(108.0,delta,lat)
var t1=Round(zr-ha,24)
document.getElementById("t1"+this.ClientID).innerHTML=this.hms(t1,m);ep=this.sun(m,d,6,lg)
zr=ep[0];delta=ep[1];ha=loc2hor(90.833,delta,lat)
var t2=Round(zr-ha,24)
ep=this.sun(m,d,t2,lg)
zr=ep[0];delta=ep[1];ha=loc2hor(90.833,delta,lat)
t2=Round(zr-ha,24)
document.getElementById("t2"+this.ClientID).innerHTML=this.hms(t2,m);ep=this.sun(m,d,12,lg)
ep=this.sun(m,d,ep[0],lg)
zr=ep[0];document.getElementById("zr"+this.ClientID).innerHTML=this.hms(zr,m);ep=this.sun(m,d,18,lg)
zr=ep[0];delta=ep[1];ha=loc2hor(90.833,delta,lat)
var t3=Round(zr+ha,24)
ep=this.sun(m,d,t3,lg)
zr=ep[0];delta=ep[1];ha=loc2hor(90.833,delta,lat)
t3=Round(zr+ha,24)
document.getElementById("t3"+this.ClientID).innerHTML=this.hms(t3,m);ep=this.sun(m,d,18.5,lg)
zr=ep[0];delta=ep[1];ha=loc2hor(94.3,delta,lat)
var t4=Round(zr+ha,24)
ep=this.sun(m,d,t4,lg)
zr=ep[0];delta=ep[1];ha=loc2hor(94.3,delta,lat)
t4=Round(zr+ha,24)
document.getElementById("t4"+this.ClientID).innerHTML=this.hms(t4,m);}
function _sun(m,d,h,lg)
{if(m<7)
d=31*(m-1)+d+h/24;else
d=6+30*(m-1)+d+h/24;var M=74.2023+0.98560026*d;var L=-2.75043+0.98564735*d;var lst=8.3162159+0.065709824*Math.floor(d)+1.00273791*24*(d%1)+lg/15;var e=0.0167065;var omega=4.85131-0.052954*d;var ep=23.4384717+0.00256*cosd(omega);var ed=180.0/Math.PI*e;var u=M;for(var i=1;i<5;i++)
u=u-(u-ed*sind(u)-M)/(1-e*cosd(u));var v=2*atand(tand(u/2)*Math.sqrt((1+e)/(1-e)));var theta=L+v-M-0.00569-0.00479*sind(omega);var delta=asind(sind(ep)*sind(theta));var alpha=180.0/Math.PI*Math.atan2(cosd(ep)*sind(theta),cosd(theta));if(alpha>=360)
alpha-=360;var ha=lst-alpha/15;var zr=Round(h-ha,24);return([zr,delta])}
function _SetSharie(id)
{document.getElementById('cities'+this.ClientID).selectedIndex=(parseInt(id));this.coord();this.main(this.datePicker);}
function _coord()
{lgs=[0,49.70,48.30,45.07,51.64,48.68,46.42,57.33,56.29,50.84,59.21,46.28,51.41,48.34,49.59,60.86,48.50,53.06,53.39,47.00,50.86,52.52,50.00,50.88,57.06,47.09,54.44,59.58,48.52,51.59,54.35];lats=[0,34.09,38.25,37.55,32.68,31.32,33.64,37.47,27.19,28.97,32.86,38.08,35.70,33.46,37.28,29.50,36.68,36.57,35.58,35.31,32.33,29.62,36.28,34.64,30.29,34.34,36.84,36.31,34.80,30.67,31.89];var c=document.getElementById("cities"+this.ClientID);var i=c.selectedIndex;if(i==0)
{this.longitude=0;this.latitude=0;}
else
{this.longitude=lgs[i].toString()
this.latitude=lats[i].toString()}}
function _hms(x,month)
{x=Math.floor(3600*x);h=Math.floor(x/3600);mp=x-3600*h;m=Math.floor(mp/60);s=Math.floor(mp-60*m);if(month<7)
h=h+1;return(((h<10)?"0":"")+h.toString()+":"+((m<10)?"0":"")+m.toString()+":"+((s<10)?"0":"")+s.toString())}
