//Updated By: Jatinder Kumar
//Date: 18th may,2006
//Updates: In function ValidateMaxLength comparision for maxlength
//		   (ctlVal.value.length >= iMaxLength) has been changed to
//		   (ctlVal.value.length > iMaxLength) because character cannot be greater maxlength
//		    but can be equal to maxlength

//Updated By: Jatinder Kumar
//Date: 20th may,2006
//Updates: -In function keyRestrict code for restricting user to enter only two digits
//		    after decimal has been added.
//		   -In function ValidateRequiredFields code for if(!forNavigation) has been
//			unCommented to visualizing error messages proprly.


/*Changes the style of Footer Labels*/
function ChangeStyle(bool)
{
	var ctl = event.srcElement;
	ctl.style.textDecorationUnderline = bool;
	if(bool)
		ctl.style.cursor = 'hand';
	else
		ctl.style.cursor = 'default';
}

//********************************************
//Following functions to be called on Keypress
//to validate numeric input
//Author: Neeru Verma
//Date Created: 17-Sep-2005
function getKeyCode(e)
{
	if (window.event)
		return window.event.keyCode;
	else if (e)
		return e.which;
	else
		return null;
}

function keyRestrict(e, validchars, ctl,ValidatorControlId)
{
	var valid = document.getElementById(ValidatorControlId);

	if (valid != null)
		valid.style.visibility = 'hidden';

	var key='', keychar='';
	key = getKeyCode(e);

	if (key == null) return true;

	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	validchars = validchars.toLowerCase();

	if(key == 44)
	{
		var curVal = document.getElementById(ctl.id).value;
		if (curVal.length == 0)
			return false;
	}

	if (validchars.indexOf('.') != -1)
	{
		//restrict user to only one decimal
		var curVal = document.getElementById(ctl.id).value;
		var decVals = curVal.split('.');
		if(decVals.length >= 2 && key == 46)
			return false;

		//restrict user to enter only two digits after decimal
		if(decVals.length == 2)
		{
			if(decVals[1].length >= 2)
				return false;
		}

		//restrict user to enter , after decimal
		if(key == 44)
		{
			if(validchars.indexOf(',') != -1)
			{
				if(curVal.indexOf(',') != -1)
				{
					var commaVals = curVal.split(',');
					if(commaVals[commaVals.length - 1] == '')
						return false;
				}

				var indDec = curVal.indexOf('.');
				var indComma = curVal.indexOf(',');
				if(indDec > indComma || indDec == -1)
					return true;
				else
					return false;
			}
		}
	}

	if (validchars.indexOf(keychar) != -1)
		return true;

	if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
		return true;

	return false;
}

function keyRestrictDate(e, validchars, ctl)
{
	var key='', keychar='';
	key = getKeyCode(e);

	if (key == null) return true;

	keychar = String.fromCharCode(key);
	keychar = keychar.toLowerCase();
	validchars = validchars.toLowerCase();

	if(key == 44)
	{
		var curVal = document.getElementById(ctl.id).value;
		if (curVal.length == 0)
			return false;
	}
	if (validchars.indexOf(keychar) != -1)
		return true;

	if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
		return true;

	return false;
}

//********************************************

//Author: Neeru Verma
//Date Created: 17-Sep-2005
//Format Price eneterd by the user
function format(input)
{
	var num = input.value.replace(/\,/g,'');
	num = num.replace(/,,/g,'');
	var num1 = roundNumber(num,2);

	//var num1 = num;
	num1 = parseFloat(num1);

	if(num1!=0)
	{
		if(!isNaN(num))
		{
				while(num.indexOf('0') == 0)
				{
					num = num.substring(1,num.length);
				}

			if(num.indexOf('.') > -1)
			{
				num = num.split('.');
				num[0] = num[0].toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1,').split('').reverse().join('').replace(/^[\,]/,'');

				if(num[1].length > 2)
					num[1] = num[1].substring(0,num[1].length-1);

				var tmpVal = num[0]+ '.' + getDecimalVal(roundNumber('.'+num[1],2).toString());
				input.value = tmpVal;
			}
			else
			{
				input.value = num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1,').split('').reverse().join('').replace(/^[\,]/,'')
			}
		}

		else
		{
			input.value = input.value.substring(0,input.value.length-1);
		}
	}
}
function getDecimalVal(val1)
{
	if(val1.indexOf('.') > -1)
		return val1.split('.')[1];
	else
		return val1;
}

function roundNumber(numberfield, rlength)
{
	if(parseFloat(numberfield) == 0)
		return ".00";

	var newnumber = Math.round(numberfield*Math.pow(10,rlength))/Math.pow(10,rlength);
	numberfield = newnumber;
	return numberfield;

}


//Author: Neeru Verma
//Date Created: 17-Sep-2005
//Validates all required fields on the form
//also displays Required field validators for the current control.
function ValidateRequiredFields(frmName, forNavigation)
{
	var found = false;
	var firstinvalidcontrol = null;
	var s, i = 0;
	var validators;
	var errormsg;

	switch(frmName)
	{
		case 'General Information':
			s = new Array('Content_txtProjName','Content_txtProjId','Content_txtPropPrice','Content_txtLandPrice','Content_txtAcqDate','Content_txtArchFees','Content_txtDevProfit');
			validators = new Array('Content_rvProjectName','Content_rvProjID','Content_rvPropPrice','Content_rvLandPrice','Content_rvAcqDate','Content_rvArchFees','Content_rvDevProfit');
			break;
		case 'Site Work':
			s = new Array('Content_txtAcquisitionDate','Content_txtZip');
			validators = new Array('Content_rvAcqDate', 'Content_regexvZip');
			break;
		case 'Building':
			s = new Array('Content_txtBuildingName','Content_txtZip','Content_txtConstDate','Content_txtStories','Content_txtTFA');
			validators = new Array('Content_rvbuildingName','Content_regexvZip','Content_rvConstDate','Content_rvNumStories','Content_rvTFA');
			break;
		case 'Tenants':
			s=new Array('Content_txtTenantName','Content_txtLeaseStartDate','Content_txtLeaseStopDate','Content_txtFloorArea','Content_txtDepreciationPercentage');
			validators=new Array('Content_rvTenantName','Content_rvLeaseStartDate','Content_rvLeaseStopDate','Content_rvFloorArea','Content_rvDepreciationPercentage');
			break;
		case 'Tenant Take-Offs':
			s=new Array();
			validators= new Array();
			break;
		case 'Reports':
			curMenu = 5;
			break;
		case 'HomeSrchSingleProjectID':
			s=new Array('Content_txtSrch1');
			validators=new Array('Content_rvSrch1');
			errormsg=new Array('Please Enter Valid ProjectID');
			break;
		case 'HomeSrchSingleProjectName':
			s=new Array('Content_txtSrch1');
			validators=new Array('Content_rvSrch1');
			errormsg=new Array('Please Enter Valid Project Name');
			break;
		case 'HomeSrchFromToDates':
			s=new Array('Content_txtSrchMin','Content_txtSrchMax');
			validators=new Array('Content_rvSearchMin','Content_rvSearchMax');
			errormsg=new Array('Please Enter From Date','Please Enter To Date');
			break;
		case 'HomeSrchMinMax':
			s=new Array('Content_txtSrchMin','Content_txtSrchMax');
			validators=new Array('Content_rvSearchMin','Content_rvSearchMax');
			errormsg=new Array('Please Enter Valid Price','Please Enter Valid Price');
			break;
		case 'GeneralProjectID':
			s=new Array('Content_txtProjId');
			validators=new Array('Content_rvProjID');
			break;
		case 'AddUser':
				if(document.title == 'Add User' || document.title == 'Edit User')
				{
					s = new Array('ctl00_ContentPlaceHolder_txtUserName','ctl00_ContentPlaceHolder_txtPassword','ctl00_ContentPlaceHolder_txtFirstName', 'ctl00_ContentPlaceHolder_txtLastName', 'ctl00_ContentPlaceHolder_txtEmail', 'ctl00_ContentPlaceHolder_txtAddress', 'ctl00_ContentPlaceHolder_txtCity', 'ctl00_ContentPlaceHolder_txtZipPostalCode');
					validators=new Array('ctl00_ContentPlaceHolder_lblErrUName', 'ctl00_ContentPlaceHolder_lblErrPwd', 'ctl00_ContentPlaceHolder_lblErrFName', 'ctl00_ContentPlaceHolder_lblErrLName', 'ctl00_ContentPlaceHolder_lblErrEmail', 'ctl00_ContentPlaceHolder_lblErrAdd', 'ctl00_ContentPlaceHolder_lblErrCity', 'ctl00_ContentPlaceHolder_lblErrZip');
				}
				else if(document.title == 'Change My Information')
				{
					var ddlBillingType = document.getElementById('Content_ddlBillingType');
					if(ddlBillingType.options[ddlBillingType.selectedIndex].innerHTML == 'Credit Card')
					{
						s = new Array('ctl00_ContentPlaceHolder_txtUserName','ctl00_ContentPlaceHolder_txtPassword','ctl00_ContentPlaceHolder_txtFirstName', 'ctl00_ContentPlaceHolder_txtLastName', 'ctl00_ContentPlaceHolder_txtEmail', 'ctl00_ContentPlaceHolder_txtCardNum','ctl00_ContentPlaceHolder_txtAddress', 'ctl00_ContentPlaceHolder_txtCity', 'ctl00_ContentPlaceHolder_txtZipPostalCode');
						validators=new Array('ctl00_ContentPlaceHolder_lblErrUName', 'ctl00_ContentPlaceHolder_lblErrPwd', 'ctl00_ContentPlaceHolder_lblErrFName', 'ctl00_ContentPlaceHolder_lblErrLName', 'ctl00_ContentPlaceHolder_lblErrEmail', 'ctl00_ContentPlaceHolder_lblerrCardNumber','ctl00_ContentPlaceHolder_lblErrAdd', 'ctl00_ContentPlaceHolder_lblErrCity', 'ctl00_ContentPlaceHolder_lblErrZip');
					}
					else
					{
						s = new Array('ctl00_ContentPlaceHolder_txtUserName','ctl00_ContentPlaceHolder_txtPassword','ctl00_ContentPlaceHolder_txtFirstName', 'ctl00_ContentPlaceHolder_txtLastName', 'ctl00_ContentPlaceHolder_txtEmail','ctl00_ContentPlaceHolder_txtAddress', 'ctl00_ContentPlaceHolder_txtCity', 'ctl00_ContentPlaceHolder_txtZipPostalCode');
						validators=new Array('ctl00_ContentPlaceHolder_lblErrUName', 'ctl00_ContentPlaceHolder_lblErrPwd', 'ctl00_ContentPlaceHolder_lblErrFName', 'ctl00_ContentPlaceHolder_lblErrLName', 'ctl00_ContentPlaceHolder_lblErrEmail','ctl00_ContentPlaceHolder_lblErrAdd', 'ctl00_ContentPlaceHolder_lblErrCity', 'ctl00_ContentPlaceHolder_lblErrZip');
					}
				}
				else if(document.title == 'Create Account')
				{
					var ddlBillingType = document.getElementById('Content_ddlBillingType');
					//alert(ddlBillingType.options[ddlBillingType.selectedIndex].innerHTML);
					if(ddlBillingType.options[ddlBillingType.selectedIndex].innerHTML == 'Credit Card')
					{
						s = new Array('ctl00_ContentPlaceHolder_txtUserName','ctl00_ContentPlaceHolder_txtPassword','ctl00_ContentPlaceHolder_txtFirstName', 'ctl00_ContentPlaceHolder_txtLastName', 'ctl00_ContentPlaceHolder_txtEmail', 'ctl00_ContentPlaceHolder_txtCompName', 'ctl00_ContentPlaceHolder_txtCompAddress', 'ctl00_ContentPlaceHolder_txtCityComp', 'ctl00_ContentPlaceHolder_cboCompState', 'ctl00_ContentPlaceHolder_txtZipPostalCodeCompany', 'ctl00_ContentPlaceHolder_txtPhAreaCodeComp', 'ctl00_ContentPlaceHolder_txtPhPreComp', 'ctl00_ContentPlaceHolder_txtPhSuffixComp', 'ctl00_ContentPlaceHolder_txtCardNum','ctl00_ContentPlaceHolder_txtAddress', 'ctl00_ContentPlaceHolder_txtCity', 'ctl00_ContentPlaceHolder_txtZipPostalCode');
						validators=new Array('ctl00_ContentPlaceHolder_lblErrUName', 'ctl00_ContentPlaceHolder_lblErrPwd', 'ctl00_ContentPlaceHolder_lblErrFName', 'ctl00_ContentPlaceHolder_lblErrLName', 'ctl00_ContentPlaceHolder_lblErrEmail', 'ctl00_ContentPlaceHolder_lblErrCompName', 'ctl00_ContentPlaceHolder_lblErrCompAddress', 'ctl00_ContentPlaceHolder_lblErrCityComp', 'ctl00_ContentPlaceHolder_lblErrStateComp', 'ctl00_ContentPlaceHolder_lblErrZipComp', 'ctl00_ContentPlaceHolder_lblErrPhoneComp', 'ctl00_ContentPlaceHolder_lblErrPhoneComp', 'ctl00_ContentPlaceHolder_lblErrPhoneComp', 'ctl00_ContentPlaceHolder_lblerrCardNumber','ctl00_ContentPlaceHolder_lblErrAdd', 'ctl00_ContentPlaceHolder_lblErrCity', 'ctl00_ContentPlaceHolder_lblErrZip');
					}
					else
					{
						s = new Array('ctl00_ContentPlaceHolder_txtUserName','ctl00_ContentPlaceHolder_txtPassword','ctl00_ContentPlaceHolder_txtFirstName', 'ctl00_ContentPlaceHolder_txtLastName', 'ctl00_ContentPlaceHolder_txtEmail', 'ctl00_ContentPlaceHolder_txtCompName', 'ctl00_ContentPlaceHolder_txtCompAddress', 'ctl00_ContentPlaceHolder_txtCityComp', 'ctl00_ContentPlaceHolder_cboCompState', 'ctl00_ContentPlaceHolder_txtZipPostalCodeCompany', 'ctl00_ContentPlaceHolder_txtPhAreaCodeComp', 'ctl00_ContentPlaceHolder_txtPhPreComp', 'ctl00_ContentPlaceHolder_txtPhSuffixComp','ctl00_ContentPlaceHolder_txtAddress', 'ctl00_ContentPlaceHolder_txtCity', 'ctl00_ContentPlaceHolder_txtZipPostalCode');
						validators=new Array('ctl00_ContentPlaceHolder_lblErrUName', 'ctl00_ContentPlaceHolder_lblErrPwd', 'ctl00_ContentPlaceHolder_lblErrFName', 'ctl00_ContentPlaceHolder_lblErrLName', 'ctl00_ContentPlaceHolder_lblErrEmail', 'ctl00_ContentPlaceHolder_lblErrCompName', 'ctl00_ContentPlaceHolder_lblErrCompAddress', 'ctl00_ContentPlaceHolder_lblErrCityComp', 'ctl00_ContentPlaceHolder_lblErrStateComp', 'ctl00_ContentPlaceHolder_lblErrZipComp', 'ctl00_ContentPlaceHolder_lblErrPhoneComp', 'ctl00_ContentPlaceHolder_lblErrPhoneComp', 'ctl00_ContentPlaceHolder_lblErrPhoneComp','ctl00_ContentPlaceHolder_lblErrAdd', 'ctl00_ContentPlaceHolder_lblErrCity', 'ctl00_ContentPlaceHolder_lblErrZip');
					}
				}
				else
				{
					s = new Array('ctl00_ContentPlaceHolder_txtUserName','ctl00_ContentPlaceHolder_txtPassword','ctl00_ContentPlaceHolder_txtFirstName', 'ctl00_ContentPlaceHolder_txtLastName', 'ctl00_ContentPlaceHolder_txtEmail','ctl00_ContentPlaceHolder_txtAddress', 'ctl00_ContentPlaceHolder_txtCity', 'ctl00_ContentPlaceHolder_txtZipPostalCode');
					validators=new Array('ctl00_ContentPlaceHolder_lblErrUName', 'ctl00_ContentPlaceHolder_lblErrPwd', 'ctl00_ContentPlaceHolder_lblErrFName', 'ctl00_ContentPlaceHolder_lblErrLName', 'ctl00_ContentPlaceHolder_lblErrEmail','ctl00_ContentPlaceHolder_lblErrAdd', 'ctl00_ContentPlaceHolder_lblErrCity', 'ctl00_ContentPlaceHolder_lblErrZip');
				}
				break;
	}

if (s != null)
	for(i=0;i<s.length;i++)
	{
		var txtbox = document.getElementById(s[i]);
		switch(frmName)
		{
			case 'Site Work':
				found = !CheckGridData('Content_DGExistingTakeOffs', 'Content_asbTakeOffCategory', 'Content_lblErrCategory');
				break;
			case 'Tenants':
				found = !CheckGridData('Content_dgExistingTenants', null, 'Content_rvTenantName');
				break;
			case 'Building':
				found = !CheckGridData('Content_dgExistingBuildings', null, 'Content_rvbuildingName');
				break;
			case 'Tenant Take-Offs':
				found = !CheckGridData('Content_DGExistingTakeOffs','Content_asbTakeOffCategory' , 'Content_lblErrCategory');
				break;
		}

		if(!found)
		{
			if (document.getElementById(validators[i]).style.visibility != '')
				document.getElementById(validators[i]).style.visibility = 'hidden';
			if (document.getElementById(validators[i]).style.display != '')
				document.getElementById(validators[i]).style.display = 'none';

			if (txtbox.value == '')
			{
				if (found == false) //if(!forNavigation){ txtbox.focus();}
					found = true;
					//break;

				if(!forNavigation){ document.getElementById(validators[i]).style.visibility = '';
					document.getElementById(validators[i]).style.display = '';} //.visible = true;

				if(frmName=='HomeSrchFromToDates' || frmName=='HomeSrchMinMax' || frmName=='HomeSrchSingleProjectID' || frmName=='HomeSrchSingleProjectName')
				{
					document.getElementById(validators[i]).innerHTML=errormsg[i];
				}
			}
		}
	}


	//Enable Navigation
	if(frmName != 'AddUser')
	{
		EnableDisableNavigation(found);
		return !found;
	}


	return !found;
}

//Author: Neeru Verma
//Date Created: 19-Sep-2005
//Remove Blank spaces from the string
function stripBlanks(fld)
{
	var result = "";
	var c=0;
	for (i=0; i<fld.length; i++)
	{
		if (fld.charAt(i) != " " || c > 0)
		{
			result += fld.charAt(i);
			if (fld.charAt(i) != " ") c = result.length;
		}
	}
	return result.substr(0,c);
}

//Author: Neeru Verma
//Date Created: 19-Sep-2005
//checks if parm is valid
function isValid(parm,val)
{
	if (parm == "") return true;
	for (i=0; i<parm.length; i++)
	{
		if (val.indexOf(parm.charAt(i),0) == -1)
			return false;
	}
return true;
}
//Author: Neeru Verma
//Date Created: 19-Sep-2005
//checks if given value is a number
function isNum(parm)
{
	var numb = '0123456789';
	return isValid(parm,numb);
}

/*
Author: Neeru Verma
Date Created: 01-Dec-2005
Checks if value is null and returns
*/
function IsNull(validator, msg)
{
	var ctlVal = event.srcElement.value;
	if(ctlVal == null || ctlVal.trim() == '')
	{
		validator.style.visibility = '';
		validator.style.display = "";
		event.srcElement.focus();

		return false;
	}
	else
		return true;

}

//Author: Neeru Verma
//Date Created: 19-Sep-2005
//Validate date entered by the user
//Also displays the error Message provided by the user
function validateDate(ctl,fmt,ValidatorControlId,errorMsg)
{
	var valid = document.getElementById(ValidatorControlId);

	if(valid != null)
		valid.style.visibility = 'hidden';

	var minYear=1900;
	var maxYear=2078;
	var fld = ctl.value;
	var mth = new Array('','january','february','march','april','may','june','july','august','september','october','november','december');
	var day = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var dd, mm, yy;var today = new Date;var t = new Date;fld = stripBlanks(fld);

	if (fld == '')
		return SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);

	var d1 = fld.split('\/');
	if (d1.length != 3)
		d1 = fld.split(' ');
	if (d1.length != 3)
		d1 = fld.split('-');
	if(d1.length != 3)
		d1 = fld.split('.');
	if (d1.length != 3)
		return SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);


	if (fmt == 'u' || fmt == 'U')
	{
		dd = d1[1]; mm = d1[0]; yy = d1[2];
	}
	else if (fmt == 'j' || fmt == 'J')
	{
		dd = d1[2]; mm = d1[1]; yy = d1[0];
	}
	else if (fmt == 'w' || fmt == 'W')
	{
		dd = d1[0]; mm = d1[1]; yy = d1[2];
	}
	else
		return SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);

	if(yy.length < 4)/*for checking if year has been entered properly or not*/
	{
		return SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);
	}

	if (!isNum(dd)) validdate = false;
	if (!isNum(yy)) validdate = false;
	if (!isNum(mm))
	{
		var nn = mm.toLowerCase();
		for (var i=1; i < 13; i++)
		{
			if (nn == mth[i] ||
				nn == mth[i].substr(0,3))
			{
				mm = i; i = 13;
			}
		}
	}
	if (!isNum(mm))
		return SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);

	if (!isNum(dd))
		return SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);

	if (!isNum(yy))
		return SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);


	dd = parseFloat(dd); mm = parseFloat(mm); yy = parseFloat(yy);

	//if (yy < 100) yy += 2000;
	//alert(yy);
	if (yy < minYear || yy > maxYear)
		return SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);

	if (mm == 2 && (yy%400 == 0 || (yy%4 == 0 && yy%100 != 0))) day[mm-1]++;
	if (mm < 1 || mm > 12)
		return	SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);

	if (dd < 1 || dd > day[mm-1])
		return SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);

	t.setDate(dd); t.setMonth(mm-1); t.setFullYear(yy);

	//Hide the vlaidator
	var regvalid = document.getElementById(ValidatorControlId);
	ValidatorControlId.visible = false;
	regvalid.style.visibility = 'Hidden';

	return true;
}

//Author: Neeru Verma
//Date Created: 19-Sep-2005
//Changes the error message of the validator
//And sets focus to the invalid field.
function SetFocusAndShowValidator(ValidatorControlId, ctl, errorMsg)
{
	var regvalid = document.getElementById(ValidatorControlId);
		document.all(regvalid.id).innerHTML = errorMsg;
		regvalid.style.visibility = '';
		regvalid.style.display = "";

	document.getElementById(ctl.id).focus();
	regvalid.style.visibility = '';

	return false;
}

//Author: Jatinder Kumar
//Date Created:
function ShowValidator(ValidatorControlId,errorMsg)
{
	var regvalid = document.getElementById(ValidatorControlId);
		document.all(regvalid.id).innerHTML = errorMsg;
		regvalid.style.visibility = '';
		regvalid.style.display = "";

	return false;
}
//Author: Neeru Verma
//Date Created: 19-Sep-2005
//Validates the enetered value is in
//given range or not

//Updated By: Jatinder Kumar
//Date: 06 oct,2005
//Updates: New parameter PostBack has been added if true then postback otherwise not
//		   New parameter setFocus has been added if true then set focus on Error
function validateRange(ctl,minVal,maxVal,ValidatorControlId,errorMsg,forMoney,postBack,setFocus)
{
	var valid = document.getElementById(ValidatorControlId);
	if(valid != null) valid.style.visibility = 'hidden';

	var ctlVal = document.getElementById(ctl.id).value;
	ctlVal = ctlVal.replace(/\,/g,'');
	ctlVal = ctlVal.replace(/,,/g,'');

	if (minVal <=maxVal)
	{
		if ((parseFloat(ctlVal) >= parseFloat(minVal)) && (parseFloat(ctlVal) <= parseFloat(maxVal)))
		{
			if(forMoney) format(ctl);

			if(postBack)
			{
			__doPostBack('txtProjId','');
			}

			return true;
		}
		else
		{
			if(setFocus)
				return SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);
			else
				return ShowValidator(ValidatorControlId,errorMsg);
		}
	}
	else
	{
		if (parseFloat(ctlVal) >= parseFloat(minVal))
		{
			if(forMoney) format(ctl);
			return true;
		}
		else
		{
			if(setFocus)
			{
				var sh = SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);
				return sh;
			}
			else
				return ShowValidator(ValidatorControlId,errorMsg);
		}
	}
}
/*
Author: Donald Schulz
Date Created: 1-Dec-2006
Validates the User Name and password to make sure they will be acceptable
to EclipseNet before we even send them...
*/
function validateUserNamePassword(ctl,ValidatorControlId,password)
{
	var errorMsg;
	var valid = true;
	var ctlVal = document.getElementById(ctl.id).value;
	if(password)
	    errorMsg = "Password must be between 6 and 25 characters with no spaces";
	else
	    errorMsg = "User Name must be between 6 and 25 characters with no spaces";
	if(ctlVal.length < 6 || ctlVal.length > 25)
	{
	    valid = false;
	}
	if(ContainsSpace(ctlVal))
	{
	    valid = false;
	}
	if(valid)
	    if(password)
	    {
	        // Here we do our second test if the first one was okay...
	        errorMsg = "Password must contain a number."
	        if(ContainsNumber(ctlVal))
	            return HideValidator(ValidatorControlId);
	        else
	            return ShowValidator(ValidatorControlId,errorMsg);
	    }
	    else
	        return HideValidator(ValidatorControlId);
	else
        return ShowValidator(ValidatorControlId,errorMsg);
}

/*
Author: Donald Schulz
Created: 1-Dec-2006
Returns true if there is a space contained in the string
Used by the ValidateUserNamePassword function
*/
function ContainsSpace(ctlVal)
{
    for (i=0; i<ctlVal.length; i++)
    {
        if (ctlVal.charAt(i) == ' ')
            return true;
    }
    return false;
}

/*
Author: Donald Schulz
Created: 1-Dec-2006
Returns true if there is a number contained in the string
Used by the ValidateUserNamePassword function.
*/
function ContainsNumber(ctlVal)
{
    var validchars = '1234567890';
    for (i=0; i<ctlVal.length; i++)
    {
        if (validchars.indexOf(ctlVal.charAt(i)) != -1)
            return true;
    }
    return false;
}

/*
Author: Donald Schulz
Created: 1-Dec-2006
Hides the error message and returns true which could be
called when a validation for a field becomes valid...
Used by the ValidateUserNamePassword function
*/
function HideValidator(ValidatorControlId)
{
	var regvalid = document.getElementById(ValidatorControlId);
		document.all(regvalid.id).innerHTML = '';
		regvalid.style.visibility = 'hidden';
		regvalid.style.display = "None";

	return true;
}

////Author: Neeru Verma
////Date Created: 20-Sep-2005
////Calculates the difference between
////two dates in days
//function xdatediff(sDateCtl, fDateCtl)
//{
//	var nulldate = null;
//	var pattern = /^(\d{1,2})(\/|-|.| )(\d{1,2})\2(\d{4})$/;
//	var sDate, fDate;

//	if(typeof(sDateCtl) == "object")
//		sDate = sDateCtl.value;
//	else
//		sDate = sDateCtl;

//	if(typeof(fDateCtl) == "object")
//		fDate = fDateCtl.value;
//	else
//		fDate = fDateCtl;

//	var fouryear = fDate.match(pattern);
//	if(fouryear == null)
//	return nulldate;

//	var sarrDate;

//	sarrDate = sDate.split("/");

//	if (sarrDate.length == 3){}
//	else
//	{
//		sarrDate = sDate.split("-");
//		if (sarrDate.length == 3) {}
//		else
//		{
//			sarrDate = sDate.split(".");
//			if (sarrDate.length == 3) {}
//			else
//			{
//				sarrDate = sDate.split(" ");
//				if (sarrDate.length == 3) {}
//				else
//					return nulldate;
//			}
//		}
//	}

//	var farrDate;

//	farrDate = fDate.split("/");

//	if (farrDate.length == 3){}
//	else
//	{
//		farrDate = fDate.split("-");
//		if (farrDate.length == 3) {}
//		else
//		{
//			farrDate = fDate.split(".");
//			if (farrDate.length == 3) {}
//			else
//			{
//				farrDate = fDate.split(" ");
//				if (farrDate.length == 3) {}
//				else
//					return nulldate;
//			}
//		}
//	}

//	var sMonth = parseInt(sarrDate[0]);
//	var sDay = parseInt(sarrDate[1]);
//	var sYear = parseInt(sarrDate[2]);
//	sYear > 89 && sYear < 100 ? sYear += 1900 : null;
//	sYear > 0 && sYear < 90 ? sYear += 2000 : null;

//	var sDate = sMonth + "/" + sDay + "/" + sYear;

//	sMonth = parseInt(farrDate[0]);
//	sDay = parseInt(farrDate[1]);
//	sYear = parseInt(farrDate[2]);

//	sYear > 89 && sYear < 100 ? sYear += 1900 : null;
//	sYear > 0 && sYear < 90 ? sYear += 2000 : null;

//	var fDate = sMonth + "/" + sDay + "/" + sYear;

//	var sqlDate = new Date(sDate);

//	var iDate = new Date();
//	var tsqlDate = new Date(sqlDate);
//	var tiDate = new Date(fDate);

//	sqlDate.setTime(tsqlDate.getTime());
//	iDate.setTime(tiDate.getTime());

//	var diff = new Date();
//	diff.setTime(Math.abs(iDate.getTime() - sqlDate.getTime()));
//	var timediff = diff.getTime();
//	var days = Math.floor(timediff / (1000 * 60 * 60 * 24));
//	return days;
//}

function dateDiff(fromValue, toValue)
{
	// ------------------------------------------------------------------------
	// dates must be in one of the following formats, for backward-compatible.
	//
	//		MM/DD/YYYY
	//		MM-DD-YYYY
	//		MM.DD.YYYY
	//
	// ------------------------------------------------------------------------
	var regex = new RegExp(/^(\d{1,2})(\/|-|.| )(\d{1,2})\2(\d{4})$/);
	if (!regex.test(fromValue))
		throw "invalid date format";
	if (!regex.test(toValue))
		throw "invalid date format";

	var fromDate = new Date(fromValue);
	var toDate = new Date(toValue);

	var diff = fromDate - toDate;
	var days = Math.floor(diff / (1000 * 60 * 60 * 24));

	return days;
}

//Author: Neeru Verma
//Date Created: 20-Sep-2005
//Calculates Depreciation Percentage
//based on Lease Start Date(LstartDate),
//LeaseStopDate(LStopDate) and Acquistion Date (AcqDate)
//Returns the value in ctlReturn control passed by the user
function CalculateDepreciationPercentage(LstartDateID, LStopDateID, AcqDate, ctlReturnID)
{
	try
	{
		var LstartDate = document.getElementById(NxRef(LstartDateID)).value;
		var LStopDate = document.getElementById(NxRef(LStopDateID)).value;
		//var ctlReturn = document.getElementById(NxRef(ctlReturnID));

		// Do not perform computation unless both dates are specified.
		if (LstartDate == "" || LStopDate == "")
			return 0;

		var StartAcqDateDiff = dateDiff(AcqDate, LstartDate);
		var StartStopDateDiff = dateDiff(LStopDate, LstartDate);

		var deprval = StartAcqDateDiff / StartStopDateDiff * 100;
		deprval = Math.round(deprval * 100) / 100;
		return deprval <= 0.00 ? 0.00 : deprval >= 100.00 ? 100.00 : deprval;
	}
	catch(ex)
	{
		//alert(ex);
		return 0;
	}
}

//Author: Jatinder Kumar
//Date Created: 30 Sep,2005
//Check whether Min Max are valid or not
function CompareNumeric(ctlMin,ctlMax,lblErr,err)
{
	var min=parseFloat(ctlMin.value);
	var max=parseFloat(ctlMax.value);
	if(max<min)
	{
		//lblErr.innerHTML=err;
		//return false;
		//return SetFocusAndShowValidator(lblErr.id,ctlMax,err);
		return ShowValidator(lblErr.id,err);
	}
	else
	{
		lblErr.innerHTML='';
		return true;
	}
}

//Author: Jatinder Kumar
//Date Created: 30 sep,2005
//Compare MaxDate and MinDate. Return false if MaxDate is less than MinDate
//otherwise return true
function CompareDate(ctlMin,ctlMax,fmt,lblErr,err)
{
	var minDate=GetDate(ctlMin.value,fmt,lblErr.id,ctlMax,'Invalid Date');
	var maxDate=GetDate(ctlMax.value,fmt,lblErr.id,ctlMax,'Invalid Date');
	//var minDate=GetDate(document.getElementById(ctlMin).value,lblErr.id,document.getElementById(ctlMin).value,'Invalid Date');
	//var maxDate=GetDate(document.getElementById(ctlMax).value,lblErr.id,document.getElementById(ctlMin).value,'Invalid Date');

	if(minDate==false || maxDate==false)
	{
		lblErr.innerHTML='';
		return false;
	}

	if(minDate>maxDate)
	{
		lblErr.innerHTML=err;
		return false;
		//return SetFocusAndShowValidator(lblErr.id,ctlMax,err);
		//return ShowValidator(lblErr.id,err);
	}
	else
	{
		lblErr.innerHTML='';
		return true;
	}
}

//Author: Jatinder Kumar
//Date Created: 30 sep,2005
//Returns Date from string
function GetDate(strDate,fmt,ValidatorControlId,ctl,errorMsg)
{
	var minYear=1900;
	var maxYear=2078;
	var fld = strDate;
	var mth = new Array('','january','february','march','april','may','june','july','august','september','october','november','december');
	var day = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var dd, mm, yy;var today = new Date;var t = new Date;fld = stripBlanks(fld);

	if (fld == '')
		return false;//ShowValidator(ValidatorControlId,errorMsg);//SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);

	var d1 = fld.split('\/');
	if (d1.length != 3)
		d1 = fld.split(' ');
	if (d1.length != 3)
		d1 = fld.split('-');
	if (d1.length != 3)
		return false;//ShowValidator(ValidatorControlId,errorMsg);//SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);

	if (fmt == 'u' || fmt == 'U')
	{
		dd = d1[1]; mm = d1[0]; yy = d1[2];
	}
	else if (fmt == 'j' || fmt == 'J')
	{
		dd = d1[2]; mm = d1[1]; yy = d1[0];
	}
	else if (fmt == 'w' || fmt == 'W')
	{
		dd = d1[0]; mm = d1[1]; yy = d1[2];
	}
	else
		return false;//ShowValidator(ValidatorControlId,errorMsg);//SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);

	if(yy.length < 4)/*for checking if year has been entered properly or not*/
	{
		return false;
	}

	if (!isNum(dd)) validdate = false;
	if (!isNum(yy)) validdate = false;
	if (!isNum(mm))
	{

		var nn = mm.toLowerCase();
		for (var i=1; i < 13; i++)
		{
			if (nn == mth[i] ||
				nn == mth[i].substr(0,3)) {mm = i; i = 13;
		}
	}

	}
	if (!isNum(mm))
		return false;//ShowValidator(ValidatorControlId,errorMsg);//SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);


	dd = parseFloat(dd); mm = parseFloat(mm); yy = parseFloat(yy);

	//if (yy < 100) yy += 2000;
	if (yy < minYear || yy > maxYear)
		return false;//ShowValidator(ValidatorControlId,errorMsg);//SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);

	if (mm == 2 && (yy%400 == 0 || (yy%4 == 0 && yy%100 != 0))) day[mm-1]++;
	if (mm < 1 || mm > 12)
		return ShowValidator(ValidatorControlId,errorMsg);//SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);

	if (dd < 1 || dd > day[mm-1])
		return false;//ShowValidator(ValidatorControlId,errorMsg);//SetFocusAndShowValidator(ValidatorControlId,ctl,errorMsg);

	t.setDate(dd); t.setMonth(mm-1); t.setFullYear(yy);

	return(t);
}

/**
* Sets a Cookie with the given name and value.
*
* name       Name of the cookie
* value      Value of the cookie
* [expires]  Expiration date of the cookie (default: end of current session)
* [path]     Path where the cookie is valid (default: path of calling document)
* [domain]   Domain where the cookie is valid
*              (default: domain of calling document)
* [secure]   Boolean value indicating if the cookie transmission requires a
*              secure transmission
*/
function setCookie(NameOfCookie, value, expiredays)
{
	var ExpireDate = new Date ();
	ExpireDate.setTime(ExpireDate.getTime() + (expiredays * 24 * 3600 * 1000));

	// The next line stores the cookie, simply by assigning
	// the values to the "document.cookie" object.
	// Note the date is converted to Greenwich Mean time using
	// the "toGMTstring()" function.

	document.cookie = NameOfCookie + "=" + escape(value) +
	((expiredays == null) ? "" : "; expires=" + ExpireDate.toGMTString());
}


/**
* Gets the value of the specified cookie.
*
* name  Name of the desired cookie.
*
* Returns a string containing value of specified cookie,
*   or null if cookie does not exist.
*/
function getCookie(NameOfCookie)
{
	if (document.cookie.length > 0)
	{
		var begin = document.cookie.indexOf(NameOfCookie+"=");
		if (begin != -1)
		{
			begin += NameOfCookie.length+1;
			var end = document.cookie.indexOf(";", begin);
			if (end == -1)
				end = document.cookie.length;
			return unescape(document.cookie.substring(begin, end));
		}
	}
	return null;
}


/**
* Deletes the specified cookie.
*
* name      name of the cookie
* [path]    path of the cookie (must be same as path used to create cookie)
* [domain]  domain of the cookie (must be same as domain used to create cookie)
*/
function deleteCookie(name, path, domain)
{
	if (getCookie(name))
	{
		document.cookie = name + "=" +
			((path) ? "; path=" + path : "") +
			((domain) ? "; domain=" + domain : "") +
			"; expires=Thu, 01-Jan-70 00:00:01 GMT";
	}
}

//Auhtor: Neeru Verma
//Date Created: 1-Oct-2005
//Formats the Zip code in case of Canadian
function FormatZip(ctl)
{
	var ctlVal = document.getElementById(ctl.id).value;
	var strLeft, strRight;
	var validZip;

	if  (ctlVal.length == 6)
	{
		strLeft = ctlVal.substring(0,3);
		strRight = ctlVal.substring(3,6);

		validZip = strLeft + " " + strRight;
	}
	else
		validZip = ctlVal;

	document.getElementById(ctl.id).value = validZip.toUpperCase();

	return true;
}

//Auhtor: Neeru Verma
//Date Created: 3-Oct-2005
//Formats Phone number and Fax as desired
function FormatPhoneFax(ctl,validator,ForFax)
{
	Phone = new String(document.getElementById(ctl.id).value);
	var valid = true;
	var formattedText = Phone;

	Phone = Phone.replace(/\s/g,"");
	Phone = Phone.replace(/-/g,"");
	Phone = Phone.replace(/\./g,"");
	Phone = Phone.replace(/\(/g,"");
	Phone = Phone.replace(/\)/g,"");

	if (Phone.length == 10)
	{
		var first3 = Phone.substring(0,3);
		var middle3 = Phone.substring(3,6);
		var last4 = Phone.substring(6,10);

		formattedText = "(" + first3 + ") " + middle3 + " " + last4;
		valid = true;
	}
	else
		valid = false;

	if (!valid)
	{
		if (ForFax)
			SetFocusAndShowValidator(validator,ctl,'Please enter valid Fax number.');
		else
			SetFocusAndShowValidator(validator,ctl,'Please enter valid Phone number.');
	}
	else
		document.getElementById(ctl.id).value = formattedText;
}

function PostbackLinkButton()
{
	__doPostBack('LinkButton1','');
}

//Author: Jatinder Kumar
//Date Created: 06 oct,2005
//This function will be called on txtToDate and txtFromDate change Event
//and will clear the lblError
function ClearHomeCompareDateError(ctlError)
{
	ctlError.innerHTML='';
	return true;
}

function EnableDisableNavigation(found)
{
	var nextTop  = document.getElementById('PageHeader_btnNextTop');
	var nextFoot = document.getElementById('ContentFooter_btnNextFoot');

	if ((nextTop != null) && (nextFoot != null))
	{
		//Enable Left Navigation and Next Step Button
		nextTop.disabled = found;
		nextFoot.disabled = found;
	}
	//PostbackLinkButton();
	EnableLeftNavigation(found);

}

function DeleteTTOCategory(Message, Action, ctrl1, ctrl2, ItemInd)
{
	if (ExtraValidation.FormChanged() && !ExtraValidation.Validate())
		return false;

	if (!confirm(Message))
		return false;

	retval = Utility.CreateArgument("YES", ctrl1, ctrl2, ItemInd);
	__doPostBack(Action, retval);
	return false;
}

function DeleteConfirm(Message, Action, ctrl1, ctrl2, ItemInd)
{
	if (!PerformPageValidation())
		return false;

	if (!confirm(Message))
		return false;

	retval = Utility.CreateArgument("YES", ctrl1, ctrl2, ItemInd);
	__doPostBack(Action, retval);
	return false;
}


function PerformPageValidation()
{
	// perform page validation, if required to do so...
	var obj = event.srcElement;
	if (obj.tagName == "A" && typeof(obj.href) == "string" && obj.href != "")
	{
		if (obj.href.substr(0,40) == "javascript:WebForm_DoPostBackWithOptions")
		{
			var r = Page_ClientValidate();
			if (!r)
				return false;
		}
	}
	return true;
}


//Author: Jatinder Kumar
//Date: 20 oct,2005
//Ask user option and send output to server using __doPostBack
//Takes Message,Action as input
//ctrl1 and ctrl2 will be passed whose value in required
//can be null if not required
function Confirm(Message,Action,ctrl1,ctrl2, ItemInd)
{
	if (!PerformPageValidation())
		return false;

	var retval="";

	if(SystemConstants.DisableSavingPrompts || confirm(Message))
	{retval = 'YES'}
	else
	{retval = 'NO'}

	/*if(ctrl1 == null)
	{}
	else if(ctrl1.value == null)
	{retval +=';'+ ctrl1.innerHTML;}
	else
	{retval +=';'+ ctrl1.value;}

	if(ctrl2 == null)

	{}
	else if(ctrl2.value == null)
	{retval +=';'+ ctrl2.innerHTML;}
	else
	{retval +=';'+ ctrl2.value;}*/

	retval = Utility.CreateArgument(retval, ctrl1, ctrl2, ItemInd);
//	retval = GetEventArgument(retval,ctrl1,ctrl2);
//	retval+= ";" + ItemInd;


	// resolve issue with embedded apostrophe.
	//window.execScript("__doPostBack('"+ Action +"','"+ retval +"')","JavaScript");
	__doPostBack(Action, retval);


	/*if(confirm(Message))
	{window.execScript("__doPostBack('"+ Action +"','YES')","JavaScript");}
	else
	{window.execScript("__doPostBack('"+ Action +"','NO')","JavaScript");}*/

	return false;
}

function NewTakeOffCategory(ctrlCategory,Message,Action)
{
	if(ValidDepreciation() == true)
	{
		if(ValidCategory(ctrlCategory) == true)
		{return(Confirm(Message,Action,null,null, null));}
		else
		{return(false);}
	}
	else
	{
		var lblErr = document.getElementById("Content_rvAddQty");
		lblErr.innerHTML = 'Please enter valid Depreciation';
		lblErr.style.visibility = '';
		return(false);
	}
}


function GetTheTableAssembly()
{
	// tblAssembly used in SiteWork.aspx and tblAssem used in TenantTakeOffs.aspx
	// find one or the other, otherwise set null.
	try
	{
		objTR = document.getElementById('tblAssembly').childNodes[0].childNodes[0];
	}
	catch(e)
	{
		try
		{
			objTR = document.getElementById('tblAssem').childNodes[0].childNodes[0];
		}
		catch(E)
		{
			objTR = null;
		}
	}
}

function ValidDepreciation()
{
	var objTR = GetTheTableAssembly();

	while(objTR != null)
	{
		if(parseInt(objTR.childNodes[0].childNodes[0].innerHTML) != -1)
		{
			if(parseInt(objTR.childNodes[6].childNodes[0].value) == 0)
			{
				return(false);
			}
		}
		objTR = objTR.nextSibling;
	}

	return(true);
}

function NewBuilding(ctrlBuilding,Message,Action)
{
	if(ValidBuilding(ctrlBuilding) == true)
	{return(Confirm(Message,Action,null,null,null));}
	else
	{return(false);}
}

//Author: Jatinder Kumar
//Date: 05 nov,2005
//Updates: SelectBuilding Save Confirm
function SelectBuilding(ctrlBuilding,Message,Action,ctrl1,ctrl2,itemIndex)
{
	if (ExtraValidation.FormChanged() && !ExtraValidation.Validate())
		return false;

	if (typeof(ctrlBuilding) == "string")
		ctrlBuilding = document.getElementById(ctrlBuilding);

	if(ValidBuilding(ctrlBuilding) == true)
	{return(Confirm(Message,Action,ctrl1,ctrl2,itemIndex));}
	else
	{
		var retval="";

		retval = Utility.CreateArgument("NO", ctrl1, ctrl2, itemIndex);
//		retval = GetEventArgument('NO',ctrl1,ctrl2);
//		retval += ";" + itemIndex;

		// resolve issue with embedded apostrophe.
		//window.execScript("__doPostBack('"+ Action +"','"+ retval +"')","JavaScript");
		__doPostBack(Action, retval);

		return(false);
	}
}

//Author: Jatinder Kumar
//Date: 09 Nov,2005
//Updates:Confirm for Deletion on Click.If Yes the the PostBack otherwise not
function DeleteBuilding(Message,Action,ctrl1,ctrl2)
{
	return DeleteConfirm(Message, Action, ctrl1, ctrl2, null);

//	// must confirm on delete!
//	// HACK: if DisableSavingPrompts=true, Confirm() will not confirm.  Therefore confirm here.
//	if (SystemConstants.DisableSavingPrompts)
//	{
//		var reply = confirm(Message);
//		if (!reply)
//			return false;
//	}

//	return(Confirm(Message,Action,ctrl1,ctrl2,null));
}

//Author: Jatinder Kumar
//Date: 09 Nov,2005
//PostBack for Copying Building
function CopyBuilding(Action,ctrl1,ctrl2)
{
	var retval = "";

	retval = Utility.CreateArgument("NO", ctrl1, ctrl2);
	//retval = GetEventArgument('NO',ctrl1,ctrl2);

	__doPostBack(Action,retval);

	return(false);
}

//Author: Jatinder Kumar
//Date: 07 nov,2005
//Updates:PostBack on focus to Percentage for wallType
function AddWallType(txtBuilding,txtWallTypeName)
{
	if(ValidBuilding(txtBuilding) == true && txtWallTypeName.value.trim() != '')
	{__doPostBack('Add WallType','');}
}

//Author: Jatinder Kumar
//Date: 07 nov,2005
//On Change of Percentage Postback the form
function EditWallType(itemIndex)
{__doPostBack('Edit WallType',itemIndex);}

//Author: Jatinder Kumar
//Date: 07 nov,2005
//Postback on focus to Percentage for HVACType
function AddHVACType(txtBuilding)
{
	if(ValidBuilding(txtBuilding) == true)
	{__doPostBack('Add HVACType','');}
}

//Author: Jatinder Kumar
//Date: 07 nov,2005
//PostBack on change of Percentage or ShellPercentage for HVACType
function EditHVACType(itemIndex)
{__doPostBack('Edit HVACType',itemIndex);}

//Author: Jatinder Kumar
//Date: 11 nov,2005
//postback in case of change of HVACType
function ChangeHVACType(itemIndex)
{__doPostBack('Change HVACType',itemIndex);}

//Author: Jatinder Kumar
//Date: 08 nov,2005
//Postback on on Focus to percentage for ElevatorType
function AddElevatorType(txtBuilding,ddlElevator)
{
	var Elevator = ddlElevator.options[ddlElevator.selectedIndex].text;

	if(ValidBuilding(txtBuilding) == true)// && Elevator.toUpperCase().trim() != 'NONE')
	{__doPostBack('Add ElevatorType','');}
}

//Author: Jatinder Kumar
//Date: 08 nov,2005
//Postback on onchange of percentage for ElevatorType
function EditElevator(itemIndex)
{__doPostBack('Edit ElevatorType',itemIndex);}

//Author: jatinder Kumar
//Date: 11 nov,2005
//PostBack onchange of ElevatorType
function ChangeElevatorType(itemIndex)
{__doPostBack('Change ElevatorType',itemIndex);}

//Author: Jatinder Kumar
//Date: 08 nov,2005
//Postback on on Focus to percentage for Misc
function AddMisc(txtBuilding,ddlMisc)
{
	var Misc = ddlMisc.options[ddlMisc.selectedIndex].text;

	if(ValidBuilding(txtBuilding) == true)// && Misc.toUpperCase().trim() != 'NONE')
	{__doPostBack('Add Misc','');}
}

//Author: Jatinder Kumar
//Date: 08 nov,2005
//Postback on onchange of percentage for ElevatorType
function EditMisc(itemIndex)
{__doPostBack('Edit Misc',itemIndex);}

//Author: Jatinder Kumar
//Date: 11 nov,2005
//Postback on onchange of MiscComponentType
function ChangeMisc(itemIndex)
{__doPostBack('Change Misc',itemIndex);}

//Author: Jatinder Kumar
//Date: 05 nov,2005
//Updates:Check if Building is valid i.e not "" or not = "New Building"
function ValidBuilding(ctrl)
{
	if(ctrl.value.toUpperCase().trim() == "" || ctrl.value.toUpperCase().trim() == 'NEW BUILDING')
	{return(false);}
	else
	{return(true);}
}

function ValidAssemDepreciation(ItemdepVal,DepFloorValue,lblErr,objTable,objControl)
{
	lblErr.innerHTML = '';

	if(objControl.id.indexOf('txtItemDepreciation') != -1)
	{
		if(parseFloat(ItemdepVal) < 0 || parseFloat(ItemdepVal) > 100)
		{
			lblErr.innerHTML = 'Please enter valid Depreciation';
			lblErr.style.visibility = '';
			return(false);
		}

		/*Checking if Depreciation is number*/
		if(isNaN(ItemdepVal)== true)
		{
			lblErr.innerHTML = 'Please enter valid Depreciation';
			lblErr.style.visibility = '';
			return(false);
		}
		if(parseFloat(ItemdepVal) < parseFloat(DepFloorValue))
		{
			lblErr.innerHTML = 'Please enter valid Depreciation';
			lblErr.style.visibility = '';
			return(false);
		}
		return true;
	}
	else
	{
		return(true);
	}

}

function AddQuantity(ctrlItemName,ctrlOuantity,ctrlCategory,lblErr)
{
	lblErr.innerHTML = '';

	if(ValidCategory(ctrlCategory) == true &&
		ValidAddQuantity(ctrlItemName,ctrlOuantity,lblErr) == true)
	{__doPostBack(ctrlOuantity.id,'');}
}

function ValidAddQuantity(ctrlItemName,ctrlOuantity,lblErr)
{

	/*Checking if Quantity has been entered*/

	if(ctrlOuantity.value.trim() == '')
	{
		lblErr.innerHTML ='Please enter valid Quantity';
		lblErr.style.visibility = '';
		return(false);
	}

	/*Checking if ItemName has been entered or not*/
	if(ctrlItemName.value.trim() == '')
	{
		lblErr.innerHTML = 'Please enter valid AssemblyName';
		lblErr.style.visibility = '';
		return(false);
	}

	/*Checking if Quantity is number*/
	var num = ctrlOuantity.value;
	num = num.replace(/,,/g,'');

	if(isNaN(num)== true)
	{
		lblErr.innerHTML = 'Please enter valid Quantity';
		lblErr.style.visibility = '';
		return(false);
	}

	/*Checking if Quantity is within range*/
	if(parseFloat(ctrlOuantity.value) < 0 || parseFloat(ctrlOuantity.value) > 99999999.99)
	{
		lblErr.innerHTML = 'Please enter valid Quantity';
		lblErr.style.visibility = '';
		return(false);
	}

	return(true);
}

function ValidAddQuantityHTTP(ctrlItemName,ctrlOuantity,lblErr)
{
	/*Checking if ItemName has been entered or not*/
	if(ctrlItemName == '')
	{
		lblErr.innerHTML = 'Please enter valid AssemblyName';
		lblErr.style.visibility = '';
		return(false);
	}

	/*Checking if Quantity has been entered*/
	if(ctrlOuantity == '')
	{
		lblErr.innerHTML ='Please enter valid Quantity';
		lblErr.style.visibility = '';
		return(false);
	}

	/*Checking if Quantity is number*/
	var num = ctrlOuantity;
	num = num.replace(/,/g,'');

	if(isNaN(num)== true)
	{
		lblErr.innerHTML = 'Please enter valid Quantity';
		lblErr.style.visibility = '';
		return(false);
	}

	/*Checking if Quantity is within range*/
	if(parseFloat(ctrlOuantity) < 0 || parseFloat(ctrlOuantity) > 99999999.99)
	{
		lblErr.innerHTML = 'Please enter valid Quantity';
		lblErr.style.visibility = '';
		return(false);
	}

	return(true);
}


function SelectCategory(ctrlCategory,Message,Action,ctrl1,ctrl2,ItemInd)
{
	if (ExtraValidation.FormChanged() && !ExtraValidation.Validate())
		return false;
		
	if (typeof(ctrlCategory) == "string")
		ctrlCategory = document.getElementById(ctrlCategory);

	//if (!ExtraValidation.Validate()) return false;

	if(ValidDepreciation() == true)
	{
		if(ValidCategory(ctrlCategory) == true)
			return(Confirm(Message,Action,ctrl1,ctrl2, ItemInd));
		else
		{
			var retval="";
			retval = Utility.CreateArgument("NO", ctrl1, ctrl2, ItemInd);
//			retval = GetEventArgument('NO',ctrl1,ctrl2);
//			retval += ";" + ItemInd;

			// resolve issue with embedded apostrophe.
			//window.execScript("__doPostBack('"+ Action +"','"+ retval +"')","JavaScript");
			__doPostBack(Action, retval);

			return(false);
		}
	}
	else
	{
		var lblErr = document.getElementById("Content_rvAddQty");
		lblErr.innerHTML = 'Please enter valid Depreciation';
		lblErr.style.visibility = '';
		return(false);
	}

}

////function GetEventArgument(result,Message,Action,ctrl1,ctrl2)
//function GetEventArgument(result,ctrl1,ctrl2)
//{
//	var retval="";

//	retval = result


//	if(ctrl1 == null)
//	{}
//	else if(ctrl1.type == "select-one")
//	{retval +=';'+ ctrl1.options[ctrl1.selectedIndex].text;}
//	else if(ctrl1.value == null)
//	{retval +=';'+ ctrl1.innerHTML;}
//	else
//	{retval +=';'+ ctrl1.value;}

//	if(ctrl2 == null)
//	{}
//	else if(ctrl2.type == "select-one")
//	{retval +=';'+ ctrl2.options[ctrl2.selectedIndex].text;}
//	else if(ctrl2.value == null)
//	{retval +=';'+ ctrl2.innerHTML;}
//	else
//	{retval +=';'+ ctrl2.value;}

//	return(retval);
//}

//Author: Jatinder Kumar
//Date Created: 22 oct,2005
//Checks if Category entered is valid i.e. if Category is New Category or Empty
//then not valid category otherwise its valid category
function ValidCategory(ctrl)
{
	if(document.title != "Tenant Take-Offs")
	{
		if((ctrl.value.toUpperCase().trim()=="") || (ctrl.value.toUpperCase().trim()=='NEW CATEGORY'))
		{return(false);}
		else
		{return(true);}
	}
	else
	{
		if((ctrl.value.toUpperCase().trim()=="") || (ctrl.value.toUpperCase().trim()=='NEW TAKE-OFF CATEGORY'))
		{return(false);}
		else
		{return(true);}
	}
}


function RestrictSingleQuotes(e)
{
	key = getKeyCode(e);
	if (key == 39) //Restrict apostroph
		return false;
	else
		return true;
}

/*
Author: Neeru Verma
Date Created: 26-Oct-2005
Checks if the Item count passed to the user
is greater than 0, then it will fire the server side
event for default Zip
*/
function CheckGridItemCountForZipChange(waitMsg)
{
	var ctlVal = event.srcElement.value;
	if (ctlVal.trim().length == 0 ) return true;

	if (!ExtraValidation.Validate()) return false;

	var tableAssembly = null;
	var dataGrid = null;

	if(document.title == "Site Work")
	{
		tableAssembly = document.getElementById("tblAssembly");
		dataGrid = document.getElementById(NxRef("Content_DGExistingTakeOffs"));

		var itmCount = tableAssembly.rows.length;
		var ExistingItemsCount = dataGrid.rows.length;

		if (itmCount > 2 || ExistingItemsCount > 3)
		{
			alert(waitMsg);
			__doPostBack('ChangeZipCode','');
			return true;
		}

	}
	else if(document.title == "Building")
	{
		var varBuildingID = document.getElementById(NxRef("Content_lblBuildingID")).innerHTML;

		if ((varBuildingID.trim().length > 0) && (parseInt(varBuildingID) != 0))
		{
			alert(waitMsg);
			__doPostBack('ChangeZipCode','');
			return true;
		}
	}
	return false;
}

/*
Author:Neeru Verma
Date Created: 29-Oct-2005
Checks if Building Class drop down
is visible, if visible then postback
ddloccupancy dropdown and fill Class drop
down accordingly.
*/
function PostBackToFillClass()
{
	if (document.getElementById("Content_ddlClass") != null)
		if (document.getElementById("Content_ddlClass").style.visibility == '')
			__doPostBack('ChangeClassList','');
}

/*
Author: Neeru Verma
Date Created: 09-Nov-2005
Checks the MaxLength for
TextArea Fields
*/
function ValidateMaxLength(iMaxLength)
{
	var ctlVal = event.srcElement;
	if (ctlVal.value.length <= iMaxLength)
		return true;
	else
		return false;
}


/*Functions below related to tenants*/
/**********************************************************/
function DropDownChanged(ddlObject, msg, postBackValue)
{
/*
1) verify required fields

    a) is completed? prompt save message

    b) no entries? allow buildid change.

    c) partial complete? show validation error.


*/
    if (typeof(ddlObject) == "undefined" || ddlObject == null)
		throw "ddlObject is undefined on postBackValue=" + postBackValue;

	var val = ddlObject.options[ddlObject.selectedIndex].text;
	var args = "NO";

	if (/*IsTenantValid() &&*/ SystemConstants.DisableSavingPrompts || confirm(msg))
		args = "YES";

	args = Utility.CreateArgument(args, val);
//	args += ";" + val;
	// resolve issue with embedded apostrophe.
	//window.execScript("__doPostBack('" + postBackValue + "','" + args + "')","JavaScript");
	__doPostBack(postBackValue, args);
	return true;
}


/*
Author: Neeru Verma
Date Created: 11-Nov-2005
Postback for building Selection Change
*/
function BuildingChanged(msg)
{
	return DropDownChanged(event.srcElement, msg, "BuildingChanged");
//	var ddl = event.srcElement;
//	var val = ddl.options[ddl.selectedIndex].text;
//
//	var Args = "YES";
//	if(IsTenantValid())
//	{

//		if(!confirm(msg))
//			Args = "NO";
//		Args += ";" + val;
//		window.execScript("__doPostBack('BuildingChanged','" + Args + "')","JavaScript");
//	}
//	else
//	{
//		Args = "NO";
//		Args+= ";" + val;
//		window.execScript("__doPostBack('BuildingChanged','" + Args + "')","JavaScript");
//	}
//
//	return true;
}

/*
Author: Neeru Verma
Date Created: 11-Nov-2005
Postback for Tenant Selection Change
*/
function TenantChanged(msg)
{
	return DropDownChanged(event.srcElement, msg, "TenantChanged");
//	var ddl = event.srcElement;
//	var val = ddl.options[ddl.selectedIndex].text;
//
//	var Args = "YES";
//	if(IsTenantValid())
//	{
//		if(!confirm(msg))
//			Args = "NO";
//		Args += ";" + val;
//		window.execScript("__doPostBack('TenantChanged','" + Args + "')","JavaScript");
//	}
//	else
//	{
//		Args = "NO";
//		Args+= ";" + val;
//		window.execScript("__doPostBack('TenantChanged','" + Args + "')","JavaScript");
//	}
//
//	return true;
}

/*
Author: Neeru Verma
Date Created: 11-Nov-2005
Is tenant entry valid
*/
function IsTenantValid()
{
	var ctl = null;

	if(document.title != 'Tenant Take-Offs')
	{
		ctl = document.getElementById(NxRef("Content_txtTenantName"));
			if(ctl.value.trim() == "New Tenant" || ctl.value.trim() == "")
				return false;
			else
				return true;
	}
	else
	{
		ctl = document.getElementById(NxRef("Content_asbTakeOffCategory"));
			if(ctl.value.trim() == "New Take-Off Category" || ctl.value.trim() == "")
				return false;
			else
				return true;
	}


}

/*
Author: Neeru Verma
Date Created: 11-Nov-2005
Calls confirm to save the current record
*/
function AddNewTenant(msg)
{
	if (SystemConstants.DisableSavingPrompts)
	{
		__doPostBack('AddNewTenant', "YES");
	}

	var Args = "YES";
	if(IsTenantValid())
	{
		if(!confirm(msg))
			Args = "NO";

		__doPostBack('AddNewTenant',Args);
	}

	return false;
}

function SelectTenant(tntName, tntId, ItmIndex, msg)
{
	if(IsTenantValid())
		return (Confirm(msg,"SelectTenant",tntName, tntId,ItmIndex));
	else
		{
			var retval="";
			retval = Utility.CreateArgument("NO", tntName, tntId, ItmIndex);
//			retval = GetEventArgument('NO',tntName,tntId);
//			retval += ";" + ItmIndex;

			// resolve issue with embedded apostrophe.
			//window.execScript("__doPostBack('SelectTenant','"+ retval +"')","JavaScript");
			__doPostBack("SelectTenant", retval);

			return(false);
		}
}

function DeleteTenant(tntName, tntId, msg)
{
	// must confirm on delete!
	if(/*SystemConstants.DisableSavingPrompts ||*/ confirm(msg))
	{
		var reply = "YES";
		var retval = Utility.CreateArgument(reply, tntName, tntId);
		//var retVal = GetEventArgument(reply,tntName,tntId);
		// resolve issue with embedded apostrophe.
		//window.execScript("__doPostBack('DeleteTenant','"+ retVal +"')","JavaScript");
		__doPostBack("DeleteTenant", retval);
	}

	return false;
}

function CopyTenant(tntName, tntId, BuildingId)
{
	var retval = Utility.CreateArgument(BuildingId, tntName, tntId);
	//var retval = GetEventArgument(BuildingId, tntName, tntId);
	// resolve issue with embedded apostrophe.
	//window.execScript("__doPostBack('CopyTenant','"+ retval +"')","JavaScript");
	__doPostBack("CopyTenant", retval);

	return false;
}
/********************************************************** Functions for Tenant */

/*					XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX							*/

/**********************************************************Functions for Tenant Take-Offs*/

function CategoryChanged(msg)
{
	return DropDownChanged(event.srcElement, msg, "CategoryChanged");
//	var ddl = event.srcElement;
//	var val = ddl.options[ddl.selectedIndex].text;
//
//	var Args = "YES";
//	if(IsTenantValid())
//	{
//		if(!confirm(msg))
//			Args = "NO";
//		Args += ";" + val;
//		window.execScript("__doPostBack('CategoryChanged','" + Args + "')","JavaScript");
//	}
//	else
//	{
//		Args = "NO";
//		Args+= ";" + val;
//		window.execScript("__doPostBack('CategoryChanged','" + Args + "')","JavaScript");
//	}
//
//	return false;
}

function CopyTTOCategory(catName, catId, TntId)
{
	if (ExtraValidation.FormChanged() && !ExtraValidation.Validate())
		return false;

	var retval = Utility.CreateArgument(TntId, catName, catId);
	__doPostBack("CopyCategory", retval);
	return false;
}

function CopyCategory(catName, catId, TntId)
{
	if (!PerformPageValidation())
		return false;

	var retval = Utility.CreateArgument(TntId, catName, catId);
	//var retval = GetEventArgument(TntId, catName, catId);
	// resolve issue with embedded apostrophe.
	//window.execScript("__doPostBack('CopyCategory','"+ retval +"')","JavaScript");
	__doPostBack("CopyCategory", retval);

	return false;
}

function FooterChanges(Assm, Qty, AssmId, validator)
{
	var ctrlCategory = document.getElementById("Content_asbTakeOffCategory");

	if(ValidCategory(ctrlCategory) == true &&
		ValidAddQuantity(Assm,Qty,validator) == true)
	{
		format(Qty);
		var retval = Utility.CreateArgument(Assm.value, AssmId.value, Qty.value);
//		var retval = Assm.value;
//		retval+= ";" + AssmId.value;
//		retval+= ";" + Qty.value;

		// resolve issue with embedded apostrophe.
		//window.execScript("__doPostBack('FooterChanges','"+ retval +"')","JavaScript");
		__doPostBack("FooterChanges", retval);
	}
}

function AddNewCategory(msg)
{
	var Args = "NO";
	var ctrlCategory = document.getElementById(NxRef("Content_asbTakeOffCategory"));

	if(ValidCategory(ctrlCategory))
	{
		if(SystemConstants.DisableSavingPrompts || confirm(msg))
			Args = "YES";

		// resolve issue with embedded apostrophe.
		//window.execScript("__doPostBack('AddNewCategory','"+ Args +"')","JavaScript");
		__doPostBack("AddNewCategory", Args);
	}

	return false;
}

function ChangeCostLevel(Assm, AssmId, TntId, CatId)
{
	var ddl = event.srcElement;
	var Args = Utility.CreateArgument(ddl.options[ddl.selectedIndex].value, AssmId.value, Assm.value, TntId, CatId.value);
//	var Args = ddl.options[ddl.selectedIndex].value;
//	Args+= ";" + AssmId.value + ";" + Assm.value + ";" + TntId + ";" + CatId.value;

	// resolve issue with embedded apostrophe.
	//window.execScript("__doPostBack('ChangeCostLevel','"+ Args +"')","JavaScript");
	__doPostBack("ChangeCostLevel", Args);

}
/**********************************************************Functions for Tenant Take-Offs*/

function validateDepreciation(depVal, lblErr)
{
	/*Checking if Depreciation is within range*/
	if(parseFloat(depVal) < 0 || parseFloat(depVal) > 100)
	{
		lblErr.innerHTML = 'Please enter valid Depreciation';
		lblErr.style.visibility = '';
		return(false);
	}

	/*Checking if Depreciation is number*/


	if(isNaN(depVal)== true)
	{
		lblErr.innerHTML = 'Please enter valid Depreciation';
		lblErr.style.visibility = '';
		return(false);
	}

	return true;
}

function validateCode(ctlCost,costVal, lblErr)
{
	if(ctlCost.id.indexOf('txtItemCost') != -1)
	{
		costVal = costVal.replace(',','');
		if(isNaN(costVal)== true)
		{
			lblErr.innerHTML = 'Please enter valid Cost';
			lblErr.style.visibility = '';
			return(false);
		}

		/*Checking if cost is within range*/
		if(parseFloat(costVal) < 0 || parseFloat(costVal) > 9999999999999999.00)
		{
			lblErr.innerHTML = 'Please enter valid Cost';
			lblErr.style.visibility = '';
			return(false);
		}
		format(ctlCost);
		return true;
	}
	else
		return true;
}

function MoveFocusTo(txtNextfield, iLength)
{
	var ctlVal = event.srcElement.value;
	if(ctlVal.length == iLength)
		txtNextfield.focus();

	return true;
}

function CheckGridData(dg, txtCat, lblErr)
{
	var ExistingItemsCount = document.getElementById(dg).rows.length;

	if(ExistingItemsCount <= 2)
	{
		if(txtCat !=null)
		{
			var ctrl = document.getElementById(txtCat);
			if(!ValidCategory(ctrl))
				return false;//SetFocusAndShowValidator(lblErr, ctrl, 'Please enter Category.');
		}
	}
	return true;
}

function ValidateFields()
{
	ValidateRequiredFields(document.title, false);
}

function EnableLeftNavigation(found)
{
	var mnuSite = document.getElementById("Menu_Menu_SiteWork");
	var mnuBuild = document.getElementById("Menu_Menu_Building");
	var mnuTnt = document.getElementById("Menu_Menu_Tenants");
	var mnuTakeOff = document.getElementById("Menu_Menu_TenantTakeOff");
	var mnuReport = document.getElementById("Menu_Menu_Report");

	switch(document.title)
	{
		case 'General Information':
			mnuSite.disabled = found;
			setCookie("Sitework_Menu", !found, 1);

			if(!mnuBuild.disabled)
			{
				mnuBuild.disabled = found;
				setCookie("Building_Menu", !found, 1);
			}

			if(!mnuTnt.disabled)
			{
				mnuTnt.disabled = found;
				setCookie("Tenants_Menu", !found, 1);
			}

			if(!mnuTakeOff.disabled)
			{
				mnuTakeOff.disabled = found;
				setCookie("TakeOff_Menu", !found, 1);
			}

			if(!mnuReport.disabled)
			{
				mnuReport.disabled = found;
				setCookie("Reports_Menu", !found, 1);
			}

			break;

		case 'Site Work':
			mnuBuild.disabled = found;
			setCookie("Building_Menu", !found, 1);

			if(!mnuTnt.disabled)
			{
				mnuTnt.disabled = found;
				setCookie("Tenants_Menu", !found, 1);
			}

			if(!mnuTakeOff.disabled)
			{
				mnuTakeOff.disabled = found;
				setCookie("TakeOff_Menu", !found, 1);
			}

			if(!mnuReport.disabled)
			{
				mnuReport.disabled = found;
				setCookie("Reports_Menu", !found, 1);
			}

			break;

		case 'Building':
			mnuTnt.disabled = found;
			setCookie("Tenants_Menu", !found, 1);

			if(!mnuTakeOff.disabled)
			{
				mnuTakeOff.disabled = found;
				setCookie("TakeOff_Menu", !found, 1);
			}

			if(!mnuReport.disabled)
			{
				mnuReport.disabled = found;
				setCookie("Reports_Menu", !found, 1);
			}

			break;
		case 'Tenants':
			mnuTakeOff.disabled = found;
			setCookie("TakeOff_Menu", !found, 1);

			if(!mnuReport.disabled)
			{
				mnuReport.disabled = found;
				setCookie("Reports_Menu", !found, 1);
			}

			break;
		case 'Tenant Take-Offs':
			mnuReport.disabled = found;
			setCookie("Reports_Menu", !found, 1);

			break;
	}

}
/*
//Author: Meenu Marwaha
//Date Created: 20-Feb-2006
//Help File Implementation
function OpenHelpLink(lnk)
{
	window.open(lnk);
}
*/
function changecursor()
{
	var ctl = event.srcElement;
	ctl.style.cursor = 'help';

}