
HGDatesStartYear = 1423;
HGDatesTable = new Array (
           1016064000,1018656000,1021161600,1023753600,1026259200,1028851200,1031356800,1033862400,1036454400,1038960000,1041552000,1044057600,
           1046649600,1049241600,1051747200,1054339200,1056931200,1059436800,1062028800,1064534400,1067040000,1069632000,1072137600,1074729600,
           1077235200,1079827200,1082332800,1084924800,1087516800,1090022400,1092614400,1095120000,1097712000,1100304000,1102809600,1105401600,
           1107907200,1110412800,1113004800,1115510400,1118102400,1120608000,1123200000,1125792000,1128297600,1130889600,1133481600,1135987200,
           1138579200,1141084800,1143590400,1146182400,1148688000,1151280000,1153785600,1156377600,1158969600,1161475200,1164067200,1166659200,
           1169164800,1171756800,1174262400,1176768000,1179360000,1181865600,1184371200,1186963200,1189555200,1192147200,1194652800,1197244800,
           1199836800,1202342400,1204934400,1207440000,1209945600,1212537600,1215043200,1217548800,1220140800,1222732800,1225238400,1227830400,
           1230422400,1232928000,1235520000,1238112000,1240617600,1243123200,1245715200,1248220800,1250812800,1253318400,1255910400,1258416000,
           1261008000,1263513600,1266105600,1268697600,1271203200,1273795200,1276300800,1278892800,1281398400,1283990400,1286496000,1289001600,
           1291593600,1294099200,1296691200,1299283200,1301875200,1304380800,1306972800,1309478400,1312070400,1314576000,1317168000,1319673600,
           1322179200,1324771200,1327276800,1329868800,1332460800,1334966400,1337558400,1340150400,1342656000,1345248000,1347753600,1350345600,
           1352851200,1355356800,1357948800,1360454400,1363046400,1365552000,1368144000,1370736000,1373241600,1375833600,1378425600,1380931200,
           1383436800,1386028800,1388534400,1391126400,1393632000,1396224000,1398729600,1401321600,1403827200,1406419200,1409011200,1411516800,
           1414108800,1416614400,1419206400,1421712000,1424304000,1426809600,1429401600,1431907200,1434499200,1437004800,1439596800,1442102400,
           1444694400,1447286400,1449792000,1452384000,1454976000,1457481600,1459987200,1462579200,1465084800,1467676800,1470182400,1472688000,
           1475280000,1477872000,1480377600,1482969600,1485561600,1488153600,1490659200,1493164800,1495756800,1498262400,1500768000,1503360000
);

function GtoH(dt) {
        if(dt == '') return "";
        var d = parseInt(dt.substr(6,2),10);
        var m = parseInt(dt.substr(4,2),10);
        var y = parseInt(dt.substr(0,4),10);
        var dofst = 60 * 60 * 24;
        var l = HGDatesTable.length - 1;
        var tsmpx = Date.UTC(y,m-1,d);
        var tsmp = tsmpx.valueOf() / 1000;
        if(tsmp < HGDatesTable[0] || tsmp > HGDatesTable[l]) return "";
        i = FindArrEl(0,l,tsmp);
        yr = intPart(i/12) + HGDatesStartYear;
        dy = intPart((tsmp - HGDatesTable[i-1]) / dofst);
        mn = mode(i,12);
        if(dy < 1) {dy = 30;mn--;}
        if(mn < 1) {mn=12;yr--;}
        return formatMyDt(dy,mn,yr);
}

function HtoG(dt) {
        if(dt == '') return "";
        var d = parseInt(dt.substr(6,2),10);
        var m = parseInt(dt.substr(4,2),10);
        var y = parseInt(dt.substr(0,4),10);
        var dofst = 60 * 60 * 24;
        var l = HGDatesTable.length - 1;
        var u = (y - HGDatesStartYear) * 12 + m - 1;
        if(u < 0 || u > l) return '';
        dd = HGDatesTable[(y - HGDatesStartYear) * 12 + m - 1] + d * dofst;
        dd = dd * 1000;
        var md = new Date(dd);
        return formatMyDt(md.getUTCDate(),md.getUTCMonth()+1,md.getUTCFullYear());
}

function FindArrEl(s,e,v) {
        if(e - s < 2) {
                return s+1;
        } else {
                n = intPart((e-s)/2+s);
                if(HGDatesTable[n] > v) return FindArrEl(s,n,v); else return FindArrEl(n,e,v);
        }
}

function greToHij(dt) {
        var tbldt = GtoH(dt);
        if(tbldt != '') return tbldt;
        var d = parseInt(dt.substr(6,2),10);
        var m = parseInt(dt.substr(4,2),10);
        var y = parseInt(dt.substr(0,4),10);

        if ((y>1582)||((y==1582)&&(m>10))||((y==1582)&&(m==10)&&(d>14))) {
                        jd=intPart((1461*(y+4800+intPart((m-14)/12)))/4)+intPart((367*(m-2-12*(intPart((m-14)/12))))/12)-intPart( (3* (intPart(  (y+4900+ intPart( (m-14)/12) )/100) ) ) /4)+d-32075
                } else {
                        jd = 367*y-intPart((7*(y+5001+intPart((m-9)/7)))/4)+intPart((275*m)/9)+d+1729777
                }
        l=jd-1948440+10632
        n=intPart((l-1)/10631)
        l=l-10631*n+354
        j=(intPart((10985-l)/5316))*(intPart((50*l)/17719))+(intPart(l/5670))*(intPart((43*l)/15238))
        l=l-(intPart((30-j)/15))*(intPart((17719*j)/50))-(intPart(j/16))*(intPart((15238*j)/43))+29
        m=intPart((24*l)/709)
        d=l-intPart((709*m)/24)
        y=30*n+j-30
        return formatMyDt(d,m,y)
}

function hijToGre(dt) {
        var tbldt = HtoG(dt);
        if(tbldt != '') return tbldt;
        var d = parseInt(dt.substr(6,2),10);
        var m = parseInt(dt.substr(4,2),10);
        var y = parseInt(dt.substr(0,4),10);

        jd=intPart((11*y+3)/30)+354*y+30*m-intPart((m-1)/2)+d+1948440-385
        if (jd> 2299160 ) {
                l=jd+68569
                n=intPart((4*l)/146097)
                l=l-intPart((146097*n+3)/4)
                i=intPart((4000*(l+1))/1461001)
                l=l-intPart((1461*i)/4)+31
                j=intPart((80*l)/2447)
                d=l-intPart((2447*j)/80)
                l=intPart(j/11)
                m=j+2-12*l
                y=100*(n-49)+i+l
        } else {
                j=jd+1402
                k=intPart((j-1)/1461)
                l=j-1461*k
                n=intPart((l-1)/365)-intPart(l/1461)
                i=l-365*n+30
                j=intPart((80*i)/2447)
                d=i-intPart((2447*j)/80)
                i=intPart(j/11)
                m=j+2-12*i
                y=4*k+n+i-4716
        }
        return formatMyDt(d,m,y)
}

function formatMyDt(d,m,y) {
        var d1 = new String(d); if(d1.length == 1) d1 = '0' + d1;
        var m1 = new String(m); if(m1.length == 1) m1 = '0' + m1;
        var y1 = new String(y);
        return y1+m1+d1
}

function intPart(floatNum) {
        if (floatNum< -0.0000001) {
                 return Math.ceil(floatNum-0.0000001)
        }
        return Math.floor(floatNum+0.0000001)
}

function mode(i,n2) {
       return intPart((i/n2 - intPart(i/n2)) * n2);
}


//---------------------------------------------------------------------------------


if(vdir == 'rtl') {
   var mthnm = new Array("يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سيبتمبر","أكتوبر","نوفمبر","ديسمبر");
   var wksnm = new Array("إثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت","أحد");
   var mthnmh = new Array("محرم","صفر","ربيع اول","ربيع ثاني","جماد اول","جماد ثاني","رجب","شعبان","رمضان","شوال","ذوالقعدة","ذوالحجة");
} else {
   var mthnm = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
   var wksnm = new Array("Mon","Tue","Wed","Thu","Fri","Sat","Sun");
   var mthnmh = new Array("Moharram","Safar","Rabi I","Rabi II","Jumad I","Jumad II","Rajab","Shaban","Ramadan","Shawal","D Qidah","D Hijah");
}

function prdays(s) {
        for(var i = 1; i < 32; i++) {
           if (inlist(i,s)) {
                   document.writeln("<option selected value=" + i + ">" + i + "</option>");
           } else {
                   document.writeln("<option value=" + i + ">" + i + "</option>");
           };
        };
}

function prmonths(s) {
        var mns;
        if(cal == '1') mns = mthnm; else mns = mthnmh;
        for(var i = 1; i < 13; i++) {
                   if (inlist(i,s)) {
                           document.writeln("<option selected value=" + i + ">" + mns[i-1] + "</option>");
                   } else {
                           document.writeln("<option value=" + i + ">" + mns[i-1] + "</option>");
                   };
        };
}

function prnumbers(s,l,o) {
        for(var i = 0 + o; i < l + o; i++) {
                   if (inlist(i,s)) {
                           document.writeln("<option selected value=" + i + ">" + i + "</option>");
                   } else {
                           document.writeln("<option value=" + i + ">" + i + "</option>");
                   };
        };
}

function pryears(s,l,o) {
        for(var i = s - l; i < l + o; i++) {
                   if (inlist(i,s)) {
                           document.writeln("<option selected value=" + i + ">" + i + "</option>");
                   } else {
                           document.writeln("<option value=" + i + ">" + i + "</option>");
                   };
        };
}

function inlist(i,s) {
       var lns = s.split(";");
       if(lns.length == 1) {
          var j = (s == "") ? 0 : s.valueOf();
          if(j == i) return true;
       } else {
          for (var k=0;k < lns.length;k++) if(lns[k] == i) return true;
       }
       return false;
}