function calcRemainingChars(box)
{
	var remaining = (2000 - box.value.length);
	
	if (remaining >= 0) {
		box.form.charsremaining.value = remaining;
		return true;
	}
	else {
		//box.value = box.value.substr(0,999);
		box.form.charsremaining.value = 0;
		//alert('Your biography is longer than 1000 characters.  The extra characters were cut off.  Please review the revised text.');
		//box.focus();
		//return false;
		return true;
	}
}

function calcRemainingChars2(box, maxLength)
{
	var remaining = (maxLength - box.value.length);
	
	if (remaining >= 0) {
		box.form.charsremaining.value = remaining;
		return true;
	}
	else {
		box.form.charsremaining.value = 0;
		box.value = box.value.substring(0, maxLength);
		if( box.id == 'txbxComments')
		{
		    var message = 'If you need more room, please contact ' ;
		    //alert( message );
		    PMName = document.getElementById('LabelPMName');
		    //alert( PMName.innerHTML );
		    PMEmail = document.getElementById('LinkPMEmail');
		    //alert( PMEmail );		    
		    ExceedChars = document.getElementById( 'spanExceedChars' );
		    //alert( message + LabelPMName.innerHTML + ' at ' + LinkPMEmail.innerHTML );
		    ExceedChars.innerHTML = message + PMName.innerHTML + ' at <a href=\'mailto:'+ PMEmail.innerHTML +'\'>' + PMEmail.innerHTML +'</a>';
		    
		}
		
		return true;
	}
}

function hideSummaries() {
	var summary, sums, s;
	for (sums = 0; sums < Page_ValidationSummaries.length; sums++) {
		summary = Page_ValidationSummaries[sums];
		summary.style.display = "none";
	}
}

function selectAll(control) {
	var name = control.id; //probably grid__ctl1_selectAll or grid__ctl2_selectAll
	var inIndex = name.indexOf("ctl");
	var index = 2;
	var rowNum = 1;
	if (inIndex > -1)
	{
		rowNum = name.substr(inIndex + 3, 1);
		index = (rowNum - 0) + 1;
	}
	do {
		var name2 = name.replace('ctl' + rowNum, 'ctl' + index);
		name2 = name2.replace('All', '');
		var check = eval('document.all.' + name2);
		if (check) {
			if (!check.disabled) {
				check.checked = control.checked;
			}
		} else {
			break;
		}
		index++;
	} while(true);
}

function enableAddress() {
    var address = document.getElementById('ctl00_ContentPlaceHolder1_PaymentrequestPanel_useAddress');
    
    if (address)
    {
    	var enabled = !address.checked;
    	document.getElementById('ctl00_ContentPlaceHolder1_PaymentrequestPanel_street1').disabled = !enabled;
		document.getElementById('ctl00_ContentPlaceHolder1_PaymentrequestPanel_street2').disabled = !enabled;
		document.getElementById('ctl00_ContentPlaceHolder1_PaymentrequestPanel_city').disabled = !enabled;
		document.getElementById('ctl00_ContentPlaceHolder1_PaymentrequestPanel_state').disabled = !enabled;
		document.getElementById('ctl00_ContentPlaceHolder1_PaymentrequestPanel_postalCode').disabled = !enabled;
		document.getElementById('ctl00_ContentPlaceHolder1_PaymentrequestPanel_country').disabled = !enabled;
    }
    
	/*
	if (document.all.PaymentRequestPanel_useAddress) {
		var enabled = !document.all.PaymentRequestPanel_useAddress.checked;
		document.all.PaymentRequestPanel_street1.disabled = !enabled;
		document.all.PaymentRequestPanel_street2.disabled = !enabled;
		document.all.PaymentRequestPanel_city.disabled = !enabled;
		document.all.PaymentRequestPanel_state.disabled = !enabled;
		document.all.PaymentRequestPanel_postalCode.disabled = !enabled;
		document.all.PaymentRequestPanel_country.disabled = !enabled;
	}*/
}

function isValidDate(dateStr) {
	// Checks for the following valid date formats:
	// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY

	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/; // requires 4 digit year

	var matchArray = dateStr.match(datePat);
	if (matchArray == null) {
		alert(dateStr + " Date is not in a valid format.")
		return false;
	}
	month = matchArray[1]; // parse date into variables
	day = matchArray[3];
	year = matchArray[4];
	if (month < 1 || month > 12) { // check month range
		alert("Month must be between 1 and 12.");
		return false;
	}
	if (day < 1 || day > 31) {
		alert("Day must be between 1 and 31.");
		return false;
	}
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		alert("Month "+month+" doesn't have 31 days!")
		return false;
	}
	if (month == 2) { // check for february 29th
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
		if (day > 29 || (day == 29 && !isleap)) {
			alert("February " + year + " doesn't have " + day + " days!");
			return false;
		}
	}
	return true;
}

function isValidTime(timeStr) {
	// Checks if time is in HH:MM:SS AM/PM format.
	// The seconds and AM/PM are optional.

	var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;

	var matchArray = timeStr.match(timePat);
	if (matchArray == null) {
		alert("Time is not in a valid format.");
		return false;
	}
	hour = matchArray[1];
	minute = matchArray[2];
	second = matchArray[4];
	ampm = matchArray[6];

	if (second=="") { second = null; }
	if (ampm=="") { ampm = null }

	if (hour < 0  || hour > 23) {
		alert("Hour must be between 1 and 12. (or 0 and 23 for military time)");
		return false;
	}
	if (hour <= 12 && ampm == null) {
		if (confirm("Please indicate which time format you are using.  OK = Standard Time, CANCEL = Military Time")) {
			alert("You must specify AM or PM.");
			return false;
		}
	}
	if  (hour > 12 && ampm != null) {
		alert("You can't specify AM or PM for military time.");
		return false;
	}
	if (minute < 0 || minute > 59) {
		alert ("Minute must be between 0 and 59.");
		return false;
	}
	if (second != null && (second < 0 || second > 59)) {
		alert ("Second must be between 0 and 59.");
		return false;
	}
	return true;
}

function dateDiff(startDate, startTime, endDate, endTime) {
	date1 = new Date();
	date2 = new Date();
	diff  = new Date();

	var date1temp = new Date(startDate.value + " " + startTime.value);
	date1.setTime(date1temp.getTime());
	/*if (isValidDate(startDate.value) && isValidTime(startTime.value)) { // Validates first date 
		var date1temp = new Date(startDate.value + " " + startTime.value);
		date1.setTime(date1temp.getTime());
	} else {
		return 0; // otherwise exits
	}*/

	var date2temp = new Date(endDate.value + " " + endTime.value);
	date2.setTime(date2temp.getTime());
	/*if (isValidDate(endDate.value) && isValidTime(endTime.value)) { // Validates second date 
		var date2temp = new Date(endDate.value + " " + endTime.value);
		date2.setTime(date2temp.getTime());
	} else {
		return 0; // otherwise exits
	}*/

	// sets difference date to difference of first date and second date

	diff.setTime(Math.abs(date1.getTime() - date2.getTime()));

	timediff = diff.getTime();

	//weeks = Math.floor(timediff / (1000 * 60 * 60 * 24 * 7));
	//timediff -= weeks * (1000 * 60 * 60 * 24 * 7);

	//days = Math.floor(timediff / (1000 * 60 * 60 * 24)); 
	//timediff -= days * (1000 * 60 * 60 * 24);

	//hours = Math.floor(timediff / (1000 * 60 * 60)); 
	//timediff -= hours * (1000 * 60 * 60);

	var mins = Math.floor(timediff / (1000 * 60)); 
	//timediff -= mins * (1000 * 60);

	//secs = Math.floor(timediff / 1000); 
	//timediff -= secs * 1000;

	return mins;
	//dateform.difference.value = weeks + " weeks, " + days + " days, " + hours + " hours, " + mins + " minutes, and " + secs + " seconds";
}

function formatCurrency(amount) {
	var delimiter = ",";
	amount = amount.replace(delimiter, "");
	if (amount.indexOf('.') == 0) {
		amount = '0' + amount;
	}
	var a = amount.split('.', 2);
	var d = a[1];
	var i = parseInt(a[0]);
	if (isNaN(i)) {
		return '';
	}
	var minus = '';
	if (i < 0) {
		minus = '-';
	}
	i = Math.abs(i);
	var n = new String(i);
	var a = [];
	while (n.length > 3)
	{
		var nn = n.substr(n.length - 3);
		a.unshift(nn);
		n = n.substr(0, n.length - 3);
	}
	if (n.length > 0) {
		a.unshift(n);
	}
	n = a.join(delimiter);
	if (d == null || d.length < 1) {
		amount = n + '.00';
	} else if (d.length == 1) {
		amount = n + '.' + d + '0';
	} else {
		amount = n + '.' + d;
	}
	amount = minus + amount;
	return amount;
}

function calcTotal(formName) {
	try {
	
	    //alert( formName );
		var date = eval("document.all." + formName + "_date");
		var startTime = eval("document.all." + formName + "_startTime");
		var endTime = eval("document.all." + formName + "_endTime");
		
		//alert(startTime.value);
		
		if (startTime.value == "" || endTime.value == "") {
			return;
		}
		
		var minHours = eval("document.all." + formName + "_advisorMinimum.value");
		var minMinutes = (minHours * 60);
		var rate = eval("document.all." + formName + "_advisorRate.value");
		var minuteRate = (rate / 60);
		var totalMinutes = dateDiff(date, startTime, date, endTime);
		var amount = Math.max(totalMinutes, minMinutes) * minuteRate;
		var amountX100 = Math.round(amount * 100);
		amount = amountX100 / 100;
		
		var total = eval("document.all." + formName + "_totalLabel");
		total.innerText = "$" + formatCurrency(amount.toString());
	} catch (e) {
	}
}

function CheckGrtHrs(HRsDif, SHrName, SMinName, SMName, EHrName, EMinName, EMName) {
	
	try {
	    
	    //alert( SHrName + ' ' +  EHrName );
	    var shr = document.getElementById(SHrName);
	    var smin = document.getElementById(SMinName);
	    var sm = document.getElementById(SMName);
	    var ehr = document.getElementById(EHrName);
	    var emin = document.getElementById(EMinName);
	    var em = document.getElementById(EMName);
	    
	    var startTime = new Date();
	    
	    //alert( shr.value + ':' + smin.value + ' ' + sm.value );
	    //alert( ehr.value + ':' + emin.value + ' ' + em.value );
	    
	    var mySDate = new Date();
        var myEDate = new Date();
        
        if(( sm.value != 'AM/PM' ) &&
           ( em.value != 'AM/PM' ))
        {
	        if( sm.value == 'PM' )
	        {
	        //alert(shr.value);
	        if(shr.value != '12')
	            {
	                mySDate.setHours( parseInt(shr.value, 10)+12 ); 
	            }
	            else
	            {
	                mySDate.setHours( parseInt(shr.value, 10)); 
	            }	        
	        }
	        else
	        {
	            mySDate.setHours( parseInt(shr.value, 10) ); 
	            //alert( '1 StartDate:' + mySDate.getHours() + 'PInt:' + parseInt(shr.value, 10) + 'Value:' + shr.value );
	        }
    	    
	        if( em.value == 'PM' )
	        {
	            myEDate.setHours( parseInt(ehr.value, 10)+12 ); 
	        }
	        else
	        {
	            myEDate.setHours( parseInt(ehr.value, 10) ); 
	        }
    	    
            //alert( 'StartDate:' + mySDate.getHours() + ' EndDate:' + myEDate.getHours() + ' DifTime:' + (myEDate.getHours() - mySDate.getHours()) );
            
            if( (myEDate.getHours() - mySDate.getHours() ) >= HRsDif )
            {
                return confirm( 'You\'re invoice time exceeds ' + HRsDif + ' Hrs, Are you sure that your time is correct?' );
            }
	    }
	} catch (e) {
	}
}

function formatPhoneNumber(field)
{
	var temp = "";
	
	var input = field.value.toUpperCase();
	
	for (var i = 0; i < input.length; i++)
	{
		var currentChar = input.substr(i, 1);
		if ("0".charCodeAt(0) <= currentChar.charCodeAt(0) && currentChar.charCodeAt(0) <= "9".charCodeAt(0))
		{
			temp += currentChar;
		}
		if ("A".charCodeAt(0) <= currentChar.charCodeAt(0) && currentChar.charCodeAt(0) <= "Z".charCodeAt(0))
		{
			temp += currentChar;
		}
	}
	
	if (temp.length == 11 && temp.substr(0, 1) == "1")
	{
		temp = temp.substr(1);
	}
	
	if (temp.length == 10)
	{
		field.value = temp.substr(0, 3) + "-" + temp.substr(3, 3) + "-" + temp.substr(6, 4);
	}
}
