/*  DATE MODIFIED: MAY 24 2010 - GIANNIS FRAGOS	 */

/*******************************/
/* Table: Full Day name string */  
/*******************************/
var weekday = new Array(7);
weekday[0] = "Sunday";
weekday[1] = "Monday";
weekday[2] = "Tuesday";
weekday[3] = "Wednesday";
weekday[4] = "Thursday";
weekday[5] = "Friday";
weekday[6] = "Saturday";	

/*********************************/
/* Table: Full Month name string */
/*********************************/
var monthfull = new Array(12);
monthfull[0] = "Jan";
monthfull[1] = "Feb";
monthfull[2] = "Mar";
monthfull[3] = "Apr";
monthfull[4] = "May";
monthfull[5] = "Jun";
monthfull[6] = "Jul";	
monthfull[7] = "Aug";
monthfull[8] = "Sep";
monthfull[9] = "Oct";
monthfull[10] = "Nov";
monthfull[11] = "Dec";	

/*********************************************************/
/* JScript Routine: ACCEPT WEBHOSTING SERVER DATE - TIME */	  
/********************************************************/
var xmlHttp;
function srvTime()
{
 try 
   {
    //FF, Opera, Safari, Chrome
    xmlHttp = new XMLHttpRequest();
   }
   catch (err1) 
   {
    //IE
    try 
   {
    xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
   }
   catch (err2) 
   {
    try 
    {
     xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
    }
    catch (eerr3) 
    {
     //AJAX not supported, use CPU time.
     alert("AJAX not supported");
    }
   }
}
xmlHttp.open('HEAD',window.location.href.toString(),false);
xmlHttp.setRequestHeader("Content-Type", "text/html");
xmlHttp.send('');
return xmlHttp.getResponseHeader("Date");
}
var Date_Server = srvTime();

/************************************************************************/
/* JScript Routine: RETURNS THE DAYLIGHT SAVING TIME PERIOD INTO A YEAR */	
/************************************************************************/
function DisplayDstSwitchDates()
    {
    var year = new Date().getYear();
    if (year < 1000)
        year += 1900; 
    var firstSwitch = 0;
    var secondSwitch = 0;
    var lastOffset = 99;
    // Loop through every month of the current year
    for (i = 0; i < 12; i++)
    {
        // Fetch the timezone value for the month
        var newDate = new Date(Date.UTC(year, i, 0, 0, 0, 0, 0));
        var tz = -1 * newDate.getTimezoneOffset() / 60;
        // Capture when a timzezone change occurs
        if (tz > lastOffset)
            firstSwitch = i-1;
        else if (tz < lastOffset)
            secondSwitch = i-1;	 
        lastOffset = tz;
    }
    // Go figure out date/time occurences a minute before
    // a DST adjustment occurs
    var secondDstDate = FindDstSwitchDate(year, secondSwitch);
    var firstDstDate = FindDstSwitchDate(year, firstSwitch);   
    if (firstDstDate == null && secondDstDate == null)
        return 'Daylight Savings is not observed in your timezone.';
    else
       return firstDstDate + ' ' + secondDstDate
}
//
function FindDstSwitchDate(year, month)
{
    // Set the starting date
    var baseDate = new Date(Date.UTC(year, month, 0, 0, 0, 0, 0));
    var changeDay = 0;
    var changeMinute = -1;
    var baseOffset = -1 * baseDate.getTimezoneOffset() / 60;
    var dstDate;
    // Loop to find the exact day a timezone adjust occurs
    for (day = 0; day < 50; day++)
    {
        var tmpDate = new Date(Date.UTC(year, month, day, 0, 0, 0, 0));
        var tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60;
        // Check if the timezone changed from one day to the next
        if (tmpOffset != baseOffset)
        {
            var minutes = 0;
            changeDay = day;
            // Back-up one day and grap the offset
            tmpDate = new Date(Date.UTC(year, month, day-1, 0, 0, 0, 0));
            tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60;
            // Count the minutes until a timezone chnage occurs
            while (changeMinute == -1)
            {
                tmpDate = new Date(Date.UTC(year, month, day-1, 0, minutes, 0, 0));
                tmpOffset = -1 * tmpDate.getTimezoneOffset() / 60;

                // Determine the exact minute a timezone change
                // occurs
                if (tmpOffset != baseOffset)
                {
                    // Back-up a minute to get the date/time just
                    // before a timezone change occurs
                    tmpOffset = new Date(Date.UTC(year, month,
                                         day-1, 0, minutes-1, 0, 0));
                    changeMinute = minutes;
                    break;
                }
                else
                    minutes++;
            }
            // Add a month (for display) since JavaScript counts
            // months from 0 to 11
            dstDate = tmpOffset.getMonth() + 1;
            // Pad the month as needed
            if (dstDate < 10) dstDate = "0" + dstDate;
            // Add the day and year
            dstDate += '/' + tmpOffset.getDate() + '/' + year + ' ';
            // Capture the time stamp
            tmpDate = new Date(Date.UTC(year, month,
                               day-1, 0, minutes-1, 0, 0));
            dstDate += tmpDate.toTimeString().split(' ')[0];
            return dstDate;
        }
    }
}

/*************************/
/* LOCAL Time procedures */
/*************************/
var LocalTime = new Date();	 
var LocalTimezone = LocalTime.getTimezoneOffset();

/**************************/
/* SERVER Time procedures */ 
/**************************/
var DateServer = new Date(Date_Server); 
var DateServerMilliseconds = DateServer.valueOf() 
var day = DateServer.getDate();	 
var year = DateServer.getFullYear();
var hour = DateServer.getHours();
var minute = DateServer.getMinutes(); 
var ServerTimezone = DateServer.getTimezoneOffset();
var Timezone = DateServer.getTimezoneOffset();	

/******************************************/
/* UTC - GMT Time procedures -> UTCDescr */  
/******************************************/
var UTCTime = new Date();
UTCTime.setTime(+DateServerMilliseconds + (ServerTimezone * 60000)); 
var UTCdayname = weekday[UTCTime.getDay()]; 
var UTCmonthname = monthfull[UTCTime.getMonth()];
var UTCday = UTCTime.getDate();	 
var UTCMonth = UTCTime.getMonth() + 1; 
var UTCyear = UTCTime.getFullYear();
var UTChour = UTCTime.getHours();	   
if (UTChour < 10) UTChour = "0" + UTChour;
var UTCminute = UTCTime.getMinutes();
if (UTCminute < 10) UTCminute = "0" + UTCminute;
var UTCsecond = UTCTime.getSeconds();
if (UTCsecond < 10) UTCsecond = "0" + UTCsecond; 
/* UTC - GMT Time RETURNING VALUES */  
var UTCDescr = UTCdayname + ' ' + UTCmonthname + ' ' + UTCday + ' ' + UTCyear + ' ' + UTChour + ":" + UTCminute + ":" + UTCsecond;	 

/***********************************************************************/
/* GREECE Local Time procedures (Calculated from UTC Time) -> GRDescr */ 
/***********************************************************************/
var GRTime = new Date();
var GRTimeMilliseconds = UTCTime.valueOf(); 
// Timezone calculation (daylight savind time periods)
var str1 = DisplayDstSwitchDates();	
var dateUTC3 = str1.substr(0,10);  // First Date (one hour advance timezone UTC+3)
var timeUTC3 = str1.substr(11,9);  // First Time (one hour advance timezone UTC+3) 
var dateUTC2 = str1.substr(20,10); // Second Date (one hour back timezone UTC+2)
var timeUTC2 = str1.substr(30,9);  // Second Time (one hour back timezone UTC+2) 
var dayHelp	= UTCTime.getDate();	 
if (dayHelp < 10) dayHelp = '0' + dayHelp;
var monthHelp =	UTCTime.getMonth() + 1; 
if (monthHelp < 10) monthHelp = '0' + monthHelp;
var yearHelp = UTCTime.getFullYear();
var dateHelp = monthHelp + '/' + dayHelp + '/' + yearHelp; 	

if (dateHelp < dateUTC3 && dateHelp < dateUTC2)
 var GRTimezone = 2;
else
 var GRTimezone = 3;   
 
GRTime.setTime(+GRTimeMilliseconds + (GRTimezone * 3600000)); 
var GRdayname = weekday[GRTime.getDay()]; 
var GRmonthname = monthfull[GRTime.getMonth()];
var GRday = GRTime.getDate();	
var GRMonth = GRTime.getMonth() + 1; 
var GRyear = GRTime.getFullYear();
var GRhour = GRTime.getHours();	   
if (GRhour < 10) GRhour = "0" + GRhour;
var GRminute = GRTime.getMinutes();
if (GRminute < 10) GRminute = "0" + GRminute;
var GRsecond = GRTime.getSeconds();
if (GRsecond < 10) GRsecond = "0" + GRsecond; 
var GREECEMilliseconds = GRTime.valueOf();	 

//============================================================================
//======================= DIORTHOSI 30/10/2011 ===============================
var dateUTC2Help = dateUTC2 + "0359";
var dateUTC3Help = dateUTC3 + "0401";

if (GRMonth < 10) GRMonth = "0" + GRMonth; 
if (GRday < 10) GRday = "0" + GRday;

var curGRDateTime = GRMonth + "/" + GRday + "/" + GRyear + GRhour + GRminute;

if (curGRDateTime > dateUTC2Help || curGRDateTime < dateUTC3Help)
 var GRTimezone = 2;
else
 var GRTimezone = 3;  
 
GRTime.setTime(+GRTimeMilliseconds + (GRTimezone * 3600000)); 
var GRdayname = weekday[GRTime.getDay()]; 
var GRmonthname = monthfull[GRTime.getMonth()];
var GRday = GRTime.getDate();	
var GRMonth = GRTime.getMonth() + 1; 
var GRyear = GRTime.getFullYear();
var GRhour = GRTime.getHours();	   
if (GRhour < 10) GRhour = "0" + GRhour;
var GRminute = GRTime.getMinutes();
if (GRminute < 10) GRminute = "0" + GRminute;
var GRsecond = GRTime.getSeconds();
if (GRsecond < 10) GRsecond = "0" + GRsecond; 
var GREECEMilliseconds = GRTime.valueOf();	
//============================================================================
//============================================================================

/* GREECE Time RETURNING VALUES */  
var GRDescr = GRdayname + ' ' + GRmonthname + ' ' + GRday + ' ' + GRyear + ' ' + GRhour + ":" + GRminute + ":" + GRsecond + " Time Zone: " + GRTimezone;	
