﻿// JScript File

    String.prototype.trim = function() 
	{
		return this.replace(/^\s*(\b.*\b|)\s*$/, "$1");
	}
	String.prototype.asId = function()
	{
		return (isNaN(this))?'0':this;
	}

	
	// Seting/Getting combo data
	function SetComboValue(cb, strValue)
	{
		var bSet = false;
		if(null == cb)return;
		cb.selectedIndex =0;
		for(var i=0; i<cb.length; i++)
		{
			if(cb.options[i].value==strValue && bSet == false)
			{
				cb.selectedIndex =i;
				cb.options[i].selected = true;
				bSet = true;				
			}	
			else
			{
				cb.options[i].selected = false;
			}
		}
	}
	function SetComboText(cb, strText)
	{
		if(null == cb)return;
		strText = strText.toUpperCase();
		for(var i=0; i <cb.length; i++)
		{
			if(cb.options[i].innerText.toUpperCase()==strText)
			{
				cb.selectedIndex=i;
				break;
			}	
		}
	}
	
	function GetComboText(cb)
	{
		var sel = '';
		if(null != cb)
		{
			if(null != cb.selectedIndex)
			{
				var i = cb.selectedIndex;
				if(i > -1)
					sel = cb.options[i].innerText;
			}
		}
			
		return sel.trim();
	}

	function GetComboValue(cb)
	{
		var sel = 0;
		if(null != cb)
		{
			if(null != cb.selectedIndex)
			{
				var i = cb.selectedIndex;
				if(i > -1)
					sel = cb.options[i].value;
			}	
		}
		return sel;
	}
	
	function IsValueInCombo(cb, value)
	{
		var ret = false;
		if(null != cb)
			if(null != cb.options)
				for(var i=0; i<cb.options.length; i++)
					if(cb.options[i].value==value)
					{
						i=cb.options.length;
						ret=true;
					}
		return ret;
	}
	
	
	function IsTextInCombo(cb, value)
	{
		var ret = false;
		if(null != cb)
			if(null != cb.options)
				for(var i=0; i<cb.options.length; i++)
					if(cb.options[i].innerText==value)
					{
						i=cb.options.length;
						ret=true;
					}
		return ret;
	}
	
	//Functions to Add - Yr, Week, Day to the Date
function isDate(p_Expression)
{
	return !isNaN(new Date(p_Expression));
}


// REQUIRES: isDate()
function dateAdd(p_Interval, p_Number, p_Date){
	if(!isDate(p_Date)){return "invalid date: '" + p_Date + "'";}
	if(isNaN(p_Number)){return "invalid number: '" + p_Number + "'";}	

	p_Number = new Number(p_Number);
	var dt = new Date(p_Date);
	switch(p_Interval.toLowerCase()){
		case "yyyy": {// year
			dt.setFullYear(dt.getFullYear() + p_Number);
			break;
		}
		case "q": {		// quarter
			dt.setMonth(dt.getMonth() + (p_Number*3));
			break;
		}
		case "m": {		// month
			dt.setMonth(dt.getMonth() + p_Number);
			break;
		}
		case "y":		// day of year
		case "d":		// day
		case "w": {		// weekday
			dt.setDate(dt.getDate() + p_Number);
			break;
		}
		case "ww": {	// week of year
			dt.setDate(dt.getDate() + (p_Number*7));
			break;
		}
		case "h": {		// hour
			dt.setHours(dt.getHours() + p_Number);
			break;
		}
		case "n": {		// minute
			dt.setMinutes(dt.getMinutes() + p_Number);
			break;
		}
		case "s": {		// second
			dt.setSeconds(dt.getSeconds() + p_Number);
			break;
		}
		case "ms": {		// second
			dt.setMilliseconds(dt.getMilliseconds() + p_Number);
			break;
		}
		default: {
			return "invalid interval: '" + p_Interval + "'";
		}
	}
	return dt;
}

function ServerRequest(arrItems, strUrl, bReturnEntireResponse,bReturnRawResponse)
	{
		//*** Generic wrapper for calls to XMLHTTP 
		//*** arrItems: An array of strings to send to server. Will be converted to xml nodelist before sending - in the form "<Params><Param>item1</Param><Param>item2</Param></Params>"
		//*** strUrl: The aspx page to call.
		//*** bReturnEntireResponse: When true, returns the entire HTML response as a string.  
		//***						 When false, will attempt to return an xml element from the response.
		//*** If an error occurs, it can be returned in the xml element and raised here at the end.
		//*** bReturnRawResponse : If Xml is not required then just set this to true and function will return the raw response
		
		var bAll = (null !=bReturnEntireResponse)?bReturnEntireResponse:false;
		var ret = null;
		if(null != arrItems && arrItems.length && null != strUrl && strUrl.length)
		{
			var ohttp = new ActiveXObject('Microsoft.XMLHTTP');
			var strParams = '';
			for(var i =0; i < arrItems.length; i++)
			{
				strParams += '<Param>data</Param>'.replace(/data/, arrItems[i]); 	
			}
			var strXml = '<Params>data</Params>'.replace(/data/, strParams);
			
			if(strXml.indexOf('paramcount') > -1 )
			{
				if(strXml.indexOf(beginParamConst) == -1)
				{
					var lastIndex = 0;
					var firstIndex = 0;
					while(firstIndex <= strXml.length && firstIndex > -1)
					{
						lastIndex = strXml.indexOf(' $(', firstIndex);
						strXml = strXml.replace('$(', beginParamConst, lastIndex);
						firstIndex = strXml.indexOf(' $(', lastIndex + 2)
					}
				}
				
				if(strXml.indexOf(endParamConst) == -1)
				{
					var lastIndex = 0;
					var firstIndex = 0;
					while(firstIndex <= strXml.length && firstIndex > -1)
					{
						lastIndex = strXml.indexOf(')$ ', firstIndex);
						strXml = strXml.replace(')$', endParamConst, lastIndex);
						firstIndex = strXml.indexOf(')$ ', lastIndex + 2)
					}
				}
			}
			
			ohttp.open('POST', strUrl, false);
			ohttp.send(strXml);
			var response = ohttp.responseText;
			if(bAll)
			{
				ret = response.substring(response.toUpperCase().indexOf('<HTML'));
			}else if (bReturnRawResponse==true)
			{			
				response = response.substring(0, response.indexOf('\r\n'));
				ret=response;
			}
			else
			{
				var xd = new ActiveXObject('Microsoft.XMLDOM');
				response = response.substring(0, response.indexOf('\r\n'));
				try
				{
					xd.loadXML(response);
					var elm = xd.documentElement;
				}
				catch(e){}
				if(null != elm && null != elm.childNodes[0])ret = elm;
			}
		}
		if(null != ret)
		{
			if(null !=elm)
			{
				var elmError = elm.childNodes[0].selectSingleNode('ErrorResult');
				if(null!=elmError)
				{
					alert(elmError.text);
					ret = null;
				}
			}
		}
		return ret;
	}
	
	
	function OpenModalDialogCenterScreen(strURL, varDialogArgument, intWindowWidth, intWindowHeight, strExtraFeatures) {
	    var screenWidth=screen.width
	    var screenHeight=screen.height

		if(intWindowWidth==0)intWindowWidth=1;
		if(intWindowHeight==0)intWindowHeight=1;
		
        if (strExtraFeatures==null || strExtraFeatures==''){
			strExtraFeatures=';help:no;status:no';
	    }

	    var leftPos=Math.round((screenWidth/2)-(intWindowWidth/2))
	    var topPos=Math.round((screenHeight/2)-(intWindowHeight/2))
		
	    return window.showModalDialog(strURL, varDialogArgument, 'dialogheight:' + intWindowHeight + 'px;dialogwidth:' + intWindowWidth  + 'px;dialogtop:' + topPos + 'px;dialogleft:' + leftPos + 'px' + strExtraFeatures);
	}
	
	
	function OpenDialogCenterScreen(strURL, strName, intWindowWidth, intWindowHeight, strExtraFeatures, intLeftOffset, intTopOffset) {
	    var screenWidth=screen.width
	    var screenHeight=screen.height
	    
	    if(null==intLeftOffset)intLeftOffset=0;
	    if(null==intTopOffset)intTopOffset=0;
	    	    		
		if(strName=='')strName='_blank';
		if(intWindowWidth==0)intWindowWidth=1;
		if(intWindowHeight==0)intWindowHeight=1;
		
	    var leftPos=Math.round((screenWidth/2)-(intWindowWidth/2))
	    var topPos=Math.round((screenHeight/2)-(intWindowHeight/2))
	    
	    if (intLeftOffset!=0)leftPos+=intLeftOffset;
	    if (intTopOffset!=0)topPos+=intTopOffset;

	    return window.open(strURL, strName, "left=" + leftPos + ",top=" + topPos + ",width=" + intWindowWidth + ",height=" + intWindowHeight + strExtraFeatures);
	}
	
	
	function ResetCheckBoxList(lstListBoxName, bSet)
	{
		var d=document.all;
		for(i=0;i<d.item(lstListBoxName).rows.length;i++)
		{			
			d.item(lstListBoxName + "_" + i).checked=bSet;
		}
	
	}
	
	function CountOfSelectedItems(lstListBoxName)
	{
		var d=document.all;
		var Count = 0;
		for(i=0;i<d.item(lstListBoxName).rows.length;i++)
		{			
			if (d.item(lstListBoxName + "_" + i).checked==true)
			{
				Count = Count + 1;
			}
		}
		return Count;		
	}
	
	function CheckIfListItemSelected(lstListBoxName)
	{
		var d=document.all;
		for(i=0;i<d.item(lstListBoxName).rows.length;i++)
		{			
			if (d.item(lstListBoxName + "_" + i).checked==true)
			{
				return true;
			}
		}
		return false;
	}
	
	function SetCheckBoxListItem(lstListBoxName,strValue,arrRefArray)
	{
		var d=document.all;
		for(i=0;i<arrRefArray.length;i++)
		{			
			if (arrRefArray[i]==strValue)
			{
				d.item(lstListBoxName + "_" + i).checked=true;
			}
		}
	}
	
		function rVal()
	{
		
		var d = new Date();		
		return '?rv=' + d.getTime();
		
	}
	
	
		function CompareDates(strLoDate, strHiDate, strLoName,  strHiName)
	{
		var bReturn = true; //assumption valid 
		try
		{
			var d1 = new Date(strLoDate);
			var d2 = new Date(strHiDate);
		}
		catch(e){}
		if(null != d1 && null != d2 &&(d1 > d2))
		{
			bReturn= false;
			if(null != strLoName && null != strHiName && strLoName != '' && strHiName != '')
				alert(strLoName + ' cannot be greater than ' + strHiName);
		}
		
		return bReturn;
	}
	
	function CheckValidDate(ctl)
	{
		try
		{
			var ad = new Date(ctl.value);
			if(null == ad || 'NaN' == ad)
			{
				return false;
			}
		}
		catch(e)
		{
			return false;
		}
		return true;
	}
	
	function CheckValidNumeric(strNumbers) 
	{
		var Parsed = parseInt(strNumbers).toString();
		
		if (isNaN(Parsed)) 
			return false;
		
		if (Parsed.length != strNumbers.length)
		{
			return false;
		}
		return true;
	}
	
	function CheckValidInt32(strNumbers) 
	{
		if ((CheckValidNumeric(strNumbers)) && ( strNumbers <= 2147483647)) 
			return true;
		return false;
	}
	
	function GetLeft(o)
	{
		var l = 0;
		var p=o;
		for(;p!=null;p=p.offsetParent)
		{
			l+=p.offsetLeft;	
		}
		return l;	
	}
	function GetTop(o)
	{
		var t = o.offsetHeight;
		var p = o;
		for(;p!=null;p=p.offsetParent)
		{
			t+=p.offsetTop +1;	
		}
		return t;	
	}
	
	function RequestForInfoCancelClick()
{
    var d=document.all;    
    d.ctl00_ContentPlaceHolder1_txtFirstName.value = '';
    d.ctl00_ContentPlaceHolder1_txtLastName.value = '';
    d.ctl00_ContentPlaceHolder1_txtEmail.value = '';
    d.ctl00_ContentPlaceHolder1_txtPhone.value = '';
    d.ctl00_ContentPlaceHolder1_txtMobile.value = '';
    d.ctl00_ContentPlaceHolder1_txtQuestion.value = '';
    d.ctl00_ContentPlaceHolder1_txtComment.value = '';    
    SetComboValue(d.ctl00_ContentPlaceHolder1_cboType, 0);
    return false;
}


function GetDateTime()
{
    d = new Date();
    dateText = "";
    dayValue = d.getDay();
    
    if (dayValue == 0)
        dateText += "Sunday";
    else if (dayValue == 1)
        dateText += "Monday";
    else if (dayValue == 2)
        dateText += "Tuesday";
    else if (dayValue == 3)
        dateText += "Wednesday";
    else if (dayValue == 4)
        dateText += "Thursday";
    else if (dayValue == 5)
        dateText += "Friday";
    else if (dayValue == 6)
        dateText += "Saturday";

    monthValue = d.getMonth();
    
    dateText += " "
    
    if (monthValue == 0)
        dateText += "January";
    if (monthValue == 1)
        dateText += "February";
    if (monthValue == 2)
        dateText += "March";
    if (monthValue == 3)
        dateText += "April";
    if (monthValue == 4)
        dateText += "May";
    if (monthValue == 5)
        dateText += "June";
    if (monthValue == 6)
        dateText += "July";
    if (monthValue == 7)
        dateText += "August";
    if (monthValue == 8)
        dateText += "September";
    if (monthValue == 9)
        dateText += "October";
    if (monthValue == 10)
        dateText += "November";
    if (monthValue == 11)
        dateText += "December";

    if (navigator.appName.indexOf('Microsoft') != -1)
        dateText += " " + d.getDate() + ", " + (0000 + d.getYear());
    else if (navigator.appName.indexOf('Netscape') != -1)
        dateText += " " + d.getDate() + ", " + (1900 + d.getYear());

    minuteValue = d.getMinutes();
    
    if (minuteValue < 10)
        minuteValue = "0" + minuteValue

    hourValue = d.getHours();
    
    var secs = d.getSeconds();
    
    if (secs < 10) secs = "0" + secs;
    
    if (hourValue < 12)
    {        
        timeText = hourValue + ":" + minuteValue + ":" + secs + " AM.";
    }
    else if (hourValue == 12)
    {        
        timeText = hourValue + ":" + minuteValue + ":" + secs + " PM.";
    }
    else if (hourValue > 12)
    {    
        timeText = (hourValue-12) + ":" + minuteValue + ":" + secs + " PM.";    
    }
       
    
    return dateText + ". " + timeText;
       
}

function UpdateTime()
{
        try        
        {
            var TotalTime = GetDateTime();
              
            document.getElementById("spnTime").innerHTML = TotalTime; 

            setTimeout("UpdateTime()", 1000) 
        }
        catch(Exception)
        {
            //Handle
        }

}

function addOption(selectbox, text, value)
{
    var optn = document.createElement("OPTION");
    optn.text = text;
    optn.value = value;
    selectbox.options.add(optn);
}


