﻿// JScript File
// Created 2007-05-17

// ******************************************** CORE FUNCTIONS ****************************** //
function getRadioValue(obj) {
	if (obj) {
		for (var i=0; i<obj.length; i++) {
			if (obj[i].checked)
				return obj[i].value;
		}
	}
	return null;
}

function getSelectionValue(obj) {
	obj=document.getElementById(obj)
	if (obj && obj.selectedIndex >= 0) {
		return obj.options[obj.selectedIndex].value;
	}
	
	return '';
}
function setSelectionValue(obj,value) {
	obj=document.getElementById(obj);
	if (!obj) return;
	if (value!=null) {
		if (value.length>0) {
			obj.selectedIndex= getIndexOfOption(obj, value);
		} else {
			obj.selectedIndex= -1;
		}
	}
}
function Mid(str, start, len){
    if (start < 0 || len < 0) return "";
    var iEnd, iLen = String(str).length;
    if (start + len > iLen)
          iEnd = iLen;
    else
          iEnd = start + len;
    return String(str).substring(start,iEnd);
}
function MonthNameToInt(monthname){
    switch(monthname.toLowerCase()){
        case "jan": 
            return "01";
        case "feb": 
            return "02";
        case "mar": 
            return "03";
        case "apr": 
            return "04";
        case "may": 
            return "05";
        case "jun": 
            return "06";
        case "jul": 
            return "07";
        case "aug": 
            return "08";
        case "sep": 
            return "09";
        case "oct": 
            return "10";
        case "nov": 
            return "11";
        case "dec": 
            return "12";
    }
    return monthname
}
function MonthIntToName(monthint){
    switch(monthint){
        case "01":
        case "1":
            return "Jan";
        case "02":
        case "2":
            return "Feb";
        case "03":
        case "3":
            return "Mar";
        case "04":
        case "4":
            return "Apr";
        case "05":
        case "5":
            return "May";
        case "06":
        case "6":
            return "Jun";
        case "07":
        case "7":
            return "Jul";
        case "08":
        case "8":
            return "Aug";
        case "09": 
        case "9":
            return "Sep";
        case "10": 
            return "Oct";
        case "11": 
            return "Nov";
        case "12": 
            return "Dec";
    }
    return monthint
}

// Add Days
function addDays(isoDate, noOfDays) {
	var aDate=cvtISOToDate(isoDate);
	if (!aDate) return "";
	var millis=86400000 * noOfDays;
	aDate=new Date(aDate.getTime()+millis);
	return fmtDateISO(aDate);
}


// Validate a date
function isValidDate(isoDate) {
	if (isoDate==null) {return false;}
	var maxDays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var date = isoDate.split("-");
	if (date[0] >= 1900 && date[0] < 2100) {
		if (date[1] > 0 && date[1] <= 12) {
			if (date[2] > 0) {
				if (date[2] <= maxDays[date[1]-1]) {
					return true;
				}
				return (date[2]==29 && date[1]==2 && (date[0] % 4 == 0));
			}
		}
	}
	return false;
}


// Return the difference, in days, between 2 ISO dates
// The timezone offset is included to ensure all calculations are consistent 
// with UTC (R1377)
function dayDiff(toDate,fromDate) {
	var endDay=cvtISOToDate(toDate);
	var endDayOffset=endDay.getTimezoneOffset()*60000;
	var startDay=cvtISOToDate(fromDate);
	var startDayOffset=startDay.getTimezoneOffset()*60000;
	var offset=endDayOffset-startDayOffset;
	return ((endDay-startDay-offset)/86400000);
}

function cvtISOToDate(isoDate) {
	var atomDate= isoDate.split('-');
	var aDate=new Date(parseInt(atomDate[0],10),parseInt(atomDate[1],10)-1,parseInt(atomDate[2],10),6,0,0);
	return aDate;
}
function fmtDateISO(aDate) {
	with (aDate) {
		var mm=getMonth()+1;
		if (mm<10) {mm='0'+mm;}
		var dd=getDate();
		if (dd<10) {dd='0'+dd;}
		return (getFullYear() + '-' + mm + '-' + dd);
	}
}

// Get & Set Dates based on 2 Combo boxes |Day| & |MonthYear|
function getDspDate(dayObj,monthYearObj) {
	var day=getSelectionValue(dayObj);
	var monthYear=getSelectionValue(monthYearObj);
	
	var MonthName=Mid(monthYear,0,3);
	var Year=Mid(monthYear,4,4);
	
	monthYear=Year+"-"+MonthNameToInt(MonthName)
	
	if (Number(day)<1 || monthYear=='') {
		return null;
	}
	return cvtDateToISO(day,monthYear);
}
function cvtDateToISO(day, monthYear) {
  	return (monthYear + "-" + day);
}
function setDspDate(isoDate,dayObj,monthYearObj) {
dayObj=document.getElementById(dayObj)
monthYearObj=document.getElementById(monthYearObj)
	if (isValidDate(isoDate)) {
        	var date= isoDate.split("-");
        	var monthYear= MonthIntToName(date[1]) +' ' + date[0];
        	var count=monthYearObj.length;
        	for (var idx= 0; idx< count; idx++) {
        		if (monthYearObj.options[idx].value== monthYear) {
        			monthYearObj.options[idx].selected= true;
				    dayObj.selectedIndex= date[2]
        			return;
        		}
        	}
	}
	//dayObj.selectedIndex= -1;
	//monthYearObj.selectedIndex= -1;
}