// JavaScript Document

// Old Content and Nav Swapping Stuff

// this function clears all child elements out of the object that is passed in
function clearcontent(obj) {
	while(obj.firstChild) obj.removeChild(obj.firstChild);
}
function swapcontent(contentObject)	{
	var ContentContainer = document.getElementById("content_display");
	var ContentHolding = document.getElementById("content_holder");
	while(ContentContainer.firstChild) {
		ContentHolding.appendChild(ContentContainer.firstChild);
	}
	ContentContainer.appendChild(contentObject);
}

// End Content and Nav Swapping Stuff

// New Content Swapping Stuff
function include(xUrl,xId) {

  var xmlhttp = false;

  /*@cc_on @*/

  /*@if (@_jscript_version >= 5)

  // JScript gives us Conditional compilation, we can cope with old IE versions.
  // and security blocked creation of the objects.

  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
   } catch (e) {
      try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (E) {
        xmlhttp = false;
      }
   }

  /*@end @*/

  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }

  xmlhttp.open("GET", xUrl,true);
  xmlhttp.onreadystatechange=function() {

          if (xmlhttp.readyState==4) {
                document.getElementById(xId).innerHTML = xmlhttp.responseText;
				
          }
  }
  xmlhttp.send(null)

}

// End Content Swapping Stuff

// Rollovers

function newImage(arg) {
	if (document.images) {
		rslt = new Image();
		rslt.src = arg;
		return rslt;
	}
}

function changeImages() {
	if (document.images && (preloadFlag == true)) {
		for (var i=0; i<changeImages.arguments.length; i+=2) {
			document[changeImages.arguments[i]].src = changeImages.arguments[i+1];
		}
	}
}

var preloadFlag = false;

// End Rollovers

// Popup Script
var openwin;
function popupwin(url,myname,w,h,s)
{ 
settings='height='+h+',width='+w+',scrollbars='+s+',toolbar=no,location=no,status=no,menubar=no,resizable=no,dependent=no'
openwin=window.open(url,myname,settings);
}
// End Popup Script

// Timezone Lookup 

function getWeekNumber(theDate) {
    var determinedate = new Date(Date.parse(theDate));
    var WN = getWeek(determinedate.getFullYear(), determinedate.getMonth(), determinedate.getDay());
    return WN;
}

function getWeek(year, month, day) {
    //Find JulianDay 
    month += 1; //use 1-12
    var a = Math.floor((14 - (month)) / 12);
    var y = year + 4800 - a;
    var m = (month) + (12 * a) - 3;
    var jd = day + Math.floor(((153 * m) + 2) / 5) +
                     (365 * y) + Math.floor(y / 4) - Math.floor(y / 100) +
                     Math.floor(y / 400) - 32045;      // (gregorian calendar)

    //Calculate weeknumber according to JD
    var d4 = (jd + 31741 - (jd % 7)) % 146097 % 36524 % 1461;
    var L = Math.floor(d4 / 1460);
    var d1 = ((d4 - L) % 365) + L;
    NumberOfWeek = Math.floor(d1 / 7) + 1;
    return NumberOfWeek;
}

function CheckHemisphere() {
    // Estimate Latitide and Longitude from the Date.  
    var latitude;
    var longitude;
    var now = new Date();
    var northernWinter = new Date(2000, 0, 1);
    var northernSummer = new Date(2000, 7, 1);
    var northernWinterOffset = northernWinter.getTimezoneOffset();
    var northernSummerOffset = northernSummer.getTimezoneOffset();

    // Find just the Timezone modifier TZD (in minutes).  
    // DST modifier is negative so TZD is the larger value.  
    var tzd = Math.max(northernWinterOffset, northernSummerOffset);

    // if you need the current value of DST (in minutes) it's...
    var dst = now.getTimezoneOffset() - tzd;

    // Estimate Longitude:  
    // 60 minutes of time == 15 degrees of longitude.  
    longitude = tzd / -4;

    // Estimate Latitude:  
    // If DST is observed we can detect the current season and from that we can find the hemisphere. If not assume equatorial.  
    if (northernWinterOffset == northernSummerOffset) {
        // equatorial  
        latitude = 0;
    }
    else if (northernWinterOffset > northernSummerOffset) {
        // northern hemisphere  
        latitude = 45;
    }
    else {
        // southern hemisphere  
        latitude = -45;
    }

    return latitude;
}

function FindClientsTimzoneId(dt, tz, dst, hem, cDay, cMon, cYr, cHr, cMin, cSec, stDay, stMon, stYr, stHr, stMin, stSec, endDay, endMon, endYr, endHr, endMin, endSec, isDs) {
    //Main controls
    var dtCtl = document.getElementById(dt);
    var tzCtl = document.getElementById(tz);
    var dstCtl = document.getElementById(dst);
    var hemCtl = document.getElementById(hem);

    //current date controls
    var cDayCtl = document.getElementById(cDay);
    var cMonCtl = document.getElementById(cMon);
    var cYrCtl = document.getElementById(cYr);
    var cHrCtl = document.getElementById(cHr);
    var cMinCtl = document.getElementById(cMin);
    var cSecCtl = document.getElementById(cSec);

    //DST start date controls
    var stDayCtl = document.getElementById(stDay);
    var stMonCtl = document.getElementById(stMon);
    var stYrCtl = document.getElementById(stYr);
    var stHrCtl = document.getElementById(stHr);
    var stMinCtl = document.getElementById(stMin);
    var stSecCtl = document.getElementById(stSec);

    //DST End date controls
    var endDayCtl = document.getElementById(endDay);
    var endMonCtl = document.getElementById(endMon);
    var endYrCtl = document.getElementById(endYr);
    var endHrCtl = document.getElementById(endHr);
    var endMinCtl = document.getElementById(endMin);
    var endSecCtl = document.getElementById(endSec);

    //Is Daylight Saving boolean control
    var isDsCtl = document.getElementById(isDs);

    var dstVal = 0;

    //deal with primitive age ... :D
    var year = new Date().getYear();
    if (year < 1000)
        year += 1900;

    var firstSwitch = 0;
    var secondSwitch = 0;
    var lastOffset = 99;
    var hemisphere = 'Equator'; //assume equator

    //initialize current date and time
    var currDate = new Date();
    dtCtl.value = currDate;
    setDateParts(cDay, cMon, cYr, cHr, cMin, cSec, currDate);
    var baseOffset = -1 * currDate.getTimezoneOffset() / 60;
    tzCtl.value = baseOffset;

    // 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;
    }

    // re-calculate which hemisphere this belongs to
    var hem = CheckHemisphere();
    if (hem == 0)
        hemisphere = "Equator";
    else if (hem < 0)
        hemisphere = "Southern";
    else
        hemisphere = "Northern";

    hemCtl.value = hemisphere;

    // 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) {
        // Daylight Savings is not observed in this timezone.
        dstVal = 0;
        isDsCtl.value = false;
    }
    else {
        var dateDstStart = new Date(Date.parse(firstDstDate));
        var dateDstEnd = new Date(Date.parse(secondDstDate));
        dstVal = 1;

        //Is this a daylight saving time?
        var isDaylightSavingTime = false;

        if (hem >= 0) {
            var diff1 = (currDate - dateDstStart) + (60 * 1000);
            var diff2 = (dateDstEnd - currDate) + (60 * 1000);

            if (diff1 >= 0 && diff2 >= 0) {
                isDaylightSavingTime = true;
            }
        }
        else {
            var diff1 = (dateDstStart - currDate) + (60 * 1000);
            var diff2 = (currDate - dateDstEnd) + (60 * 1000);

            if (!(diff1 >= 0 && diff2 >= 0)) {
                isDaylightSavingTime = true;
            }
        }

        isDsCtl.value = isDaylightSavingTime;

        //Init DST Start Controls (first switch)
        stDayCtl.value = dateDstStart.getDate();
        stMonCtl.value = dateDstStart.getMonth() + 1;
        stYrCtl.value = dateDstStart.getFullYear();

        //Advance by a minute to get the DST Time
        var calcHr = dateDstStart.getMinutes() == 59 ? dateDstStart.getHours() + 1 : dateDstStart.getHours();
        if (calcHr > 23) calcHr = 0;
        stHrCtl.value = calcHr;
        stMinCtl.value = dateDstStart.getMinutes() == 59 ? 0 : dateDstStart.getMinutes() + 1;
        stSecCtl.value = dateDstStart.getSeconds();

        //Init DST End Controls (second switch)
        endDayCtl.value = dateDstEnd.getDate();
        endMonCtl.value = dateDstEnd.getMonth() + 1;
        endYrCtl.value = dateDstEnd.getFullYear();

        //Advance by a minute to get the DST Time
        calcHr = dateDstEnd.getMinutes() == 59 ? dateDstEnd.getHours() + 1 : dateDstEnd.getHours();
        if (calcHr > 23) calcHr = 0;
        endHrCtl.value = calcHr;
        endMinCtl.value = dateDstEnd.getMinutes() == 59 ? 0 : dateDstEnd.getMinutes() + 1;
        endSecCtl.value = dateDstEnd.getSeconds();
    }

    dstCtl.value = dstVal;
}

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;
        }
    }
}

function setDateParts(dt, mm, yy, hh, min, ss, rightNow) {
    var dtCtl = document.getElementById(dt);
    var mmCtl = document.getElementById(mm);
    var yyCtl = document.getElementById(yy);
    var hhCtl = document.getElementById(hh);
    var minCtl = document.getElementById(min);
    var ssCtl = document.getElementById(ss);

    dtCtl.value = rightNow.getDate();
    mmCtl.value = rightNow.getMonth() + 1;
    yyCtl.value = rightNow.getFullYear();
    hhCtl.value = rightNow.getHours();
    minCtl.value = rightNow.getMinutes();
    ssCtl.value = rightNow.getSeconds();
}
//end Timezone Lookup
