/***************************************************
* JavaScript for OT project
* 
* Last updated: 4/08/2005
*
*/

var OT_dateSep; // default date separator
if (OT_dateSep == "") OT_dateSep = "/";

function OT_submitForm(OT_this) {	
	if (OT_HTMLArea) {			
		for (var i=0; i<OT_HTMLArea.length; i++) {
			var html = OT_HTMLArea[i].getHTML();
			if (html == "<p />" || html == "<br />\n") html = "";
			OT_HTMLArea[i]._textArea.value = html;
		}
	}	
	if (OT_checkMyForm(OT_this))
		OT_this.submit();
}

function OT_isHTMLArea(input_object, object_type) {
	return (object_type == "TEXTAREA" && OT_HTMLArea && input_object.style && input_object.style.display && input_object.style.display == "none");
}

function OT_onError(form_object, input_object, object_type, error_message) {
	alert(error_message);									
	if (object_type == "RADIO" || object_type == "CHECKBOX") {
		if (input_object[0])
			input_object[0].focus();
		else
			input_object.focus();
	}	else if (!OT_isHTMLArea(input_object, object_type)) { 
		input_object.focus();  
	}  
	if (object_type == "TEXT" || object_type == "PASSWORD" || object_type == "TEXTAREA" || object_type == "FILE") {
		if (!OT_isHTMLArea(input_object, object_type))
			input_object.select();
	}
	return false;	
}

function OT_hasValue(obj, obj_type) {
	if (obj_type == "TEXT" || obj_type == "PASSWORD" || obj_type == "TEXTAREA" || obj_type == "FILE")	{
		if (obj.value.length == 0) 
			return false;		
		else 
			return true;
	}	else if (obj_type == "SELECT") {
		if (obj.type != "select-multiple" && obj.selectedIndex == 0)
			return false;
		else if (obj.type == "select-multiple" && obj.selectedIndex == -1)
			return false;
		else
			return true;
	}	else if (obj_type == "RADIO" || obj_type == "CHECKBOX")	{
		if (obj[0]) {
			for (i=0; i < obj.length; i++) {
				if (obj[i].checked)
					return true;
			}
		} else {
			return (obj.checked);
		}
		return false;	
	}
}

// Date (mm/dd/yyyy)
function OT_checkusdate(object_value) {
	if (object_value.length == 0)
		return true;
	
	isplit = object_value.indexOf(OT_dateSep);
	
	if (isplit == -1 || isplit == object_value.length)
		return false;
	
	sMonth = object_value.substring(0, isplit);
	
	if (sMonth.length == 0)
		return false;
	
	isplit = object_value.indexOf(OT_dateSep, isplit + 1);
	
	if (isplit == -1 || (isplit + 1 ) == object_value.length)
		return false;
	
	sDay = object_value.substring((sMonth.length + 1), isplit);
	
	if (sDay.length == 0)
		return false;
	
	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 (!OT_checktime(sTime))
			return false; 
	}
	
	if (!OT_checkinteger(sMonth)) 
		return false;
	else if (!OT_checkrange(sMonth, 1, 12)) 
		return false;
	else if (!OT_checkinteger(sYear)) 
		return false;
	else if (!OT_checkrange(sYear, 0, 9999)) 
		return false;
	else if (!OT_checkinteger(sDay)) 
		return false;
	else if (!OT_checkday(sYear, sMonth, sDay))
		return false;
	else
		return true;
}

// Date (yyyy/mm/dd, )
function OT_checkdate(object_value) {
	if (object_value.length == 0)
		return true;
	
	isplit = object_value.indexOf(OT_dateSep);
	
	if (isplit == -1 || isplit == object_value.length)
		return false;
	
	sYear = object_value.substring(0, isplit);
	
	isplit = object_value.indexOf(OT_dateSep, isplit + 1);
	
	if (isplit == -1 || (isplit + 1 ) == object_value.length)
		return false;
	
	sMonth = object_value.substring((sYear.length + 1), isplit);
	
	if (sMonth.length == 0)
		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 (!OT_checktime(sTime))
			return false; 
	}
	
	if (sDay.length == 0)
		return false;
	
	if (!OT_checkinteger(sMonth)) 
		return false;
	else if (!OT_checkrange(sMonth, 1, 12)) 
		return false;
	else if (!OT_checkinteger(sYear)) 
		return false;
	else if (!OT_checkrange(sYear, 0, 9999)) 
		return false;
	else if (!OT_checkinteger(sDay)) 
		return false;
	else if (!OT_checkday(sYear, sMonth, sDay))
		return false;
	else
		return true;
}

// Date (dd/mm/yyyy)
function OT_checkeurodate(object_value) {
	if (object_value.length == 0)
	  return true;
	
	isplit = object_value.indexOf(OT_dateSep);
	
	if (isplit == -1 || isplit == object_value.length)
		return false;
	
	sDay = object_value.substring(0, isplit);
	
	monthSplit = isplit + 1;
	
	isplit = object_value.indexOf(OT_dateSep, monthSplit);
	
	if (isplit == -1 ||  (isplit + 1 )  == object_value.length)
		return false;
	
	sMonth = object_value.substring((sDay.length + 1), isplit);
	
	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 (!OT_checktime(sTime))
			return false; 
	}
	
	if (!OT_checkinteger(sMonth)) 
		return false;
	else if (!OT_checkrange(sMonth, 1, 12)) 
		return false;
	else if (!OT_checkinteger(sYear)) 
		return false;
	else if (!OT_checkrange(sYear, 0, null)) 
		return false;
	else if (!OT_checkinteger(sDay)) 
		return false;
	else if (!OT_checkday(sYear, sMonth, sDay)) 
		return false;
	else
		return true;
}

function OT_checkday(checkYear, checkMonth, checkDay) {
	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 OT_checkrange(checkDay, 1, maxDay); 
}

function OT_checkinteger(object_value) {
	if (object_value.length == 0)
		return true;
	
	var decimal_format = ".";
	var check_char;
	
	check_char = object_value.indexOf(decimal_format);
	if (check_char < 1)
		return OT_checknumber(object_value);
	else
		return false;
}

function OT_numberrange(object_value, min_value, max_value) {
	if (min_value != null) {
		if (object_value < min_value)
			return false;
	}
	
	if (max_value != null) {
		if (object_value > max_value)
			return false;
	}
	
	return true;
}

function OT_checknumber(object_value) {
	if (object_value.length == 0)
		return true;
	
	var start_format = " .+-0123456789";
	var number_format = " .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 OT_checkrange(object_value, min_value, max_value) {
	if (object_value.length == 0)
		return true;
	
	if (!OT_checknumber(object_value))
		return false;
	else
		return (OT_numberrange((eval(object_value)), min_value, max_value));	
	
	return true;
}

function OT_checktime(object_value) {
	if (object_value.length == 0)
		return true;
	
	isplit = object_value.indexOf(':');
	
	if (isplit == -1 || isplit == object_value.length)
		return false;
	
	sHour = object_value.substring(0, isplit);
	iminute = object_value.indexOf(':', isplit + 1);
	
	if (iminute == -1 || iminute == object_value.length)
		sMin = object_value.substring((sHour.length + 1));
	else
		sMin = object_value.substring((sHour.length + 1), iminute);
	
	if (!OT_checkinteger(sHour))
		return false;
	else if (!OT_checkrange(sHour, 0, 23)) 
		return false;
	
	if (!OT_checkinteger(sMin))
		return false;
	else if (!OT_checkrange(sMin, 0, 59))
		return false;
	
	if (iminute != -1) {
		sSec = object_value.substring(iminute + 1);		
		if (!OT_checkinteger(sSec))
			return false;
		else if (!OT_checkrange(sSec, 0, 59))
			return false;	
	}
	
	return true;
}

function OT_checkphone(object_value) {
	if (object_value.length == 0)
		return true;
	
	if (object_value.length != 12)
		return false;
	
	if (!OT_checknumber(object_value.substring(0,3)))
		return false;
	else if (!OT_numberrange((eval(object_value.substring(0,3))), 100, 1000))
		return false;
	
	if (object_value.charAt(3) != "-" && object_value.charAt(3) != " ")
		return false
	
	if (!OT_checknumber(object_value.substring(4,7)))
		return false;
	else if (!OT_numberrange((eval(object_value.substring(4,7))), 100, 1000))
		return false;
	
	if (object_value.charAt(7) != "-" && object_value.charAt(7) != " ")
		return false;
	
	if (object_value.charAt(8) == "-" || object_value.charAt(8) == "+")
		return false;
	else
		return (OT_checkinteger(object_value.substring(8,12)));
}


function OT_checkzip(object_value) {
	if (object_value.length == 0)
		return true;
	
	if (object_value.length != 5 && object_value.length != 10)
		return false;
	
	if (object_value.charAt(0) == "-" || object_value.charAt(0) == "+")
		return false;
	
	if (!OT_checkinteger(object_value.substring(0,5)))
		return false;
	
	if (object_value.length == 5)
		return true;
	
	if (object_value.charAt(5) != "-" && object_value.charAt(5) != " ")
		return false;
	
	if (object_value.charAt(6) == "-" || object_value.charAt(6) == "+")
		return false;
	
	return (OT_checkinteger(object_value.substring(6,10)));
}


function OT_checkcreditcard(object_value) {
	var white_space = " -";
	var creditcard_string = "";
	var check_char;
	
	if (object_value.length == 0)
		return true;
	
	for (var i = 0; i < object_value.length; 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)
		return false;	 
	
	if (creditcard_string.charAt(0) == "+")
		return false;
	
	if (!OT_checkinteger(creditcard_string))
		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;
		}
	}
		
	return (checkdigit % 10) == 0 ? true : false;
}


function OT_checkssc(object_value) {
	var white_space = " -+.";
	var ssc_string="";
	var check_char;
	
	if (object_value.length == 0)
		return true;
	
	if (object_value.length != 11)
		return false;
	
	if (object_value.charAt(3) != "-" && object_value.charAt(3) != " ")
		return false;
	
	if (object_value.charAt(6) != "-" && object_value.charAt(6) != " ")
		return false;
	
	for (var i = 0; i < object_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)
		return false;	 
	
	if (!OT_checkinteger(ssc_string))
		return false;
	
	return true;
}
	

function OT_checkemail(object_value) {
	if (object_value.length == 0)
		return true;
	
	if (!(object_value.indexOf("@") > -1 && object_value.indexOf(".") > -1))
		return false;    
	
	return true;
}
	
// GUID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}	
function OT_checkGUID(object_value)	{
	if (object_value.length == 0)
		return true;
	if (object_value.length != 38)
		return false;
	if (object_value.charAt(0)!="{")
		return false;
	if (object_value.charAt(37)!="}")
		return false;	
	
	var hex_format = "0123456789abcdefABCDEF";
	var check_char;	
	
	for (var i = 1; i < 37; i++) {		
		if ((i==9) || (i==14) || (i==19) || (i==24)) {
			if (object_value.charAt(i)!="-")
				return false;
		} else {
			check_char = hex_format.indexOf(object_value.charAt(i));
			if (check_char < 0)
				return false;
		}
	}
	return true;
}
	


// Get image width/height
function OT_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 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 ewsort(e, url) {	
	var ctrlPressed = 0;	
	if (parseInt(navigator.appVersion) > 3) {
		if (navigator.appName == "Netscape") {
			if (getNNVersionNumber() >= 6)
				ctrlPressed = e.ctrlKey;
			else
				ctrlPressed = ((e.modifiers+32).toString(2).substring(3,6).charAt(1)=="1");			
		} else {
		 ctrlPressed = event.ctrlKey;
		}
		if (ctrlPressed) {
			var newPage = "<scr" + "ipt language=\"JavaScript\">setTimeout('window.location.href=\"" + url + "&ctrl=1\"', 10);</scr" + "ipt>";
			document.write(newPage);
			document.close();			
			return false;
		}
	}
	return true;
}

//------------------
// Update a combobox with filter value
// object_value_array[x][0] - key value that is link to parent value
// object_value_array[x][1] - value
// object_value_array[x][2] - text
function OT_updatecombomultiple(obj, objToPopulate, object_value_array){
	var value = obj.options[obj.selectedIndex].value;

      for (var i=objToPopulate.options.length; i>=0; i--) objToPopulate.options[i]=  null;
  	
	for (var j=0; j<object_value_array.length; j++) {
		if (object_value_array[j][0] == value) {
			OT_newopt(objToPopulate, object_value_array[j][1], object_value_array[j][2]);			
		}	
	}

}

//------------------
// Update a combobox with filter value
// object_value_array[x][0] - key value that is link to parent value
// object_value_array[x][1] - value
// object_value_array[x][2] - text
function OT_updatecombo(obj, objToPopulate, object_value_array){
	var value = obj.options[obj.selectedIndex].value;

      for (var i=objToPopulate.options.length; i>=0; i--) objToPopulate.options[i]=  null;
  	
	OT_newopt(objToPopulate,'','Please Select');
	
	for (var j=0; j<object_value_array.length; j++) {
		if (object_value_array[j][0] == value) {
			OT_newopt(objToPopulate, object_value_array[j][1], object_value_array[j][2]);			
		}	
	}

}


// Create combobox option 
function OT_newopt(obj, value, text) {

      //check browser 
      if (navigator.appName !='Netscape'){
        var myEle = document.createElement("option") ;
        myEle.value = value;
        myEle.text = text;
        obj.add(myEle) ;
      } else {
        obj.appendChild(new Option(text,value));
      }
}


// Select combobox option
function OT_selectopt(obj, value) {
	for (var i = obj.length-1; i>=0; i--) {
		if (obj.options[i].value.toUpperCase() == value.toUpperCase()) {
			obj.selectedIndex = i;
			break;
		}
	}
}

// Select combobox option
function OT_selectoptmultiple(obj, valueArray) {
	for (var i = obj.length-1; i>=0; i--) {
		for (j= valueArray.length-1; j>=0; j--){
			if (obj.options[i].value.toUpperCase() == valueArray[j].toUpperCase()) {
				obj[i].selected=true;
			}
		}
	}
}


// Fill combo
// ItemArray[x][0] - key value that is link to parent value
// ItemArray[x][1] - value
// ItemArray[x][2] - text
function OT_fillcombo(obj,ItemArray)
{
  //empty combobox
  for (var q=obj.options.length;q>=0;q--) obj.options[q]=  null;

  OT_newopt(obj,'','Please Select');

  var i ;
  for ( i = 0 ; i < ItemArray.length  ; i++ )
    {
    if (ItemArray[i][1]!='ignore') {
		var sOption=ItemArray[i][2];
		if (ItemArray[i].length==4){sOption=ItemArray[i][2] + ' - ' + ItemArray[i][3];}
		OT_newopt(obj,ItemArray[i][1],sOption);}
    }
}
// Fill combo without please select
// ItemArray[x][0] - key value that is link to parent value
// ItemArray[x][1] - value
// ItemArray[x][2] - text
function OT_fillcombo1(obj,ItemArray)
{
  //empty combobox
  for (var q=obj.options.length;q>=0;q--) obj.options[q]=  null;

  var i ;
  for ( i = 0 ; i < ItemArray.length  ; i++ )
    {
    if (ItemArray[i][1]!='ignore') {
		var sOption=ItemArray[i][2];
		if (ItemArray[i].length==4){sOption=ItemArray[i][2] + ' - ' + ItemArray[i][3];}
		OT_newopt(obj,ItemArray[i][1],sOption);}
    }
}
