﻿// JScript File

var oPopup = window.createPopup();
        
var presentMonths= ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
var otherMonths = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];

var dt_today = new Date();

var dt_current = new Date();
        
var dt_firstday = new Date(dt_current);

var controlName;

function showCalendar(cntName)
{
   dt_current = new Date();
   dt_firstday = new Date(dt_current);
   controlName = cntName
   dt_firstday.setDate(1);
   dt_firstday.setDate(1 - (6 + dt_firstday.getDay()) % 7);
   populateCalendar(dt_firstday);
}

function set_datetime(clickDate) {
selectedDate = new Date(dt_firstday);
selectedDate.setDate(selectedDate.getDate() + clickDate - 1);
document.getElementById(controlName+'_txtDate').value =  selectedDate.getDate()+"/"+(selectedDate.getMonth()+1)+"/"+(selectedDate.getYear());
oPopup.hide();
}

       
function scrollMonthPrev()
{
        var dt_prev_month = new Date(dt_current);
        dt_prev_month.setMonth(dt_prev_month.getMonth() - 1);
        if (dt_prev_month.getDate() != dt_current.getDate())
        dt_prev_month.setDate(0);
        dt_current = new Date(dt_prev_month);
        dt_firstday = new Date(dt_current);
        dt_firstday.setDate(1);
        dt_firstday.setDate(1 - (6 + dt_firstday.getDay()) % 7);
        populateCalendar(dt_firstday);
} 

function scrollMonthNext()
{
        var dt_next_month = new Date(dt_current);
        dt_next_month.setMonth(dt_next_month.getMonth() + 1);
        if (dt_next_month.getDate() != dt_current.getDate())
        dt_next_month.setDate(0);
        dt_current = new Date(dt_next_month);
        dt_firstday = new Date(dt_current);
        dt_firstday.setDate(1);
        dt_firstday.setDate(1 - (6 + dt_firstday.getDay()) % 7);
        populateCalendar(dt_firstday);
} 
        
function populateCalendar(startDate1) 
{
    var startDate = new Date(startDate1);
            for(var i = 1; i<43; i++)
            {
                var dayID = controlName + "_" + i;
                var newDate = new Date(startDate);
                newDate.setDate(startDate.getDate() + i -1);
                document.getElementById(dayID).innerHTML = newDate.getDate();
                document.getElementById(dayID).style.textDecoration = "none";
                document.getElementById(dayID).style.tabIndex = "-1";
                if(newDate.getDate() == dt_today.getDate() && newDate.getMonth() == dt_today.getMonth() && newDate.getYear() == dt_today.getYear())
                {
                      document.getElementById(dayID).parentNode.style.backgroundColor = "#930327";
                      document.getElementById(dayID).style.color = "#ffffff";
                      
                }
                else
                {
//                    document.getElementById(dayID).style.backgroundColor = "#FFFFFF";
//                    document.getElementById(dayID).style.color = "#000000";
                      if(newDate.getMonth() == dt_current.getMonth())
                        {
                           //document.getElementById(dayID).style.fontWeight = "bold";
                           //document.getElementById(dayID).parentNode.className = "day";
                           document.getElementById(dayID).parentNode.style.backgroundColor = "#ffffe0";
                           document.getElementById(dayID).style.color = "#000000";
                        }
                        else
                        {
                            document.getElementById(dayID).parentNode.style.backgroundColor = "#BABCBD";
                            document.getElementById(dayID).style.color = "#8E9193";
                        }
                }
                
            }
            
            var dt_prev_month = new Date(dt_current);
            dt_prev_month.setMonth(dt_prev_month.getMonth() - 1);
            if      (dt_prev_month.getDate() != dt_current.getDate())
	        dt_prev_month.setDate(0);

            var dt_next_month = new Date(dt_current);
            dt_next_month.setMonth(dt_next_month.getMonth() + 1);
            if (dt_next_month.getDate() != dt_current.getDate())
	        dt_next_month.setDate(0);
	        
           document.getElementById(controlName + "_Prev").innerHTML = otherMonths[dt_prev_month.getMonth()];
           document.getElementById(controlName + "_Present").innerHTML = presentMonths[dt_current.getMonth()]+' '+dt_current.getFullYear();
           document.getElementById(controlName + "_Next").innerHTML = otherMonths[dt_next_month.getMonth()];
           oPopup.document.body.innerHTML = document.getElementById(controlName + '_divCalendar').innerHTML; 
           oPopup.show(0, 28, 185, 164,document.getElementById(controlName+'_txtDate'));
}

function isValidDate(d) {
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intDay;
	var intMonth;
	var intYear;
	var booFound = false;
	var strSeparatorArray = new Array(".","/");
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
	strDate = d;
	if (strDate.length < 1) {
		return false;
	}
	if (strDate.toLowerCase()=="today" || strDate.toLowerCase()=="now"){return true;}

	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if (strDateArray.length != 3) 
			{
				err = 1;
				return false;
			}
			else 
			{
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
			}
			booFound = true;
		}
	}

	if (booFound == false) {
		if (strDate.length>5) {
			strDay = strDate.substr(0, 2);
			strMonth = strDate.substr(2, 2);
			strYear = strDate.substr(4);
		}
		else
			return false;
	}
	
	// verify year part	2 or 4 digits
	if (strYear.length != 2 && strYear.length != 4) {return false;}
	if (isNaN(strYear)){return false;}
	

	// verify 1 or 2 digit integer day
	if (strDay.length<1 || strDay.length>2) {return false;}
	if (isNaN(strDay)){return false;}
	
	// month may be digits of characters, hence following check
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) {
		for (i = 0;i<12;i++) {
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
				intMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;
			}
		}
		if (isNaN(intMonth)) {
			err = 3;
			return false;
		}
	}

	intDay=parseInt(strDay,10);
	intYear = parseInt(strYear, 10);
	
	if (intMonth>12 || intMonth<1) {
		err = 5;
		return false;
	}
	
	// day in month check
	if (intDay < 1 || intDay > 31){return false;}
		
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intDay > 30)) {
		return false;
	}
	
	if (intMonth == 2) {
		if (LeapYear(intYear)) {
			if (intDay > 29) {return false;}
		}
		else 
		{
			if (intDay > 28) {return false;}
		}
	}
	
	return true;
}

function LZ(x) {return(x<0||x>9?"":"0")+x}

function LeapYear(intYear) {
	if (intYear % 100 == 0) {
		if (intYear % 400 == 0) { return true; }
	}
	else {
		if ((intYear % 4) == 0) { return true; }
	}
	return false;
}

function isEarlierOrEqual(start,end)
{
	// convert dates to dd/mm/yyyy
	if(!isValidDate(start))
	    return false;
	if(!isValidDate(end))
	    return false;
	
	if (start=="" || end=="") return false;
	var startparts= start.split("/");
	var endparts=end.split("/");
	
	if (Date.UTC(startparts[2],startparts[1],startparts[0]) <= Date.UTC(endparts[2],endparts[1],endparts[0]))
		return true;
	else
		return false;
}

function isValidTime(strTime) {
	// Checks if time is in HH:MM:SS format.
	// The seconds are optional.
    
	var timePat = /^(\d{1,2}):(\d{2})?$/;
	var matchArray = strTime.match(timePat);
	if (matchArray == null) {
		return false;
	}
    
	hour = matchArray[1];
	minute = matchArray[2];

	if (hour < 0  || hour > 12) {
		return false;
	}

	if (minute<0 || minute > 59) {
		return false;
	}
	
	return true;
}

function Trim(s)
{
	var trimmed="";
	var leading = true;
	var trailing = true;
	
	// strip leading spaces
    for(var i = 0; i < s.length; i++) 
	{
        var c = s.charAt(i);
        if (c == ' ') 
        { 
			if (leading==false)
			{
				trimmed=trimmed+c;
			}
		}
		else
		{	
			leading=false;
			trimmed=trimmed+c;
		}
    }
    
    // strip trailing spaces
    for (var i = trimmed.length-1; i>0; i--) 
    {
		var c = trimmed.charAt(i);
		if (c != " ")
		{
			return trimmed;
		}
		else
		{
			trimmed=trimmed.substr(0,trimmed.length-1);
		}
    }
	
	return trimmed;
}