// JavaScript for ASP.NET Maker 3
// (C) 2004-2006 e.World Technology Ltd.

var ew_DateSep; // default date separator
var HotkeyMapper;  

if (ew_DateSep == "") ew_DateSep = "/";

function ew_DHTMLEditor(name) {
	this.name = name;
	this.create = function() { this.active = true; }
	this.editor = null;
	this.active = false;
}


function ew_CreateEditor(name) {
	if (typeof ew_DHTMLEditors == 'undefined')
		return;
	if (name && name.substring(0,2) == 'r_')
		name = name.replace(/r_/, 'x_');
	for (var i = 0; i < ew_DHTMLEditors.length; i++) {
		var ed = ew_DHTMLEditors[i];
		var cr = !ed.active;
		if (name) cr = cr && ed.name == name;
		if (cr) {
			if (typeof ed.create == 'function')
				ed.create();
			if (name)
				break;
		}
	}
}

// reset text box
function ew_ResetElement(id) {
	var obj = document.getElementById(id);
	if(obj == null) return;
	obj.value = '';
}

// reset drop down list
function ew_ResetDropDownList(id) {
	var obj = document.getElementById(id);
	if(obj==null)return;
	if (obj.multiple != true) {
		obj.selectedIndex = '0';
		if (document.createEvent) {
			var onchangeEvent = document.createEvent('HTMLEvents');
			onchangeEvent.initEvent('change', true, false);
			obj.dispatchEvent(onchangeEvent);
		} else if (document.createEventObject) {
			obj.fireEvent('onchange');
		}
	} else {
		for (var i=0; i<obj.options.length; i++)
			obj.options[i].selected = false;
	}
}

// reset radio button
function ew_ResetRadioButton(name, defaultIndex) {
	var rdoBtn = document.getElementsByName(name);
	if(rdoBtn==null)return;
	for (var i=0;i<rdoBtn.length;i++) {
		rdoBtn[i].checked = false;
	}
	if (defaultIndex != null) rdoBtn[defaultIndex].checked = true; // reset search type of basic search to 'Exact phrase'
}

// reset check box
function ew_ResetCheckBox(name) {
	checkboxelems = document.getElementsByTagName("input");
	for (i = 0; i < checkboxelems.length; i++) {
		var elemname = checkboxelems[i].name;
		if (elemname.indexOf(name) >= 0) 
			checkboxelems[i].checked = false;
	}
}

function ew_RemoveSpaces(value) {
	str = value.replace(/^\s*|\s*$/g, "");
	str = str.toLowerCase();
	if (str == "<p />" || str == "<p/>" || str == "<p>" ||
		str == "<br />" || str == "<br/>" || str == "<br>" ||
		str == "&nbsp;" || str == "<p>&nbsp;</p>")
		return ""
	else
		return value;
}

function ew_TextAreaHasValue(source, args) {
	var object_value = args.Value;	
	object_value = object_value.replace(/^\s+|\s+$/g, ""); // trim
	object_value = object_value.toLowerCase();	
	if (object_value == "" ||
		object_value == "<p>&nbsp;</p>" ||
		object_value == "&nbsp;" ||
		object_value == "<p />" ||
		object_value == "<br />") {
		args.IsValid = false;
		//ew_SetFocus(source.controltovalidate);
	}
	return true;
}

function ew_CheckBoxListHasValue(source, args) { 
	if (!document.getElementById) { return true; }
	var ctrl = source.controltovalidate;
	var obj = new Array();
	var i = 0; 
	while (document.getElementById(ctrl + "_" + i)) {
		obj.push(document.getElementById(ctrl + "_" + i));
		i++;
	} 
	if (obj.length == 0) {
		args.IsValid = true;
	} else {
		args.IsValid = false;
		for (i=0; i < obj.length; i++) {
			if (obj[i].checked) {
				args.IsValid = true;
				break;
			}
		} 
	}
	args.IsValid = false;
	//ew_SetFocus(source.controltovalidate);
}

function ew_FileHasValue(source, args) {
	if (!document.getElementById) { return true; }
	var radio = source.controltovalidate;
	var obj = new Array();
	if (document.getElementById(radio + "_radio_0") && document.getElementById(radio + "_radio_0").checked) { // keep
			args.IsValid = true;
			return true;
	} else if (document.getElementById(radio + "_radio_1") && document.getElementById(radio + "_radio_1").checked) { // remove
			args.IsValid = true;
			return true;
	} else { // replace
		if (args.Value.length > 0) {
			args.IsValid = true;
		} else {
			args.IsValid = false;
		}
	}
	return args.IsValid;
}

// Date (mm/dd/yyyy)
function ew_CheckUSDate(source, args) {
	var object_value = args.Value;
	if (args.Value.length == 0) {
		args.IsValid =  true;
		return true;
	}
	
	var isplit = object_value.indexOf(ew_DateSep);

	if (isplit == -1 || isplit == args.Value.length) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return;
	}

	var sMonth = object_value.substring(0, isplit);

	if (sMonth.length == 0) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return;
	}
	var isplit = object_value.indexOf(ew_DateSep, isplit + 1);

	if (isplit == -1 || (isplit + 1 ) == args.Value.length) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return;
	}
	var sDay = object_value.substring((sMonth.length + 1), isplit);

	if (sDay.length == 0) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return;
	}
	
	var isep = object_value.indexOf(' ', isplit + 1);
	if (isep == -1) {
		sYear = object_value.substring(isplit + 1);
	} else {
		sYear = object_value.substring(isplit + 1, isep);
		sTime = object_value.substring(isep + 1);
		if (!ew_CheckTime2(sTime)) {
			args.IsValid = false;
			//ew_SetFocus(source.controltovalidate);
			return;
		}
	}
	
	if (!ew_CheckInt(sMonth)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return;
	} else if (!ew_NumberRange(sMonth, 1, 12)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return;
	} else if (!ew_CheckInt(sYear)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return;
	} else if (!ew_NumberRange(sYear, 0, 9999)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return;
	} else if (!ew_CheckInt(sDay)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return;
	} else if (!ew_CheckDay(sYear, sMonth, sDay)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return;
	} else {
		args.IsValid =  true;
		return;
	}
}

	
// Date (yyyy/mm/dd)
function ew_CheckDate(source, args) {
	var object_value = args.Value;
	if (args.Value.length == 0) {
		args.IsValid =  true;
		return;
	}
	var isplit = object_value.indexOf(ew_DateSep);

	if (isplit == -1 || isplit == args.Value.length) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}

	var sYear = object_value.substring(0, isplit);

	isplit = object_value.indexOf(ew_DateSep, isplit + 1);

	if (isplit == -1 || (isplit + 1 ) == args.Value.length) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	var sMonth = object_value.substring((sYear.length + 1), isplit);
	
	if (sMonth.length == 0) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
		
	isep = object_value.indexOf(' ', isplit + 1);
	if (isep == -1) {
		sDay = object_value.substring(isplit + 1);
	} else {
		sDay = object_value.substring(isplit + 1, isep);
		sTime = object_value.substring(isep + 1);
		if (!ew_CheckTime2(sTime)) {
			args.IsValid = false;
			//ew_SetFocus(source.controltovalidate);
			return false;
		}
	}
	
	if (sDay.length == 0) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (!ew_CheckInt(sMonth)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else if (!ew_NumberRange(sMonth, 1, 12)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else if (!ew_CheckInt(sYear)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else if (!ew_NumberRange(sYear, 0, 9999)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else if (!ew_CheckInt(sDay)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else if (!ew_CheckDay(sYear, sMonth, sDay)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else {
		args.IsValid =  true;
		return true;
	}
}


// Date (dd/mm/yyyy)
function ew_CheckEuroDate(source, args) {
	var object_value = args.Value;
	if (args.Value.length == 0) {
		args.IsValid =  true;
		return true;
	}

	var isplit = object_value.indexOf(ew_DateSep);

	if (isplit == -1 || isplit == args.Value.length) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	var sDay = object_value.substring(0, isplit);

	var monthSplit = isplit + 1;

	isplit = object_value.indexOf(ew_DateSep, monthSplit);

	if (isplit == -1 ||  (isplit + 1 )  == args.Value.length) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	var sMonth = object_value.substring((sDay.length + 1), isplit);

	var isep = object_value.indexOf(' ', isplit + 1);
	if (isep == -1) {
		sYear = object_value.substring(isplit + 1);
	} else {
		sYear = object_value.substring(isplit + 1, isep);
		sTime = object_value.substring(isep + 1);
		if (!ew_CheckTime2(sTime)) {
			args.IsValid = false;
			//ew_SetFocus(source.controltovalidate);
			return false;
		}
	}

	if (!ew_CheckInt(sMonth)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else if (!ew_NumberRange(sMonth, 1, 12)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else if (!ew_CheckInt(sYear)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else if (!ew_NumberRange(sYear, 0, null)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else if (!ew_CheckInt(sDay)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else if (!ew_CheckDay(sYear, sMonth, sDay)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else {
		args.IsValid =  true;
		return true;
	}
}



function ew_CheckDay(checkYear, checkMonth, checkDay) {

	var maxDay = 31;

	if (checkMonth == 4 || checkMonth == 6 || checkMonth == 9 || checkMonth == 11)
		maxDay = 30;
	else if (checkMonth == 2) {
		if (checkYear % 4 > 0)
			maxDay =28;
		else if ((checkYear % 100 == 0) && (checkYear % 400 > 0))
			maxDay = 28;
		else
			maxDay = 29;
	}

	return ew_NumberRange(checkDay, 1, maxDay); 
}


function ew_CheckInteger(source, args) {
	args.IsValid = ew_CheckInt(args.Value);
	if (!args.IsValid) {
		//ew_SetFocus(source.controltovalidate);
	}
}


function ew_CheckInt(object_value) {
	if (object_value.length == 0)
		return true;
	
	var decimal_format = ew_CurrencyDecimalSeparator;
	var check_char;

	check_char = object_value.indexOf(decimal_format);
	return (check_char < 1)? ew_CheckNum(object_value): false;
}

function ew_NumberRange(object_value, min_value, max_value) {
	if (min_value && object_value < min_value) {
		return false;
	}

	if (max_value && object_value > max_value) {
		return false;
	}
	
	return true;
}


function ew_CheckNumber(source,args) {
	if (args.Value.length == 0) {
		args.IsValid = true;
		return true;
	}

	var start_format = " " + ew_CurrencyDecimalSeparator + "+-0123456789";
	var number_format = " " + ew_CurrencyDecimalSeparator + "0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;
	var object_value = args.Value;
	check_char = start_format.indexOf(object_value.charAt(0))
	if (check_char == 1) {
		decimal = true;
	} else if (check_char < 1) {
		args.IsValid = false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
		
	for (var i = 1; i < args.Value.length; i++) {
		check_char = number_format.indexOf(object_value.charAt(i))
		if (check_char < 0) {
			args.IsValid = false;
			//ew_SetFocus(source.controltovalidate);
			return false;
		} else if (check_char == 1) {
			if (decimal) {
				args.IsValid = false;
				//ew_SetFocus(source.controltovalidate);
				return false;
			} else {
				decimal = true;
			}
		} else if (check_char == 0) {
			if (decimal || digits)    
				trailing_blank = true;
		} else if (trailing_blank) {
			args.IsValid = false;
			//ew_SetFocus(source.controltovalidate);
			return false;
		} else {
			digits = true;
		}
	}    

	args.IsValid = true;
	return true;
}
	
function ew_CheckNum(object_value) { 
	if (object_value.length == 0) {
		return true;
	}

	var start_format = " " + ew_CurrencyDecimalSeparator + "+-0123456789";
	var number_format = " " + ew_CurrencyDecimalSeparator + "0123456789";
	var check_char;
	var decimal = false;
	var trailing_blank = false;
	var digits = false;
	
	check_char = start_format.indexOf(object_value.charAt(0))
	if (check_char == 1) {
		decimal = true;
	} else if (check_char < 1) {
		return false;
	}
		
	for (var i = 1; i < object_value.length; i++) {
		check_char = number_format.indexOf(object_value.charAt(i))
		if (check_char < 0) {
			return false;
		} else if (check_char == 1) {
			if (decimal) {
				return false;
			} else {		
				decimal = true;
			}
		} else if (check_char == 0) {
			if (decimal || digits)    
				trailing_blank = true;
		} else if (trailing_blank) {
			return false;
		} else {
			digits = true;
		}
	}    

	return true;
}
	

function ew_CheckTime(source, args) {
	var object_value = args.Value;
	if (args.Value.length == 0) {
		args.IsValid =  true;
		return true;
	}
	var isplit = object_value.indexOf(':');

	if (isplit == -1 || isplit == args.Value.length) {
		args.IsValid =  false;
		return false;
	}
	var sHour = object_value.substring(0, isplit);
	var iminute = object_value.indexOf(':', isplit + 1);

	if (iminute == -1 || iminute == args.Value.length) {
		var sMin = object_value.substring((sHour.length + 1));
	} else {
		var sMin = object_value.substring((sHour.length + 1), iminute);
	}

	if (!ew_CheckInt(sHour)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else if (!ew_NumberRange(sHour, 0, 23)) {
		args.IsValid =  false;
		return false;
	} 
	
	if (!ew_CheckInt(sMin)){
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else if (!ew_NumberRange(sMin, 0, 59)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	
	if (iminute != -1)
	{
		var sSec = object_value.substring(iminute + 1);

		if (!ew_CheckInt(sSec)) {
			args.IsValid =  false;
			//ew_SetFocus(source.controltovalidate);
			return false;
		} else	if (!ew_NumberRange(sSec, 0, 59)) {
			args.IsValid =  false;    
			//ew_SetFocus(source.controltovalidate);
			return false;
		}
	}
	
	args.IsValid =  true;
	return true;
}
	
function ew_CheckTime2(value) {
	if (value.length == 0) {
		return true;
	}
	var isplit = value.indexOf(':');

	if (isplit == -1 || isplit == value.length) {
		return false;
	}
	var sHour = value.substring(0, isplit);
	var iminute = value.indexOf(':', isplit + 1);

	if (iminute == -1 || iminute == value.length) {
		var sMin = value.substring((sHour.length + 1));
	} else {
		var sMin = value.substring((sHour.length + 1), iminute);
	}

	if (!ew_CheckInt(sHour)) {
		return false;
	} else if (!ew_NumberRange(sHour, 0, 23)) {
		return false;
	} 
	
	if (!ew_CheckInt(sMin)){
		return false;
	} else if (!ew_NumberRange(sMin, 0, 59)) {
		return false;
	}
	
	if (iminute != -1)
	{
		var sSec = value.substring(iminute + 1);

		if (!ew_CheckInt(sSec)) {
			return false;
		} else	if (!ew_NumberRange(sSec, 0, 59)) {
			return false;
		}
	}
	
	return true;
}


function ew_CheckPhone(source, args) {
	var object_value = args.Value;
	var tempint; 
	if (args.Value.length == 0) {
		args.IsValid =  true;
		return true;
	}
	if (args.Value.length != 12) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (!ew_CheckNum(object_value.substring(0,3))) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else {
		tempint = eval(object_value.substring(0,3));
	}	
	if (!ew_NumberRange(tempint, 100, 1000)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (object_value.charAt(3) != "-" && object_value.charAt(3) != " ") {
		args.IsValid =  false
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (!ew_CheckNum(object_value.substring(4,7))) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else {
		tempint = eval(object_value.substring(4,7))
	}
	if (!ew_NumberRange(tempint, 100, 1000)){
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (object_value.charAt(7) != "-" && object_value.charAt(7) != " ") {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (object_value.charAt(8) == "-" || object_value.charAt(8) == "+") {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	} else {
		args.IsValid =  (ew_CheckInt(object_value.substring(8,12)));
		return args.IsValid
	}
}


function ew_CheckZip(source, args) {
	var object_value = args.Value;
	if (args.Value.length == 0) {
		args.IsValid =  true;
		return true;
	}
	if (args.Value.length != 5 && args.Value.length != 10) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (object_value.charAt(0) == "-" || object_value.charAt(0) == "+") {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (!ew_CheckInt(object_value.substring(0,5))) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (args.Value.length == 5) {
		args.IsValid =  true;
		return true;
	}
	if (object_value.charAt(5) != "-" && object_value.charAt(5) != " ") {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (object_value.charAt(6) == "-" || object_value.charAt(6) == "+") {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	args.IsValid =  (ew_CheckInt(object_value.substring(6,10)));
	if (!args.IsValid)
		//ew_SetFocus(source.controltovalidate);
	return args.IsValid
}


function ew_CheckCreditCard(source, args) {
	var object_value = args.Value;
	var white_space = " -";
	var creditcard_string="";
	var check_char;
	var strlen = object_value.length
	if (strlen == 0) {
		args.IsValid = true;
		return true;
	}
	for (var i = 0; i < strlen; i++) {
		check_char = white_space.indexOf(object_value.charAt(i))
		if (check_char < 0)
			creditcard_string += object_value.substring(i, (i + 1));
	}    

	if (creditcard_string.length == 0) {
		args.IsValid =  false;     
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (creditcard_string.charAt(0) == "+") {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (!ew_CheckInt(creditcard_string)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}

	var doubledigit = (creditcard_string.length % 2 == 1) ? false : true;
	var checkdigit = 0;
	var tempdigit;

	for (var i = 0; i < creditcard_string.length; i++) {
		tempdigit = eval(creditcard_string.charAt(i))
		if (doubledigit) {
			tempdigit *= 2;
			checkdigit += (tempdigit % 10);

			if ((tempdigit / 10) >= 1.0) {
				checkdigit++;
			}

			doubledigit = false;
		} else {
			checkdigit += tempdigit;
			doubledigit = true;
		}
	}    
	args.IsValid = (checkdigit % 10 == 0) ? true : false;
	if (!args.IsValid)
		//ew_SetFocus(source.controltovalidate);
	return args.IsValid;
}


function ew_CheckSSC(source, args) {
	var object_value = args.Value;
	var white_space = " -+.";
	var ssc_string="";
	var check_char;

	if (args.Value.length == 0) {
		args.IsValid =  true;
		return true;
	}
	if (args.Value.length != 11) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (object_value.charAt(3) != "-" && object_value.charAt(3) != " ") {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (object_value.charAt(6) != "-" && object_value.charAt(6) != " ") {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	for (var i = 0; i < args.Value.length; i++) {
		check_char = white_space.indexOf(object_value.charAt(i))
		if (check_char < 0)
			ssc_string += object_value.substring(i, (i + 1));
	}    

	if (ssc_string.length != 9) {
		args.IsValid =  false;     
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	if (!ew_CheckInt(ssc_string)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	args.IsValid =  true;
	return true;
}
	

function ew_CheckEmail(source, args) {
	var object_value = args.Value;
	if (args.Value.length == 0) {
		args.IsValid =  true;
		return true;
	}
	if(!(object_value.indexOf("@") > -1 && object_value.indexOf(".") > -1)) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	args.IsValid =  true;
	return true;
}
	

// GUID xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
function ew_CheckGUID(source, args) {
	var object_value = args.Value;
	if (args.Value.length == 0) {
		args.IsValid =  true;
		return true;
	}
	if (args.Value.length != 36) {
		args.IsValid =  false;
		//ew_SetFocus(source.controltovalidate);
		return false;
	}
	/*
	if (object_value.charAt(0)!="{"){
		args.IsValid =  false;
		return false;
	}
	if (object_value.charAt(37)!="}"){
		args.IsValid =  false;    
		return false;
	}
	*/
	var hex_format = "0123456789abcdefABCDEF";
	var check_char;    

	for (var i = 0; i < 36; i++) {        
		if ((i==8)||(i==13)||(i==18)||(i==23)) {
			if (object_value.charAt(i)!="-") {
				args.IsValid =  false;
				//ew_SetFocus(source.controltovalidate);
				return false;
			}
		} else {
			check_char = hex_format.indexOf(object_value.charAt(i));
			if (check_char < 0) {
				args.IsValid =  false;
				//ew_SetFocus(source.controltovalidate);
				return false;
			}
		}
	}
	args.IsValid = true;
	return true;
}

function ew_CheckFileType(source, args) {
	var object_value = args.Value;
	if (args.Value.length == 0) {
		args.IsValid = true;
		return true;
	}
	var fileTypes = ew_UploadAllowedFileExt.split(",");
	var ext = object_value.substring(object_value.lastIndexOf(".") + 1, object_value.length).toLowerCase();
	for (var i = 0; i < fileTypes.length; i++) {
		if (fileTypes[i] == ext) {
			args.IsValid = true;
			return true;
		}
	}
	args.IsValid = false;
	//ew_SetFocus(source.controltovalidate);
	return false;
}

function ew_IsHiddenTextArea(input_object) {
	return (input_object && input_object.type && input_object.type == "textarea" &&
		input_object.style && input_object.style.display && input_object.style.display == "none");
}

function ew_SetFocus(objectId) {
    var input_object = document.getElementById(objectId);
	if (!input_object || !input_object.type)
		return;
	var type = input_object.type;
	if (type == "radio" || type == "checkbox") {
		if (input_object[0])
			input_object[0].focus();
		else
			input_object.focus();
	} else if (!ew_IsHiddenTextArea(input_object)) {
		input_object.focus();
	}
	if (type == "text" || type == "password" || type == "textarea" || type == "file") {
		if(!ew_IsHiddenTextArea(input_object))
			input_object.select();
	}
}

// Get image width/height
function ew_GetImageSize(file_object, width_object, height_object) {
	if (navigator.appVersion.indexOf("MSIE") != -1) {
		myimage = new Image();
		myimage.onload = function () { width_object.value = myimage.width; height_object.value = myimage.height; }        
		myimage.src = file_object.value;
	}
}

// Get Netscape Version
function ew_GetNNVersionNumber() {
	if (navigator.appName == "Netscape") {
		var appVer = parseFloat(navigator.appVersion);
		if (appVer < 5) {
			return appVer;
		} else {
			if (typeof navigator.vendorSub != "undefined")
				return parseFloat(navigator.vendorSub);
		}
	}
	return 0;
}

// Get Ctrl key for multiple column sort
function ew_Sort(e,form, tablename) {
	var ctrlPressed = 0;    
	if (parseInt(navigator.appVersion) > 3) {
		if (navigator.appName == "Netscape") {
			if (ew_GetNNVersionNumber() >= 6)
				ctrlPressed = e.ctrlKey;
			else
				ctrlPressed = ((e.modifiers+32).toString(2).substring(3,6).charAt(1)=="1");            
		} else {
			ctrlPressed = event.ctrlKey;
		}
		var ctrl = document.getElementById(tablename + "_Ctrl")
		if (ctrlPressed) {
			if (ctrl) ctrl.value = 'yes';
		} else {
			if (ctrl) ctrl.value = 'no';
		}
	}
	return true;
}


// Dynamic Highlight
// Set mouse over color
function ew_MouseOver(row) {
	row.mover = true; // mouse over
	if (!(row.selected || row.master)) {
		if (usecss)
	    	row.className = rowmoverclass;
		else
			row.style.backgroundColor = rowmovercolor;
	}
}

// Set mouse out color
function ew_MouseOut(row, firstrowoffset) {
	row.mover = false; // mouse out
	if (!(row.selected || row.master)) {
		ew_SetColor(row, firstrowoffset);
	}
}

// Set row color
function ew_SetColor(row, firstrowoffset) {
	if (row.selected) {
		if (usecss)
			row.className = rowselectedclass;
		else
			row.style.backgroundColor = rowselectedcolor;
	}
	else if (row.master) {
		if (usecss)
			row.classname = rowmasterclass;
		else
			row.style.backgroundColor = rowmastercolor;
	}
	else if (row.edit) {
		if (usecss)
			row.className = roweditclass;
		else
			row.style.backgroundColor = roweditcolor;
	}
	else if ((row.rowIndex-firstrowoffset)%2) {
		if (usecss)
			row.className = rowaltclass;
		else
			row.style.backgroundColor = rowaltcolor;
	}
	else {
		if (usecss)
			row.className = rowclass;
		else
			row.style.backgroundColor = rowcolor;
	}
}

// Set selected row color
function ew_Click(row, tablename, firstrowoffset, lastrowoffset) {
	if (row.deleteclicked)
		row.deleteclicked = false; // reset delete button/checkbox clicked
	else {
		var bselected = row.selected;
		ew_ClearSelected(tablename, firstrowoffset, lastrowoffset); // clear all other selected rows
		if (!row.deleterow) row.selected = !bselected; // toggle
		ew_SetColor(row, firstrowoffset);		
	}
}

// Clear selected rows color
function ew_ClearSelected(tablename, firstrowoffset, lastrowoffset) {
	var table = document.getElementById(tablename);
	for (var i = firstrowoffset; i < table.rows.length - lastrowoffset; i++) {
		var thisrow = table.rows[i];
		if (thisrow.selected && !thisrow.deleterow) {
			thisrow.selected = false;
			ew_SetColor(thisrow, firstrowoffset);
		}
	}
}

// Clear all row delete status
function ew_ClearDelete(tablename, firstrowoffset, lastrowoffset) {
	var table = document.getElementById(tablename);
	for (var i = firstrowoffset; i < table.rows.length - lastrowoffset; i++) {
		var thisrow = table.rows[i];
		thisrow.deleterow = false;
	}
}

// Click all delete button
function ew_ClickAll(chkbox, tablename, firstrowoffset, lastrowoffset) {
	var table = document.getElementById(tablename);
	for (var i = firstrowoffset; i < table.rows.length - lastrowoffset; i++) {
		var thisrow = table.rows[i];
		thisrow.selected = chkbox.checked;
		thisrow.deleterow = chkbox.checked;
		ew_SetColor(thisrow, firstrowoffset);
	}
}

// Click single delete link
function ew_ClickDelete(tablename, firstrowoffset, lastrowoffset) {
	ew_ClearSelected(tablename, firstrowoffset, lastrowoffset);
	var table = document.getElementById(tablename);
	for (var i = firstrowoffset; i < table.rows.length - lastrowoffset; i++) {
		var thisrow = table.rows[i];
		if (thisrow.mover) {
			thisrow.deleteclicked = true;
			thisrow.deleterow = true;
			thisrow.selected = true;
			ew_SetColor(thisrow, firstrowoffset);
			break;
		}
	}
}

// Click multi delete checkbox
function ew_ClickMultiDelete(chkbox, tablename, firstrowoffset, lastrowoffset) {
	ew_ClearSelected(tablename, firstrowoffset, lastrowoffset);
	var table = document.getElementById(tablename);
	for (var i = firstrowoffset; i < table.rows.length - lastrowoffset; i++) {
		var thisrow = table.rows[i];
		if (thisrow.mover) {
			thisrow.deleteclicked = true;
			thisrow.deleterow = chkbox.checked;
			thisrow.selected = chkbox.checked;
			ew_SetColor(thisrow, firstrowoffset);
			break;
		}
	}
}


function ew_SetChecked(id) {
	if (document.getElementById(id + '_2')) {
		document.getElementById(id + '_2').checked=true;
	}
}

function ew_SelectAll(sCtrl, elem, tablename, firstrowoffset, lastrowoffset, changeColor) {
	for (i=0; i<elem.form.elements.length; i++) {
		var elm = elem.form.elements[i];
		if (elm.type == "checkbox" && elm.name.indexOf(sCtrl) > 0 && elm.id.indexOf(tablename) >= 0) {
			elm.checked = elem.checked;
			if (ew_ClickAll && changeColor) ew_ClickAll(elm, tablename, firstrowoffset, lastrowoffset);
		}
	}
}

// Inline Delete Confirmation
function ew_ConfirmMultiDelete(msg,clientId, tablename, firstrowoffset, lastrowoffset){
	if (confirm(msg)) {
		__doPostBack(clientId, '');
	} else { 
		ew_ClearDelete(tablename, firstrowoffset, lastrowoffset); 
	}
	return false;
}

function ew_ConfirmDelete(msg) {
	return (confirm(msg));
}

// v3.0
var ew = window.ew || {};

ew.Controls = {};

function ew_SetControlAsChecked(id) {
	var elem = document.getElementById(id);	
	if (elem && elem.checked != "undefined") 
		elem.checked = true;
}


//******************************************** 
//********[modified by: sh abdul wahid]*******
//********************************************

//*****************Hotkeys*********************


function Hotkey()
{
    this.Ctrl=false;
    this.Alt=false;
    this.Shift=false;

    this.Char="";
    this.MappedElementId="";
}
function mLookup(strKeyName)
{
    alert("Lookup");
    return(this[strKeyName]);
}
function mAdd()
{
    for (c=0; c < mAdd.arguments.length; c+=2) {
      this[mAdd.arguments[c]] = mAdd.arguments[c+1];
    }
}
function mAddEvent()
{
    for (c=0; c < mAddEvent.arguments.length; c+=5) {
        var even=new Hotkey();
        even.Ctrl=mAddEvent.arguments[c];
        even.Alt=mAddEvent.arguments[c+1];
        even.Shift=mAddEvent.arguments[c+2];
        even.Char=mAddEvent.arguments[c+3];
        even.MappedElementId=mAddEvent.arguments[c+4];
      this[this.Index++] = even;
    }
}

function mDelete(strKeyName)
{
    for (c=0; c < mDelete.arguments.length; c++) {
      this[mDelete.arguments[c]] = null;
    }
}

function UCDictionary()
{
    this.Add = mAdd;
    this.AddEvent = mAddEvent;
    this.Lookup = mLookup;
    this.Index=0;
}
//Code for Hotkeys [developed by: sh abdul wahid]  


HotkeyMapper=new UCDictionary();

function Even()
{
   
    if(event.altKey || event.ctrlKey)
    {
        for(var key in HotkeyMapper)
        {
            var hotkey=HotkeyMapper[key];
            if(hotkey != null && hotkey.Ctrl != null)
            {
//------------FOR TESTING PURPOSE ONLY-----------------------------------------            
//                var trace = "Ctrl:" + hotkey.Ctrl + "\n" +
//                            "Alt:" +   hotkey.Alt + "\n" +
//                            "Shift:" + hotkey.Shift + "\n" +
//                            "KeyCode:" +  hotkey.Char.charCodeAt(0) + "\n";
//                alert("HotKey:" + "\n" + trace);           
//                 
//                trace = "Ctrl:" + event.ctrlKey + "\n" +
//                        "Alt:" +   event.altKey + "\n" +
//                        "Shift:" + event.shiftKey + "\n" +
//                        "KeyCode:" +  event.keyCode + "\n";
//                alert("CurrentKey:" + "\n" + trace);
//-----------------------------------------------------------------------------           

                if(hotkey.Ctrl==event.ctrlKey && 
                    hotkey.Alt==event.altKey && 
                    hotkey.Shift==event.shiftKey &&
                    hotkey.Char.charCodeAt(0) ==  event.keyCode
                )
                {
                    var b = document.getElementById(hotkey.MappedElementId);
                    if(b != null)
                    {
                        b.click();
                    }
                    break; 
                }
            }
            
            
        }
        
    }  

} 
document.onkeyup = Even;
//************************************************************


           
//********Company selection check********************
function ConfirmCompanySelection(obj)
    {
        
        if(!confirm('Do you want to switch the company?'))
        {
            obj.value=obj.CurrentCompany;
            return false;
        }
        else
        {
            return true;
        }
        
    }
//***************************************************



//********CheckAll Functionality***************
function GetParentDiv(checkedState,checkBox)
{
    //get div
    var obj=checkBox;
    var div=null;
    do
    {
            obj = obj.parentElement;
    } while (obj.tagName != "TABLE")
    
    if(obj.tagName == "TABLE")
    {
       div=obj.parentElement;
    }
    
    if(checkedState==true)
    {
        return div;
    }
    else
    {
        // if all siblings are unchecked then pass div otherwise pass null.
       
        var allUnchecked=true;
        for(var i=0; i<div.children.length; i++)
        {
            
            if(div.children[i].tagName=="TABLE")
            {
                var tbl=div.children[i];
                var checkBoxes = tbl.getElementsByTagName("INPUT");
                for(var j=0; j<checkBoxes.length; j++)
                {
                    if(checkBoxes[j].type=="checkbox" && checkBoxes[j].checked)
                    {
                        allUnchecked=false;
                        break;
                    }
                }
                if(!allUnchecked)
                {
                    break;
                }
            } 
            
        }
        if(allUnchecked)
        {
            return div;
        }
        else
        {
            return null;
        }
    }
    
    
   
    
}

function OnTreeNodeChecked()
{
    
    var obj = window.event.srcElement;
    var treeNodeFound = false;
    var checkedState;
    if (obj.tagName == "INPUT" && obj.type == "checkbox")
    {
        var treeNode = obj;
        checkedState = treeNode.checked;
        do
        {
            obj = obj.parentElement;
        } while (obj.tagName != "TABLE")
        
        //obj is the table container of checkbox.
        //and table is contained by div e.g [obj.parentElement]  currentDiv
        //this div contains other divs, one of them contains child elements.  childDiv
         
        var currentDiv=obj.parentElement;
        var childDiv=null;
        
        // get child div
        for(var i=0; i<currentDiv.children.length; i++)
        {
            
            if(currentDiv.children[i].tagName == "DIV")
            {
                var strCheckBox="CheckBox";
                var commonId=treeNode.id.substring(0,treeNode.id.length-strCheckBox.length);
                
                //if div's id started with commonId then it would be the childDiv  
                if(currentDiv.children[i].id.match(commonId))
                {
                    childDiv = currentDiv.children[i];
                    break;
                }
            }
        }
            
        //change checked state of childs 
        if(childDiv != null)
        {
            var checkBoxes = childDiv.getElementsByTagName("INPUT");
            for(var i=0; i<checkBoxes.length; i++)
            {
                if(checkBoxes[i].type=="checkbox")
                {
                    checkBoxes[i].checked = checkedState;
                   // alert (checkBoxes[i].title);
                }
            }
        } 
        
       //if checkedState is true then check its parents also.
       //if checkState is false and its siblings state is also false then uncheck its parent.
       
       var div=GetParentDiv(checkedState,treeNode);
       var strCheckBox="CheckBox";
       var strNodes="Nodes"
       
       while(div != null)
       {
           var commonId=div.id.substring(0,div.id.length-strNodes.length);
           var parentCheckBox= document.getElementById(commonId + strCheckBox);
           if(parentCheckBox != null)
           {
                parentCheckBox.checked = checkedState; 
                div = GetParentDiv(checkedState,parentCheckBox);
           }
           else
           {
                break;
           }
           
       }  

        
        
    }
}
//******************************************************************

function InTableCheckAll(sender)
{
    obj=sender;
    do
    {
        obj = obj.parentElement;
    } while (obj.tagName != "TABLE")
    
    var checkBoxes = obj.getElementsByTagName("INPUT");
    for(var i=0; i<checkBoxes.length; i++)
    {
        if(checkBoxes[i].type=="checkbox")
        {
            checkBoxes[i].checked = sender.checked;
        }
    }   
}

function InTableGetConcatenatedListOfAttachedValueOfSelectedCheckBoxes(container)
{
       
    var checkBoxes = container.getElementsByTagName("INPUT");
    var concatinatedList="";
    var seperator=""
   
    for(var i=0; i<checkBoxes.length; i++)
    {
        if(checkBoxes[i].type=="checkbox" && checkBoxes[i].checked==true && checkBoxes[i].AttachedValue != null)
        {
            concatinatedList += seperator + checkBoxes[i].AttachedValue;
            seperator=","; 
        }
    }
    return concatinatedList;   
}


function ToNumberFormat(val)
{
    var numberTest = new NumberFormat(val);
    numberTest.setCommas(true);
    numberTest.setPlaces(2);
    numberTest.setCurrency(false);
    return numberTest.toFormatted();

}
function parseFormatedFloat(str) 
{
	str = str.replace(/,/g,"");
	return parseFloat(str);
}
function AlertMessageOnOpener(message)
{
    try 
    {
        opener.alert(message);
    }
    catch(err)
    {    
    }
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
 
String.prototype.lTrim = function() {
	return this.replace(/^\s+/g,"");
}
 
String.prototype.rTrim = function() {
	return this.replace(/\s+$/g,"");
}
 
String.prototype.trimAll = function() {
	return this.replace(/\s+/g,"");
}






