function getListScrollingParams(theForm) {
	return "LP_CP=" + theForm.LP_CP.value + "&LP_MRC="
		+ theForm.LP_MRC.value + "&LP_OB=" + theForm.LP_OB.value + "&LP_AO=" + theForm.LP_AO.value;
}
function setIFrameHeightToMax(frameId) {
	var theFrame = document.getElementById(frameId)
	var minHeight = 400;
	if (theFrame.contentDocument) {  // firefox
		var temp = theFrame.contentDocument.documentElement.scrollHeight;
		if (temp < minHeight) {
			theFrame.height =  minHeight; 
		} else {
			theFrame.height = temp + 10; 
		}
	} else { // IE
		var temp = theFrame.contentWindow.document.body.scrollHeight;
		if (temp < minHeight) {
			theFrame.style.height =  minHeight; 
		} else {
			theFrame.style.height = temp + 10; 
		}
	}
}
function trim(str) {
   return str.replace(/^\s*|\s*$/g,"");
}
function trimExp(theString, exp) {
	theString = theString.replace(new RegExp("^" + exp + "*"), ""); 
	theString = theString.replace(new RegExp(exp + "*$"), "");
	return theString;
}
function setDisplay(elementId, display, setParentFrameHeightLevel) {
	if (display) {
		document.getElementById(elementId).style.display = '';
	} else {
		document.getElementById(elementId).style.display = 'none';
	}
	if (setParentFrameHeightLevel > 0) {
		window.parent.setIFrameHeightToMax("contentIframe");
		if (setParentFrameHeightLevel > 1) {
			window.parent.parent.setIFrameHeightToMax("contentIframe");
		}
	}
}
function resetValue(elementId, reset, newValue) {
	if (reset) {
		document.getElementById(elementId).value = newValue;
	}
}
function updateSelectTextField(theSelect, fieldId, trimExpression) {
	var theField = document.getElementById(fieldId);
	if (trimExpression == null) {
		theField.value = theSelect.options[theSelect.selectedIndex].text;
	} else {
		theField.value = trimExp(theSelect.options[theSelect.selectedIndex].text, trimExpression);
	}
}
function setSelectedIndex(theSelect, value, firstOptionValue) {
	if (value != null && theSelect != null) {
		if (value == firstOptionValue) {
			theSelect.selectedIndex = 0;
		} else {
			for (var i = 0; i < theSelect.options.length; i++) {
				if (theSelect.options[i].value == value) {
					theSelect.selectedIndex = i;
					break;
				}
			}
		}
	}
}
function setAllCheckBoxes(objCheckBoxes, checkValue) {
	var countCheckBoxes = objCheckBoxes.length;
	if (!countCheckBoxes) {
		objCheckBoxes.checked = checkValue;
	} else {
		for (var i = 0; i < countCheckBoxes; i++) {
			objCheckBoxes[i].checked = checkValue;
		}
	}
}
function popupNamed(url, name){
	var theWindow = window.open(url, name, 'directories=no,menubar=no,location=no,resizable=yes,scrollbars=yes,width=700,height=550');
	theWindow.focus();
}
function popup(url){
	var theWindow = window.open(url, 'OS4net_POPUP', 'directories=no,menubar=no,location=no,resizable=yes,scrollbars=yes,width=700,height=550');
	theWindow.focus();
}
function hideElement(id) {
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'none';
	} else {
		if (document.layers) { // Netscape 4
			document.id.display = 'none';
		} else { // IE 4
			document.all.id.style.display = 'none';
		}
	}
}
function showElement(id) {
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'block';
	} else {
		if (document.layers) { // Netscape 4
			document.id.display = 'block';
		} else { // IE 4
			document.all.id.style.display = 'block';
		}
	}
}
function makeSelectOne1(values, selectId, selectedValue, containerId, required) {
	var theContainer = document.getElementById(containerId);
	if (theContainer != null) {
		var t = "<select";
		if (required) {
			t += " class='required'";
		}
		t += " id='" + selectId + "' name='" + selectId + "'>";		
		t += "<option value=''>--- Please Select ---</option>";
		if (values != null) {
			for (var i = 0; i < values.length; i++) {
				t += '<option value="' + values[i][0] + '"';
				if (selectedValue != null && selectedValue == values[i][0]) {
					t += ' selected="selected"';
				}
				t += '>' + values[i][1] + '</option>';
			}
		}
		t += "</select><span id='" + selectId + "_m' class='fm'></span>";
		theContainer.innerHTML = t;
	}
}
function makeSelectOne(values, selectedValueFieldId, selectedLabelFieldId, containerId, required) {
	var selectName = selectedValueFieldId + 'Select';
	var theContainer = document.getElementById(containerId);
	var selectedValue = document.getElementById(selectedValueFieldId).value;
	if (theContainer != null) {
		var t = "<select onchange='setSelectFieldValue(this, \""
			+ selectedLabelFieldId + "\", \"" + selectedValueFieldId + "\");' ";
		if (required) {
			t += "class='required' ";
		}
		t += "id='" + selectName + "' name='" + selectName + "'>";		
		t += "<option value=''>--- Please Select ---</option>";
		for (var i = 0; i < values.length; i++) {
			t += '<option value="' + values[i][0] + '"';
			if (selectedValue != null && selectedValue == values[i][0]) {
				t += ' selected="selected"';
				document.getElementById(selectedLabelFieldId).value = values[i][1];
				document.getElementById(selectedValueFieldId).value = values[i][0];
			}
			t += '>' + values[i][1] + '</option>';
		}
		t += "</select><span id='" + selectedValueFieldId + "Select_m' class='fm'></span>";
		theContainer.innerHTML = t;
	}
}
function setSelectFieldValue(theSelect, selectedLabelFieldId, selectedValueFieldId) {
	var selectedOption = theSelect.options[theSelect.selectedIndex];
	document.getElementById(selectedLabelFieldId).value = selectedOption.text;
	document.getElementById(selectedValueFieldId).value = selectedOption.value;
}
function getSelectOneValue(theSelect) {
	if (theSelect.selectedIndex == null || theSelect.selectedIndex == -1) {
		return '';
	} else {
		return theSelect[theSelect.selectedIndex].value;
	}
}

function makeSelectMany(options, theField, selectedOptionsArray, containerId, required, size,
        selectedOptionsIdFieldName, selectedOptionsLabelFieldName) {
    var selectName = theField + 'Select';
    var theContainer = document.getElementById(containerId);
    var selectedOptionIds = '';
    var selectedOptionLabels = '';
    if (theContainer != null) {
        var t = "<select multiple='multiple' size='" + size
            + "' onchange='setSelectManyFieldValue(this, \""
            + selectedOptionsIdFieldName + "\", \"" + selectedOptionsLabelFieldName + "\");' ";
        if (required) {
            t += "class='required' ";
        }
        t += "id='" + selectName + "' name='" + selectName + "'>";
        t += "<option value=''>--- Please Select ---</option>";
        for (var i = 0; i < options.length; i++) {
            t += '<option value="' + options[i][0] + '"';
            if (selectedOptionsArray != null && contains(options[i][0], selectedOptionsArray)
            		&& !isEmptySelectValue(options[i][0])) {
                t += ' selected="selected"';
                selectedOptionIds += "<input type='hidden' name='" + selectedOptionsIdFieldName
                    + "' value='" + options[i][0] + "'/>";
                selectedOptionLabels += "<input type='hidden' name='" + selectedOptionsLabelFieldName
                    + "' value='" + options[i][1] + "'/>";
            }
            t += '>' + options[i][1] + '</option>';
        }
        t += "</select><span id='" + theField + "Select_m' class='fm'></span>";
        t += "<span id='" + selectName + "HiddenFieldsSpan'>" + selectedOptionIds
            + selectedOptionLabels + "</span>";
        theContainer.innerHTML = t;
    }
}
function setSelectManyFieldValue(theSelect, selectedOptionsIdFieldName, selectedOptionsLabelFieldName) {
    var theOptions = theSelect.options;
    var theContainer = document.getElementById(theSelect.name + 'HiddenFieldsSpan');
    var selectedOptionIds = '';
    var selectedOptionLabels = '';
    for (var i = 0; i < theOptions.length; i++) {
        if (theOptions[i].selected) {
        	if (!isEmptySelectValue(theOptions[i].value)) {
	            selectedOptionIds += "<input type='hidden' name='" + selectedOptionsIdFieldName
	                + "' value='" + theOptions[i].value + "'/>";
	            selectedOptionLabels += "<input type='hidden' name='" + selectedOptionsLabelFieldName
	                + "' value='" + theOptions[i].text + "'/>";
        	}
        }
    }
    theContainer.innerHTML = selectedOptionIds + selectedOptionLabels;
}
function contains(item, array) {
    for (var i = 0; i < array.length; i++) {
        if (item == array[i]) {
            return true;
        }
    }
    return false;
}
function getNewCalendarVar(containerId) {
    var result=new org_apache_myfaces_PopupCalendar();
    result.initData.imgDir = "/images/cal/";
    result.initData.monthName = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
    result.initData.dayName = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
    result.initData.startAt = 0;
    result.dateFormatSymbols.weekdays = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
    result.dateFormatSymbols.shortWeekdays = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
    result.dateFormatSymbols.shortMonths = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
    result.dateFormatSymbols.months = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
    result.dateFormatSymbols.eras = new Array("BC","AD");
    result.dateFormatSymbols.ampms = new Array("AM","PM");
    result.initData.todayString = "Today is";
    result.initData.todayDateFormat = "dd/MM/yyyy";
    result.initData.weekString = "WK";
    result.initData.popupLeft = false;
    result.init(document.getElementById(containerId));
    return result;
}
function plainText2Html(theString) {
   return theString.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
}
function moveUpArrayElement(theArray, index) {
    if (theArray != null && index > 0) {
        var itemTemp = theArray[index - 1];
        theArray[index - 1] = theArray[index];
        theArray[index] = itemTemp;
    }
}
function moveDownArrayElement(theArray, index) {
    if (theArray != null && index >= 0 && index < theArray.length - 1) {
        var itemTemp = theArray[index + 1];
        theArray[index + 1] = theArray[index];
        theArray[index] = itemTemp;
    }
}


//********************************* VALIDATION START **************************


var REQUIRED_MSG = 'Required';
var METHOD_RESULT_PASS = 'P';
var METHOD_RESULT_FAIL = 'F';
var SELECT_EMPTY_VALUE = '-1';
function validate(theForm) {
	// break out of script if browser doesn't understand how to get a form's elements
	if(!theForm.elements) {
		return false;
	}
	var formValid = true;
	var vr = null; // vr = validation result
	var inputs = theForm.elements;
	var knownElement = true;
	for (var i = 0; i < inputs.length; i++) {
		knownElement = true;
		switch (inputs[i].type) {
			case 'text': vr = validateTextField(inputs[i]); break;
			case 'select-one': vr = validateSelectOne(inputs[i]); break;
			case 'select-multiple': vr = validateSelectMultiple(inputs[i]); break;
			case 'checkbox': vr = validateCheckbox(inputs[i]); break;
			case 'radio': vr = validateRadio(inputs[i]); break;
			case 'textarea': vr = validateTextArea(inputs[i]); break;;
			case 'hidden': vr = validateHidden(inputs[i]); break;
			case 'file': vr = validateFile(inputs[i]); break;
			default : knownElement = false;
		}
		if (knownElement) {
			if (!processValidationResult(vr, inputs[i])) {
				formValid = false;
			}
		}
	}
	return formValid;
}
function processValidationResult(validationResult, theField) {
	var result = true;
	if (validationResult[0] == METHOD_RESULT_PASS) {
		resetFieldError(theField);
	} else {
		result = false;
		setFieldError(theField, validationResult[1]);
	}
	return result;
}



function validateRequiredSelectOneValue(value) {
	var result = new Array(METHOD_RESULT_PASS, null);
	if (isEmptySelectValue(value)) {
		result[0] = METHOD_RESULT_FAIL;
		result[1] = REQUIRED_MSG;
	}
	return result;
}
function validateEmail(emailStr) {
	if (emailStr.length < 3) {
		return false;
	}
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^(\d{1,3})[.](\d{1,3})[.](\d{1,3})[.](\d{1,3})$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom + ")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray == null) {
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	if (user.match(userPat) == null) {
		return false;
	}
	var IPArray = domain.match(ipDomainPat);
	if (IPArray != null) {
		for (var i = 1; i <= 4; i++) {
			if (IPArray[i] > 255) {
				return false;
			}
		}
		return true;
	}
	var domainArray=domain.match(domainPat);
	if (domainArray == null) {
		return false;
	}
	var atomPat=new RegExp(atom,"g");
	var domArr=domain.match(atomPat);
	var len=domArr.length;
	if ((domArr[domArr.length-1].length < 2) || (domArr[domArr.length-1].length > 63)) {
		return false;
	}
	if (len < 2) {
		return false;
	}
	return true;
}




function validateRequiredIntGreaterThanZeroTextFieldValue(value) {
	var result = validateRequiredTextFieldValue(value);
	if (result[0] != METHOD_RESULT_FAIL) {
		var intValue = parseInt(value);
		if (isNaN(intValue) || value < 1) {
			result[0] = METHOD_RESULT_FAIL;
			result[1] = "Value must be a whole number greater than zero.";
		}
	}
	return result;
}
function validateRequiredIntNotNegativeTextFieldValue(value) {
	var result = validateRequiredTextFieldValue(value);
	if (result[0] != METHOD_RESULT_FAIL) {
		var intValue = parseInt(value);
		if (isNaN(intValue) || value < 0) {
			result[0] = METHOD_RESULT_FAIL;
			result[1] = "Value must be a positive whole number.";
		}
	}
	return result;
}
function validateRequiredSignedFloatingPointNumberTextFieldValue(value) {
    var result = validateRequiredTextFieldValue(value);
    if (result[0] != METHOD_RESULT_FAIL) {
        if (!/^([-+]?[0-9]*\.?[0-9]+)$/.test(value)) {
            result[0] = METHOD_RESULT_FAIL;
            result[1] = "Value must be a valid number.";
        }
    }
    return result;
}
function validateRequiredSignedFloatingPointNumberNotNegativeTextFieldValue(value) {
    var result = validateRequiredTextFieldValue(value);
    if (result[0] != METHOD_RESULT_FAIL) {
        if (!/^([-+]?[0-9]*\.?[0-9]+)$/.test(value)) {
            result[0] = METHOD_RESULT_FAIL;
            result[1] = "Value must be a valid number.";
        } else {
            var floatValue = parseFloat(value);
            if (floatValue < 0) {
	            result[0] = METHOD_RESULT_FAIL;
	            result[1] = "Value must be a positive number.";
            }
        }
    }
    return result;
}


function validateRequiredTextFieldValue(value) {
	var result = new Array(METHOD_RESULT_PASS, null);
	if (isEmpty(value)) {
		result[0] = METHOD_RESULT_FAIL;
		result[1] = REQUIRED_MSG;
	}
	return result;
}
function isEmpty(value) {
	if (value == null || value == '') {
		return true;
	} else {
		return false;
	}
}
function isEmptySelectValue(value) {
	if (isEmpty(value) || value == SELECT_EMPTY_VALUE) {
		return true;
	} else {
		return false;
	}
}
function isEmptySelectMultipleValue(selectedValues) {
	if (selectedValues != null && selectedValues.length > 0) {
		for (var i = 0; i < selectedValues.length; i++) {
			if ((!isEmpty(selectedValues[i])) && value != SELECT_EMPTY_VALUE) {
				return false;
			}
		}
	}
	return true;
}
function setFieldError(field, msg) {
	var fieldMessageSpan = document.getElementById(field.name + '_m');
	if (fieldMessageSpan != null) {
        fieldMessageSpan.innerHTML = ' ' + msg;
    }
}
function resetFieldError(field) {
	var fieldMessageSpan = document.getElementById(field.name + '_m');
	if (fieldMessageSpan != null) {
        fieldMessageSpan.innerHTML = '';
    }
}

//********************************* VALIDATION END ****************************

