/* top_dates.js  Gregorian and Jalali dates for top navigation of website
 * Copyright (C) 2008-09  All rights reserved by e-Link Interactive Advertising Co.
 * Author: Farshad Sadri <farshad@e-link.ir>
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You can receive a copy of GNU Lesser General Public License at the
 * World Wide Web address <http://www.gnu.org/licenses/lgpl.html>.
 *
 * Usage: 1. Import a link to this file in your HTML <head></head> tag.
 *        2. Call one of the following functions where ever you like  
 *           in your <body></body> tag:
 *           Function name          Description
 *           writeBothDates()       writes both Georgian and Jalali dates
 *                                  when ever it called. to vairables "isShortWeek" 
 *                                  and "isShortMonth" determine if the week name 
 *                                  and month name should be in short form or 
 *                                  complete. (e.g. Sunday -> Sun.)
 *                                  
 *                                  
 *           writeGDate()           writes normal Jalali date.
 *                                  
 *                                  
 *                                  
 *
 */

function showJDate() { 
    week= new Array("یكشنبه","دوشنبه","سه شنبه","چهارشنبه","پنج شنبه","جمعه","شنبه") 
    months = new Array("فروردین","اردیبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند"); 
    a = new Date(); 
    d= a.getDay(); 
    day= a.getDate(); 
    month = a.getMonth()+1; 
    year= a.getFullYear(); 
    if (year== 0){year=2000;} 
    if (year<100){year +=1900;} 
    y=1; 
    for(i=0;i<3000;i+=4) { 
        if (year==i) {y=2;} 
        } 
    for(i=1;i<3000;i+=4) { 
        if (year==i) {y=3;} 
        } 
if (y==1) { 
        year -= ( (month < 3) || ((month == 3) && (day < 21)) )? 622:621; 

        switch (month) { 
            case 1: (day<21)? (month=10, day+=10):(month=11, day-=20); break; 
            case 2: (day<20)? (month=11, day+=11):(month=12, day-=19); break; 
            case 3: (day<21)? (month=12, day+=9):(month=1, day-=20);   break; 
            case 4: (day<21)? (month=1, day+=11):(month=2, day-=20);   break; 
            case 5: 
            case 6: (day<22)? (month-=3, day+=10):(month-=2, day-=21); break; 
            case 7: 
            case 8: 
            case 9: (day<23)? (month-=3, day+=9):(month-=2, day-=22);  break; 
            case 10:(day<23)? (month=7, day+=8):(month=8, day-=22);    break; 
            case 11: 
            case 12:(day<22)? (month-=3, day+=9):(month-=2, day-=21);  break; 
       default:          break; 
        } 
        } 
if (y==2) { 
        year -= ( (month < 3) || ((month == 3) && (day < 20)) )? 622:621; 

        switch (month) { 
            case 1: (day<21)? (month=10, day+=10):(month=11, day-=20); break; 
            case 2: (day<20)? (month=11, day+=11):(month=12, day-=19); break; 
            case 3: (day<20)? (month=12, day+=10):(month=1, day-=19);   break; 
            case 4: (day<20)? (month=1, day+=12):(month=2, day-=19);   break; 
            case 5: (day<21)? (month=2, day+=11):(month=3, day-=20);   break; 
            case 6: (day<21)? (month=3, day+=11):(month=4, day-=20); break; 
            case 7: (day<22)? (month=4, day+=10):(month=5, day-=21);   break; 
            case 8: (day<22)? (month=5, day+=10):(month=6, day-=21);   break; 
            case 9: (day<22)? (month=6, day+=10):(month=7, day-=21);  break; 
            case 10:(day<22)? (month=7, day+=9):(month=8, day-=21);    break; 
            case 11:(day<21)? (month=8, day+=10):(month=9, day-=20);   break; 
            case 12:(day<21)? (month=9, day+=10):(month=10, day-=20);  break; 
       default:          break; 
        } 
        } 
if (y==3) { 
        year -= ( (month < 3) || ((month == 3) && (day < 21)) )? 622:621; 

        switch (month) { 
            case 1: (day<20)? (month=10, day+=11):(month=11, day-=19); break; 
            case 2: (day<19)? (month=11, day+=12):(month=12, day-=18); break; 
            case 3: (day<21)? (month=12, day+=10):(month=1, day-=20);   break; 
            case 4: (day<21)? (month=1, day+=11):(month=2, day-=20);   break; 
            case 5: 
            case 6: (day<22)? (month-=3, day+=10):(month-=2, day-=21); break; 
            case 7: 
            case 8: 
            case 9: (day<23)? (month-=3, day+=9):(month-=2, day-=22);  break; 
            case 10:(day<23)? (month=7, day+=8):(month=8, day-=22);    break; 
            case 11: 
            case 12:(day<22)? (month-=3, day+=9):(month-=2, day-=21);  break; 
       default:          break; 
        } 
        } 
	return week[d]+" "+day+" "+months[month-1]+" "+ year; 
} 
function showGDate(isShortWeek, isShortMonth) {
	var today_date= new Date();
	var month=today_date.getMonth();
	var today=today_date.getDate();
	var year=today_date.getFullYear();
	var day = today_date.getDay();
	var months_full = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	var months_short = new Array("Jan.","Feb.","Mar.","Apr.","May","Jun.","Jul.","Aug.","Sep.","Oct.","Nov.","Dec.");
	var week_full = new Array("Sunday", "Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
	var week_short = new Array("Sun.", "Mon.","Tue.","Wed.","Thu.","Fri.","Sat.");
	var months = new Array();
	var week = new Array();
	if(isShortMonth) {
		months = months_short;
	} else { months = months_full; }
	if(isShortWeek) {
		week = week_short;
	} else { week = week_full; }
	
	return week[day]+", "+today+" "+months[month]+" "+year;
}

function writeBothDates(isShortWeek, isShortMonth) {
	document.write(showJDate() + "<br />" + showGDate(isShortWeek, isShortMonth));
}
function writeGDate(isShortWeek, isShortMonth) {
	document.write(showGDate(isShortWeek, isShortMonth));
}
function writeJDate() {
	document.write(showJDate());
}


