jQuery(document).ready(function(){
    var offset = calculate_time_zone();
    offset = offset+5; //initial times displayed are in EST, not GMT, so offset must be adjusted
    var originalTimes = new Array();
    var newTimes = new Array();
    var ct=0;
    jQuery('span.user-time').each(function(){
        var text = jQuery(this).text();
        originalTimes[ct] = text;
        newText = convert(text,offset);
        newTimes.push(newText);
        ct++;
	});
    var sortedTimes = newTimes.slice();
    var sortedTimes = sortedTimes.sort(sortNumber);
    var sortedTimes2 = newTimes.slice();
    var sortedTimes2 = sortedTimes2.sort(sortNumber);
    for(i=0;i<sortedTimes.length;i++){
        if(sortedTimes[i]==12){
            sortedTimes[i] = '12pm';
        }else if(sortedTimes[i]>12){
            sortedTimes[i] = (sortedTimes[i]-12)+'pm';
        }else{
            sortedTimes[i] = sortedTimes[i]+'am';
        }
    }
    var c=0;
    jQuery('span.user-time').each(function(){
        jQuery(this).text(sortedTimes[c]);
        c++;
    });
    if(document.getElementById('register-time')){
        var select = jQuery('#register-time');
        jQuery(select).children('option.user-time').remove();
        for(ii=0;ii<sortedTimes.length;ii++){
            var optionDisplay = sortedTimes[ii];
            var originalPosition = jQuery.inArray(sortedTimes2[ii],newTimes);
            var optionValue = originalTimes[originalPosition]+' EST';
            var option = jQuery('<option value="'+optionValue+'">'+optionDisplay+'</option>');
            jQuery(option).appendTo(select);
        }
    }
    jQuery('#hidden-register-display-time').each(function(){
        var text2 = jQuery(this).val();
        var newText2 = convert(text2,offset);
        if(newText2==12){
            newText2 = '12pm';
        }else if(newText2>12){
            newText2 = (newText2-12)+'pm';
        }else{
            newText2 = newText2+'am';
        }
        jQuery(this).val(newText2);
	});
    lmpLocalTime();
});

function lmpLocalTime() {
    now=new Date();
    hour=now.getHours();
    min=now.getMinutes();
    sec=now.getSeconds();
    if (min<=9) { min="0"+min; }
    if (sec<=9) { sec="0"+sec; }
    if (hour>12) { hour=hour-12; add="pm"; }
    else { hour=hour; add="am"; }
    if (hour==12) { add="pm"; }
    lmpTime = ((hour<=9) ? "0"+hour : hour) + ":" + min + ":" + sec + " " + add;
    if (document.getElementById) { document.getElementById('localTime').innerHTML = lmpTime; }
    else if (document.layers) {
    document.layers.theTime.document.write(lmpTime);
    document.layers.theTime.document.close(); }
    setTimeout("lmpLocalTime()", 1000);
} 

function sortNumber(a,b){
    return a - b;
}

// script modified from original by Josh Fraser (http://www.onlineaspect.com)

function calculate_time_zone() {
	var rightNow = new Date();
	var jan1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);  // jan 1st
	var june1 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0); // june 1st
	var temp = jan1.toGMTString();
	var jan2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	temp = june1.toGMTString();
	var june2 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
	var std_time_offset = (jan1 - jan2) / (1000 * 60 * 60);
	var daylight_time_offset = (june1 - june2) / (1000 * 60 * 60);
	var dst;
	if (std_time_offset == daylight_time_offset) {
		dst = "0"; // daylight savings time is NOT observed
	} else {
		// positive is southern, negative is northern hemisphere
		var hemisphere = std_time_offset - daylight_time_offset;
		if (hemisphere >= 0)
			std_time_offset = daylight_time_offset;
		dst = "1"; // daylight savings time is observed
	}
    return std_time_offset;
}

function convert(text,offset) {
    if(text.indexOf('pm')!=-1){
        var timeInt = parseInt(text.replace('pm',''));
        if(timeInt!=12){
             timeInt = timeInt + 12;   
        }
    }else{
        var timeInt = parseInt(text.replace('am',''));
        if(timeInt==12){
            timeInt = 24;
        }
    }
    var newTime = timeInt+offset;
    if(newTime<1){
        newTime = newTime+24;
    }
    if(newTime>24){
        newTime = newTime-24;
    }
    return newTime;
}
