/* ====================================================
//
// Client side date script utilities.
//
=====================================================*/
// Page version: v1.12, released 9 July 2002


function addDays(varDate, daysToAdd) {
	var dt = new Date(varDate);
	dt.setDate(dt.getDate() + daysToAdd);
	return dt.getDate() + " " + getMonthName(dt.getMonth() + 1) + " " + dt.getYear();
}

function addMonths(varDate, monthsToAdd) {
	var dt = new Date(varDate);
	dt.setMonth(dt.getMonth() + monthsToAdd + 1);
	return dt.getDate() + " " + getMonthName(dt.getMonth() + 1) + " " + dt.getYear();
}

function addYears(varDate, yearsToAdd) {
	var dt = new Date(varDate);
	dt.setYear(dt.getFullYear() + yearsToAdd);
	return dt.getDate() + " " + getMonthName(dt.getMonth() + 1) + " " + dt.getYear();
}

function dateDiff(interval, date1, date2) {

	if (typeof(date1) == "string") {
		date1 = new Date(date1);
	}
	if (typeof(date2) == "string") {
		date2 = new Date(date2);
	}

	switch (interval) {
		case "d":
			date1.setHours(0); 
			date1.setMinutes(0);
			date1.setSeconds(0);
			date1.setMilliseconds(0);

			date2.setHours(0); 
			date2.setMinutes(0);
			date2.setSeconds(0);
			date2.setMilliseconds(0);

			return (date2.valueOf() - date1.valueOf()) / 86400000;
			break;
			
		case "n":
			date1.setSeconds(0);
			date1.setMilliseconds(0);

			date2.setSeconds(0);
			date2.setMilliseconds(0);
						
			return (date2.valueOf() - date1.valueOf()) / 60000;
			break;
	}
}


function date_onblur(x) {
	if(x.value != ""){
		if(ValidDate(x.value)){
			x.value = myDate(x.value);
			return true;
		}else{
			alert("Invalid Date");
			x.focus();
			x.select();
		}
	}
	return false;
}

function time_onblur(x) {
	if(x.value != ""){
		if(ValidTime(x.value)){
			x.value = myTime(x.value);
			return true;
		}else{
			alert("Invalid Time");
			x.focus();
			x.select();
		}
	}
	return false;
}

function shorttime_onblur(x) {
	if(x.value != ""){
		if(ValidTime(x.value)){
			x.value = myShortTime(x.value);
			return true;
		}else{
			alert("Invalid Time");
			x.focus();
			x.select();
		}
	}
	return false;
}

function getCurrentDateTime(){
	var dt = new Date();
	return dt.getDate() + " " + getMonthName(dt.getMonth() + 1) + " " + dt.getYear() + " " + myTime(dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds());
}

function getCurrentDate(){
	var dt = new Date();
	return dt.getDate() + " " + getMonthName(dt.getMonth() + 1) + " " + dt.getYear();
}

function getCurrentTime(){
	var dt = new Date();
	return myTime(dt.getHours() + ":" + dt.getMinutes() + ":" + dt.getSeconds());
}

function myLongDate(varDate){
	if(varDate == "null" || varDate == null || varDate == "")
		return varDate;
		
	varDate = formatDate(varDate);
	
	return getDayName(getDay(varDate)) + ", " + getDate(varDate) + " " + getMonthName(getMonth(varDate)) + " " + getYear(varDate);
}

function myDate(varDate){
	if(varDate == "null" || varDate == null || varDate == "")
		return varDate;
		
	varDate = formatDate(varDate);
	
	return getDate(varDate) + " " + getMonthName(getMonth(varDate)) + " " + getYear(varDate);
}

function myMedDate(varDate){
	if(varDate == "null" || varDate == null || varDate == "")
		return varDate;
		
	varDate = formatDate(varDate);
	
	return getDate(varDate) + " " + getMonthName(getMonth(varDate), true) + " " + getYear(varDate);
}

function myShortDate(varDate){
	if(varDate == "null" || varDate == null || varDate == "")
		return varDate;
		
	varDate = formatDate(varDate);
	
	return getDate(varDate) + "/" + getMonth(varDate) + "/" + getYear(varDate);
}

function myTime(varDate){
	var h, m, s;

	if(varDate == "null" || varDate == null || varDate == "")
		return varDate;
		
	varDate = formatTime(varDate);
	
	h = getHours(varDate);
	if (h.length < 2)
		h = "0" + h;

	m = getMinutes(varDate);
	if (m.length == 0)
		m = "00";
	else if (m.length < 2)
		m = "0" + m;

	s = getSeconds(varDate);
	if (s.length < 2)
		s = "0" + s;
	
	return h + ":" + m + ":" + s;
}

function myShortTime(varDate){
	var h, m, s;

	if(varDate == "null" || varDate == null || varDate == "")
		return varDate;

	varDate = formatTime(varDate);

	h = getHours(varDate);
	if (h.length < 2)
		h = "0" + h;

	m = getMinutes(varDate);
	if (m.length == 0)
		m = "00";
	else if (m.length < 2)
		m = "0" + m;
	
	return h + ":" + m;
}

function getWeekNo(varDate, blnAbbreviate){
    var y;
    var w;
    var m;
    var weekNo;
	
    varDate = formatDate(varDate);

    y = getYear(varDate);
    m = getMonth(varDate);
    w = getWeek(varDate);
    
    switch(w){
        case 1:
            if (m == 12)
				y = y + 1;
			break;
        case 52, 53:
            if (m == 1)
				y = y - 1;
			break;        
    }

    weekNo = (y * 100) + w;
    weekNo = weekNo.toString();

	if (blnAbbreviate)
		return weekNo.substring(4,6);
	else
		return weekNo;
}

function formatDate(varDate){
	var temp;

	varDate = varDate.replace(/[-\.\/ ]+/g," ");

	if (varDate.length == 6){
		temp = new Number(varDate);
		if (!isNaN(temp))
			varDate = varDate.substring(0,2) + " " + varDate.substring(2,4) + " " + varDate.substring(4,6);
	}else if (varDate.length == 4){
		temp = new Number(varDate);
		if (!isNaN(temp))
			varDate = varDate.substring(0,2) + " " + varDate.substring(2,4);
	}
	
	varDate = getDate(varDate) + " " + getMonthName(getMonth(varDate)) + " " + getYear(varDate);
	//next two lines convert 32 Jan to 1 Feb, etc.
	varDate = new Date(varDate);
	varDate = formatUTCDate(varDate);
	
	return getDate(varDate) + " " + getMonthName(getMonth(varDate)) + " " + getYear(varDate);
}

function formatTime(varDate){
	var blnPM = false;
	
	if (varDate.indexOf("pm") > -1 || varDate.indexOf("p.m") > -1 || varDate.indexOf("p m") > -1)
		blnPM = true;
		
	varDate = varDate.replace(/pm|p.m|p m|am|a.m|a m/g, "");
	varDate = varDate.replace(/[-\.\/ ]+/g, ":");
	
	varDate = getHours(varDate) + ":" + getMinutes(varDate) + ":" + getSeconds(varDate);
	varDate = new Date("1 Jan 2000 " + varDate);
	
	if (blnPM && varDate.getHours() < 12)
		varDate.setHours(varDate.getHours() + 12);
	varDate = formatUTCDate(varDate);
	//subtract 1 January 2000 from the front to leave the time
	varDate = varDate.substr(15, varDate.length - 15);

	return getHours(varDate) + ":" + getMinutes(varDate) + ":" + getSeconds(varDate);
}

function getHours(varDate){
	if (varDate.indexOf(":") > -1)
		return varDate.substring(0, varDate.indexOf(":"));
	else
		return varDate;
}

function getMinutes(varDate){
	var varRight;

	if (varDate.indexOf(":") > -1){	
		varRight = varDate.substring(varDate.indexOf(":") + 1, varDate.length);
		
		if (varRight.indexOf(":") > -1)
			varRight = varRight.substring(0, varRight.indexOf(":"));
		else
			varRight = varRight;
			
		if (varRight != "")	
			return varRight;
		else
			return "0";
	}else{
		return "0";
	}
}

function getSeconds(varDate){
	var varRight;

	if (varDate.indexOf(":") > -1){	
		varRight = varDate.substring(varDate.indexOf(":") + 1, varDate.length);

		if (varRight.indexOf(":") > -1){	
			varRight = varRight.substring(varRight.indexOf(":") + 1, varRight.length);

			if (varRight.indexOf(":") > -1 )
				return varRight.substring(0, varRight.indexOf(":"));
			else
				return varRight;
				
			if (varRight != "")	
				return varRight;
			else
				return "0";
		}else
			return "0";
	}else{
		return "0";
	}
}

// gets the day of the month
function getDate(varDate){
	if (varDate.indexOf(" ") > -1)
		return varDate.substring(0, varDate.indexOf(" "));
	else
		return varDate;
}

// gets the weekno based on the first four day week
function getWeek(varDate){
	var dayofWeek;
	var startofyear;
	var timedifference;
	var dayofyear;
	var weekofyear;
	var newDate;
	
	startofyear = new Date("1 January " + getYear(varDate));
	
	dayofWeek = startofyear.getDay()
	if (dayofWeek == 0)
		dayofWeek = 7;
	dayofWeek--;
	startofyear = startofyear.valueOf();
	
	newDate = new Date(varDate);
	newDate = newDate.valueOf();
	
	timedifference = newDate - startofyear;
	dayofyear = timedifference / 86400000 + 1;
	dayofyear = Math.floor(dayofyear);
	dayofyear += dayofWeek;
	weekofyear = dayofyear / 7;
	weekofyear = Math.ceil(weekofyear);
		
	if (dayofWeek >= 4){
		if (weekofyear == 1)
			weekofyear = getWeek("31 December " + (getYear(varDate) - 1));
		else
			weekofyear--;
	}	

	if (weekofyear == 53){
		startofyear = new Date("1 January " + (getYear(varDate) + 1));
		dayofWeek = startofyear.getDay();	
		if (dayofWeek == 0)
			dayofWeek = 7;
		dayofWeek--;

		if (dayofWeek < 4)
			weekofyear = 1;
	}
	
	return weekofyear;
}

// gets the month of the year 1-12
function getMonth(varDate){
	var varRight;
	var varMonth;

	if (varDate.indexOf(" ") > -1){	
		varRight = varDate.substring(varDate.indexOf(" ") + 1, varDate.length);

		if (varRight.indexOf(" ") > -1 )
			varRight = varRight.substring(0, varRight.indexOf(" "));
		else
			varRight = varRight;
		
		if (varRight != ""){	
			varMonth = new Number(varRight);
			
			if (isNaN(varMonth))
				return getMonthNumber(varRight);
			else
				return varMonth;
		}else{
			varDate = new Date();
			return varDate.getMonth() + 1;
		}
	}else{
		varDate = new Date();
		return varDate.getMonth() + 1;
	}
}

// gets the yyyy formatted year
function getYear(varDate){
	var varRight;
	var varYear;
	var varCurrentDate = new Date();
	var varCurrentYear;

	varRight = varDate.substring(varDate.indexOf(" ") + 1, varDate.length);

	if (varRight.indexOf(" ") > -1 ){
		varRight = varRight.substring(varRight.indexOf(" ") + 1, varRight.length);
		
		if (varRight.indexOf(" ") > -1 )
			varRight = varRight.substring(0, varRight.indexOf(" "));
		else
			varRight = varRight;
		
		if (varRight != ""){
			if (varRight.length <= 2){
				varYear = new Number(varRight);
				varCurrentYear = varCurrentDate.getFullYear().toString();
				varCurrentYear = parseInt(varCurrentYear.substr(2, 2));
				
				if (varYear < (30 + varCurrentYear))
					return 2000 + varYear;
				else
					return 1900 + varYear;
			}else{
				varYear = new Number(varRight);
				return varYear;
			}
		}else{
			return varCurrentDate.getFullYear();
		}
	}else{
		return varCurrentDate.getFullYear();
	}
}

// validates a date
function ValidDate(varDate){
	varDate = formatDate(varDate);
	
	varDate = new Date(varDate);
	
	if (isNaN(varDate))
		return false;
	else
		return true;
}

// validates a time
function ValidTime(varDate){
	varDate = formatTime(varDate);
	
	varDate = new Date("1 Jan 2000 " + varDate);
	
	if (isNaN(varDate))
		return false;
	else
		return true;
}

function getMonthName(lngMonth, blnAbbreviate) {
	var strMonthNames;
	
	if (blnAbbreviate)
		strMonthNames = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	else
		strMonthNames = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	
	return strMonthNames[lngMonth - 1];
}


// returns the month of the year 1-12 based on the inputed month name
function getMonthNumber(varMonth){
	var strMonthNames;
	
	varMonth = varMonth.toLowerCase();
	
	if (varMonth.length == 3)
		strMonthNames = new Array("jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec");
	else
		strMonthNames = new Array("january","february","march","april","may","june","july","august","september","october","november","december");
	
	for (var i = 0; i < strMonthNames.length; i++)
		if (varMonth == strMonthNames[i])
			return i + 1;
			
	return -1;
}

// formats a UTC formatted date, to a "dd monthname yyyy hh:nn:ss" formatted date.
function formatUTCDate(varDate) {
	var newDate;

	if(varDate == "null" || varDate == null || varDate == "")
		return varDate;

	varDate = new Date(varDate);

	newDate = varDate.getDate() + " ";
	newDate += getMonthName(varDate.getMonth() + 1) + " ";
	newDate += varDate.getFullYear() + " ";
	newDate += varDate.getHours() + ":";
	newDate += varDate.getMinutes() + ":";
	newDate += varDate.getSeconds();

	return newDate;
}

// returns the day of the week where Sunday = 0
function getDay(varDate) {
	var newDate = new Date(varDate);
	return newDate.getDay();
}

function getDayName(day) {
	switch (day) {
		case 0:
			return "Sunday";
		case 1:
			return "Monday";
		case 2:
			return "Tuesday";
		case 3:
			return "Wednesday";
		case 4:
			return "Thrusday";
		case 5:
			return "Friday";
		case 6:
			return "Saturday";
	}
}