/* JavaScript 1.2 functions file, loaded from appFlow
 * contains functions used by the system
 * Version 1.3 as of 15/01/2002
 *
 * @author Sergio Villarreal & Marco Marquez
 * Copyright EOS Technologhy 2002
 */

/*******************************************************************************************************
	sendRedirect (url [,decodedParams])
	Sends current window to the location desired. Mainly used to make any button act as href.
	Can receive another sequence to be escaped as second argument (in case there is the need to have
	part of the url encoded)
*******************************************************************************************************/
function sendRedirect(url) {
	var decodedParams = (sendRedirect.arguments.length == 1) ? "" : sendRedirect.arguments[1];
	window.open(url + escape(decodedParams), "_self");
}

function sendTargetRedirect(url, target) {
	var decodedParams = (sendTargetRedirect.arguments.length == 2) ? "" : sendTargetRedirect.arguments[2];
	window.open(url + escape(decodedParams), target);
}
/*******************************************************************************************************
	confirmDelete (url, decodedParams [,message])
	Displays an alert box asking the user to confirm a deletion.
	Can receive a message to be displayed as second argument. Otherwise, uses default message.
*******************************************************************************************************/
function confirmDelete(url, decodedParams) {
	var message = (confirmDelete.arguments.length == 2) ? 'Are you sure you want to delete this record?' : confirmDelete.arguments[2];
	if (confirm(message)) {
		sendRedirect(url, decodedParams);
	}
}

/*******************************************************************************************************
	validateSelected (message)
	validateAll(theForm)
	checkAll(theForm, checkboxName)
	Check all checkboxes in a form with a given name
*******************************************************************************************************/
function validateSelected(message) {
	if (validateAll(document.info) == 1)
		document.info.submit();
	else
		alert(message);
}
function checkAll(theForm, checkboxName) {
 			for (i=0, n = theForm.elements.length; i < n; i++) {
      		if (theForm.elements[i].name.indexOf(checkboxName) != -1) {
       		if (theForm.elements[i].checked == true) {
        		theForm.elements[i].checked = false;
			} else {
        		theForm.elements[i].checked = true;
			}
		}
	}
}
function validateAll(theForm) {
	var oneChecked = 0;
 			for (i=0, n = theForm.elements.length; i < n; i++)
     		if (theForm.elements[i].checked == true)
      		oneChecked = 1
	return oneChecked;
}
// Opens centered new Window with specified width and height
function NewWin(filename,winname, w, h){
    var xpos = (screen.width-w)/2;
    var ypos = (screen.height-h)/2;

    winOptions = "toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=" + w + ",height=" + h + ",top=" + ypos + ",left=" + xpos;
    window.open(filename,winname, winOptions);
}


function NewWindow(filename,winname, properties){
    var w = 800;
    var h = 600;
    var xpos = (screen.width-w)/2;
    var ypos = (screen.height-h)/2;
    if(properties =='null')
	properties = "toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,copyhistory=no,width=" + w + ",height=" + h + ",top=" + ypos + ",left=" + xpos;
    window.open(filename, winname, properties);
}


function lookupInfoWin(url, keyfield, winname) {
    if (document.info.elements[keyfield].value != "") {
        NewWin(url + "&target=self&itemkey=" + document.info.elements[keyfield].value, winname + document.info.elements[keyfield].value, 400, 300);
    }
}

function openParams(field, paramsField) {
	paramsField.value = "";
	NewWin("../servlet/ServletHandler?handler=com.eos.workflow.client.handler.BeanParams&wf_beankey=" + field.value + "&fieldName=" + field.name + "&paramName=" + paramsField.name, "effectParams", 350, 200);
}

function getField(form, name, otherName) {
    var field;
    if (typeof form.elements[name] == 'undefined') {
        field = eval('form.elements["' + otherName + '"]');
    } else {
        field = eval('form.elements["' + name + '"]');
    }
    return field;
}

function setValue(url, keyvalue, namevalue, documenttypekey, keyfield, description, filter, dockey){
    openLookupWin(url, keyvalue, namevalue, keyfield, description, documenttypekey, "", "", filter, "false", "", "", dockey);
}

function setValueAutomatic(url, keyvalue, namevalue, documenttypekey, keyfield, description, searchfield, searchtext, filter, dockey){
    var form = document.info;
    var searchTextField = getField(form, searchtext, "fn_" + dockey + "_" + searchtext);
    var nameValueField = getField(form, namevalue, "fn_" + dockey + "_" + namevalue);

    if (nameValueField.value != "") {
        openLookupWin(url, keyvalue, namevalue, keyfield, description, documenttypekey, "", "", filter, "true", searchfield, searchTextField.value, dockey);
    } else {
        var keyValueField = getField(form, keyvalue, "fn_" + dockey + "_" + keyvalue);
        eval('form.elements["' + keyValueField.name + '"].value=""');
    }
}

function setMasterValue(url, keyvalue, namevalue, documenttypekey, keyfield, description, master, mastervalue, masterCaption, filter, dockey){
    var form = document.info;
    var masterField = getField(form, master, "fn_" + dockey + "_" + master);
    var masterValueField = getField(form, mastervalue, "fn_" + dockey + "_" + mastervalue);

    if (masterField.value == "") {
        alert(masterCaption + " debe tener un valor");
    } else {
        openLookupWin(url, keyvalue, namevalue, keyfield, description, documenttypekey, master, masterValueField.value, filter, "false", "", "", dockey);
    }
}

function setMasterValueAutomatic(url, keyvalue, namevalue, documenttypekey, keyfield, description, master, mastervalue, masterCaption, searchfield, searchtext, filter, dockey){
    var form = document.info;
    var nameValueField = getField(form, namevalue, "fn_" + dockey + "_" + namevalue);
    var masterField = getField(form, master, "fn_" + dockey + "_" + master);
    var masterValueField = getField(form, mastervalue, "fn_" + dockey + "_" + mastervalue);
    var searchTextField = getField(form, searchtext, "fn_" + dockey + "_" + searchtext);

    if (masterField.value == "") {
        alert(masterCaption + " debe tener un valor");
    }
    if (nameValueField.value != "") {
        openLookupWin(url, keyvalue, namevalue, keyfield, description, documenttypekey, master, masterValueField.value, filter, "true", searchfield, searchTextField.value, dockey);
    } else {
        var keyValueField = getField(form, keyvalue, "fn_" + dockey + "_" + keyvalue);
        eval('form.elements["' + keyValueField.name + '"].value=""');
    }
}

function openLookupWin(url, keyvalue, namevalue, keyfield, description, documenttypekey, master, mastervalue, filter, search, searchfield, searchtext, dockey) {
	//"../servlet/ServletHandler?handler=com.eos.workflow.client.handler.GenericLookup"
	NewWin(url
		+ "&keyvalue=" + keyvalue
		+ "&namevalue=" + namevalue
		+ "&keyfield=" + keyfield
		+ "&description=" + description
		+ "&documenttypekey=" + documenttypekey
		+ "&master=" + master
		+ "&mastervalue=" + mastervalue
		+ "&filter=" + filter
		+ "&search=" + search
		+ "&searchfield=" + searchfield
		+ "&searchtext=" + searchtext
		+ "&dockey=" + dockey
	, "lookupwin" + dockey, 600, 600);
}

function cleanLookup(valueField) {
	valueField.value = "";
}

/*******************************************************************************************************
	isDependentOf (dependentField, parentField, [,message])
	Only works on checkboxes.
	When this function is called, it checks whether the parent Field is checked. If the dependent field
	is checked and the parentField is not, it alerts the user of the dependence and unchecks the dependentField
	The message can be customized and sent as an optional third argument.
*******************************************************************************************************/
function isDependentOf(dependentField, parentField) {

	var dependentFieldStatus = dependentField.checked;
	var parentFieldStatus = parentField.checked;

	if(dependentFieldStatus && !parentFieldStatus) {
		var message = (isDependentOf.arguments.length == 2) ? 'This field is dependent of the field: ' + parentField.name : isDependentOf.arguments[2];
		alert(message);
		dependentField.checked = false;
	}
}

/*******************************************************************************************************
	Disables dependentField when parentField has value parentFieldValue. Otherwise, enables it.
*******************************************************************************************************/
function disableOnValue(parentField, parentFieldValue, dependentField) {
	// returns false in case the dependentField is not defined
	if (typeof eval('parentField.form.elements["'+dependentField+'"]') == 'undefined') {
		return false;
	}
	if (parentField.options[parentField.selectedIndex].text == parentFieldValue) {
		eval('parentField.form.elements["'+dependentField+'"].disabled = true');
	} else {
		eval('parentField.form.elements["'+dependentField+'"].disabled = false');
	}
}

// Utility function to trim spaces from both ends of a string
// from webMonkey
function Trim(inString) {
  var retVal = "";
  var start = 0;
  while ((start < inString.length) && (inString.charAt(start) == ' ')) {
    ++start;
  }
  var end = inString.length;
  while ((end > 0) && (inString.charAt(end - 1) == ' ')) {
    --end;
  }
  retVal = inString.substring(start, end);
  return retVal;
}

/*******************************************************************************************************
	Disables dependentField when one or all of parentFields has value parentFieldValue. Otherwise, enables it.
	parentFields can be of type select, text or checkbox. When parentfield is a select input type, the value
	that is checked for is the one displayed in the option, not the actual option value sent (so for configuration
	purposes the value that shows up visible on the select is the one to check against)

	isDependentOfFields(this.form,'DEPENDENTFIELDNAME',['PARENTFIELD1','PARENTFIELD2'],[1,'ParentField2Value']);

	where the value for a select or text field is between '' and the value for a checkbox is 1 or 0 by itself
	(as shown by PARENTFIELD1)
*******************************************************************************************************/
function isDependentOfFields(form, dependentField, parentFields, parentFieldsValues) {
	// If a value was not provided for a parentField return
	if (parentFields.length != parentFieldsValues.length) return false;

	// In case the dependentField is not defined return
	dependentField = eval('form.elements["'+dependentField+'"]');
	if (typeof dependentField == 'undefined') return false;

	var parentField, parentFieldType, parentFieldValue;
	var disableFlag = false;

	for (foo = 0; foo < parentFields.length; foo++) {
		// In case a parentField is not defined return
		parentField = eval('form.elements["'+parentFields[foo]+'"]');
		if (typeof parentField == 'undefined') return false;

		parentFieldType = parentField.tagName;

		if (parentFieldType.toLowerCase() == "select") {
			parentFieldValue = parentField.options[parentField.selectedIndex].text;
		}
		if (parentFieldType.toLowerCase() == "input") {
			if (parentField.type.toLowerCase() == "checkbox") {
				parentFieldValue = (parentField.checked == false) ? 0 : 1;
			} else if (parentField.type.toLowerCase() == "text") {
				parentFieldValue = parentField.value;
			}
		}

		if (parentFieldValue == parentFieldsValues[foo]) {
			disableFlag = true;
		}
	}

	if (disableFlag) {
		dependentField.disabled = true;
	} else {
		dependentField.disabled = false;
	}
}

/*******************************************************************************************************
	Enables one of the dependent Fields (dependentFieldsList) when the parentField has the value
	assigned to that particular dependent Field (corresponds to it in parentFieldValues). The parentField
	can be of type text, select or checkbox. When parentfield is a select input type, the value
	that is checked for is the one displayed in the option, not the actual option value sent (so for
	configuration purposes the value that shows up visible on the select is the one to check against)

	Sample call:
		onBlur="enableFieldOnValue(this.form,'address',['city','state'],['eos','other'])"
*******************************************************************************************************/
function enableFieldOnValue(form, parentField, dependentFieldsList, parentFieldValues) {

	// If the number of values for the parentField is different from the number of dependentFields sent, return
	if (dependentFieldsList.length != parentFieldValues.length) return false;

	// In case the dependentField is not defined return
	parentField = eval('form.elements["'+parentField+'"]');
	if (typeof parentField == 'undefined') return false;

	var parentFieldType, parentFieldValue;
	var fieldToBeEnabled = -1;

	for (foo = 0; foo < parentFieldValues.length; foo++) {
		parentFieldType = parentField.tagName;

		if (parentFieldType.toLowerCase() == "select") {
			parentFieldValue = parentField.options[parentField.selectedIndex].text;
		}
		if (parentFieldType.toLowerCase() == "input") {
			if (parentField.type.toLowerCase() == "checkbox") {
				parentFieldValue = (parentField.checked == false) ? 0 : 1;
			} else if (parentField.type.toLowerCase() == "text") {
				parentFieldValue = parentField.value;
			}
		}
		if (parentFieldValue == parentFieldValues[foo]) {
			fieldToBeEnabled = foo;
		}
	}

	// Go through the DependentFields List and set the designated one to enabled. All others get set to disabled
	for (bar = 0; bar < dependentFieldsList.length; bar++) {
		currentDependentField = eval('form.elements["'+dependentFieldsList[bar]+'"]');
		if (typeof currentDependentField == 'undefined') return false;

		currentDependentField.disabled = (bar != fieldToBeEnabled) ? true : false;
	}
}


function disableOnValue(parentField, parentFieldValue, dependentField) {
	// returns false in case the dependentField is not defined
	if (typeof eval('parentField.form.elements["'+dependentField+'"]') == 'undefined') {
		return false;
	}
	if (parentField.options[parentField.selectedIndex].text == parentFieldValue) {
		eval('parentField.form.elements["'+dependentField+'"].disabled = true');
	} else {
		eval('parentField.form.elements["'+dependentField+'"].disabled = false');
	}
}

/*******************************************************************************************************
	fieldsHandler (field, fieldsToDisable [,fieldsToEnable])
	Sets all the fields in "fieldsToDisable" to disabled when the "field" field is checked, and all
	those in "fieldsToEnable" to enabled. And viceversa when it is unchecked. The function can also
	work with a "select" html input type instead of a "checkbox". Assumes values of
	0 == false and 1 == true for selects. And with an input of type text, it assumes
	[hasValue] == true and [isEmpty] == false.
*******************************************************************************************************/
function fieldsHandler(field, fieldsToDisable) {

	var fieldType = field.tagName;
	// Identifies the type of field from which the function was called (Select/Checkbox)

	var fieldStatus;

	if (fieldType.toLowerCase() == "select") {
		fieldStatus = (field.value == 0) ? false : true;
	}
	if (fieldType.toLowerCase() == "input") {
		if (field.type.toLowerCase() == "checkbox") {
			fieldStatus = field.checked;
		} else if (field.type.toLowerCase() == "text") {
			fieldStatus = (Trim(field.value) == "") ? false : true;
		}
	}

	//var fieldStatus = (fieldType == "SELECT") ? ((field.value == 0) ? false : true) : field.checked;

	// If the function received an array of fields to be enabled, it is initialized
	var fieldsToEnable = (fieldsHandler.arguments.length == 2) ? null : fieldsHandler.arguments[2];

	if(fieldStatus) {
		for (foo = 0; foo < fieldsToDisable.length; foo++) {
			eval('field.form.elements["'+fieldsToDisable[foo].name+'"].disabled = true');
		}
		if (fieldsToEnable != null) {
			for (foo = 0; foo < fieldsToEnable.length; foo++) {
				eval('field.form.elements["'+fieldsToEnable[foo].name+'"].disabled = false');
			}
		}
	} else {
		for (foo = 0; foo < fieldsToDisable.length; foo++) {
			eval('field.form.elements["'+fieldsToDisable[foo].name+'"].disabled = false');
		}
		if (fieldsToEnable != null) {
			for (foo = 0; foo < fieldsToEnable.length; foo++) {
				eval('field.form.elements["'+fieldsToEnable[foo].name+'"].disabled = true');
			}
		}
	}
}
/**********************functions to do login***********************************************************************************************/

function storeDataMain(){
      var username=getValuesMain("username");
      var pass=getValuesMain("password");
      var goAhead=validateCharsMain(username);
      if(goAhead==true)
        goAhead=validateCharsMain(pass);
      return goAhead;

}
function validateCharsMain(txt){
//
     if(txt.indexOf(';')>-1){
        alert("Usuario no valido");
        return false;
     }else if(txt.indexOf('--')>-1){
        alert("Usuario no valido");
        return false;
     }else if(txt.indexOf('=')>-1){
        alert("Usuario no valido");
        return false;
     }else if(txt.indexOf(' ')>-1){
        alert("Usuario no valido");
        return false;
     }else if(txt=='' ){
        alert("Usuario no valido");
        return false;
     }
     return true;

}


function getValuesMain(field){
      return document.info.elements[field].value;
}
function doSubmitForLoginMain(){
     var goAhead=storeDataMain();
     if(goAhead==true)
     document.info.submit();
}

function entersubmitMain(event) {
  if (event == 13)
    doSubmitForLoginMain();
  else
    return true;
}
