
/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function activeSubLevel(level1)
{
	var level1Parent;
	var level1Brother;
	var exists;

	if( level1 != null )
	{
		level1Parent = level1.parentNode;
		level1Brother = level1.nextSibling;
		exists = true;

		//Busca hermanos
		while(level1Brother!=null && exists==true)
		{
			if(level1Brother.nodeType == 1)
			{
				exists = false;
			}
			else{
				level1Brother = level1Brother.nextSibling;
			}
		}

		if(level1Parent.className == 'clsLIBodyOff')
		{
			level1Parent.className = 'clsLIBodyOn';
			createCookie(level1.id,'1',7);

			//valida que existan hermanos
			if(level1Brother != null)
			{
				//Muestra  u oculata los hijos
				if(level1Brother.className == 'clsULSubMenuOff')
				{
					level1Brother.className = 'clsULSubMenuOn';
				}
				else
				{
					level1Brother.className = 'clsULSubMenuOff';
				}
			}
		}
		else
		{
			if( level1Parent.className == 'clsLIBodyOn' )
			{
				level1Parent.className = 'clsLIBodyOff';
				createCookie(level1.id,'0',7);
				
			}

			//valida que existan hermanos
			if(level1Brother != null)
			{
				level1Brother.className = 'clsULSubMenuOff';
			}
		}
	}

}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function StarMenu(objDocument) {
	
	if(readCookie('a1')=='1'){
		activeSubLevel(document.getElementById('a1'));
	}
	if(readCookie('a2')=="1"){
		activeSubLevel(document.getElementById('a2'));
	}
	if(readCookie('a3')=="1"){
		activeSubLevel(document.getElementById('a3'));
	}
	if(readCookie('a4')=="1"){
		activeSubLevel(document.getElementById('a4'));
	}
	if(readCookie('a5')=="1"){
		activeSubLevel(document.getElementById('a5'));
	}
}
/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function eraseCookie(name) {
	createCookie(name,"",-1);
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function validarMail(campoEmail)
{
	if (IsMail(campoEmail)){
		return true;
	}
	else 
	{
		alert('Direccion electronica incorrecta');
		return false;
	}
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function generalSubmit( formName, targetName, methodName, actionPage, fieldList, valueList, separator )
{
	var formObject;
	var targetNameOld = new String();
	var methodNameOld = new String();
	var actionPageOld = new String();
	var fieldObject;
	var indexField = new Number();
	var fieldArray;
	var valueArray;

    //Evaluar el tipo de formulario a cargar
    if( Number( formName ) || formName == '0' )
    {
        formObject = document.forms[ formName ];
    }
    else
    {
        formObject = document[ formName ];
    }

	//Obtener el listado de datos en un array
	if( fieldList != '' )
	{
		fieldArray = fieldList.split( separator );
		valueArray = valueList.split( separator );
	}

	//Verifica que el formulario existe
	//Verifica que el numero de campoos
	if( formObject != null )
	{

		//Evalua que existan datos en los datos suministrados
		if( fieldList != '' )
		{
			indexField = 0;

			while( ( fieldObject = formObject[ fieldArray[ indexField ] ] ) != null )
			{
				//Valida que el numero de campos no exceda el 
				//el numero de valores
				if( indexField < valueArray.length )
				{
					fieldObject.value = valueArray[ indexField ];
				}

				indexField ++;
			}
		}

		//Obetener los datos anteriores del Form
		targetNameOld = formObject.target;
		methodNameOld = formObject.method;
		actionPageOld = formObject.action;

		//Asignacion de los nuevos valores
		formObject.target = targetName;
		formObject.method = methodName;
		formObject.action = actionPage;

		//Envio del formulario
		formObject.submit();

		//Asignacion de los valores anteriores
		formObject.target = targetNameOld;
		formObject.method = methodNameOld;
		formObject.action = actionPageOld;

	}
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function generalFill( formName, fieldList, valueList, separator )
{
	var formObject;
	var fieldObject;
	var indexField = new Number();
	var fieldArray;
	var valueArray;

    //Evaluar el tipo de formulario a cargar
    if( Number( formName ) || formName == '0' )
    {
        formObject = document.forms[ formName ];
    }
    else
    {
        formObject = document[ formName ];
    }

	//Obtener el listado de datos en un array
	if( fieldList != '' )
	{
		fieldArray = fieldList.split( separator );
		valueArray = valueList.split( separator );
	}

	//Verifica que el formulario existe
	//Verifica que el numero de campoos
	if( formObject != null )
	{

		//Evalua que existan datos en los datos suministrados
		if( fieldList != '' )
		{
			indexField = 0;

			while( ( fieldObject = formObject[ fieldArray[ indexField ] ] ) != null )
			{
				//Valida que el numero de campos no exceda el 
				//el numero de valores
				if( indexField < valueArray.length )
				{
					fieldObject.value = valueArray[ indexField ];
				}

				indexField ++;
			}
		}
	}
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function generalValidate( formName, fieldList, messageList, separator, showMessage )
{
	var formObject;
	var fieldObject;
	var indexField = new Number();
	var indexFieldOption = new Number();
	var fieldArray;
	var messageArray;
	var isFull = new Boolean();
	var isChecked = new Boolean();

    //Evaluar el tipo de formulario a cargar
    if( Number( formName ) || formName == '0' )
    {
        formObject = document.forms[ formName ];
    }
    else
    {
        formObject = document[ formName ];
    }

	isFull = true;

	//Obtener el listado de datos en un array
	if( fieldList != '' )
	{
		fieldArray = fieldList.split( separator );
		messageArray = messageList.split( separator );
	}

	//Verifica que el formulario existe
	//Verifica que el numero de campoos
	if( formObject != null )
	{
		//Evalua que existan datos en los datos suministrados
		if( fieldList != '' )
		{
			indexField = 0;
			isFull = true;

			while( ( fieldObject = formObject[ fieldArray[ indexField ] ] ) != null && isFull == true )
			{
				//Valida que el numero de campos no exceda el 
				//el numero de valores
				if( indexField < messageArray.length )
				{
					if( fieldObject.type != null 
						&& fieldObject.type.toUpperCase() == "TEXT" 
						&& fieldObject.value == '' )
					{
						if( showMessage == true )
						{
							alert( messageArray[ indexField ] );
							
						}
						fieldObject.focus();
						isFull = false;
						
					}
					else if( fieldObject.length != null )
					{
						indexFieldOption = 0;
						isChecked = false;

						while( fieldObject[ indexFieldOption ] != null && isChecked == false )
						{
							if( fieldObject[ indexFieldOption ].checked == true )
							{
								isChecked = true;
							}

							indexFieldOption ++;
						}

						if( isChecked == false )
						{
							if( showMessage == true )
							{
								alert( messageArray[ indexField ] );
								fieldObject[ 0 ].focus();
							}

							isFull = false;
						}
					}
				}

				indexField ++;
			}
		}
	}

	return( isFull );
}

/*-----------------------------------------------------------------------
* DESCRIPCION: generalValidate( formName, fieldList, separator )
*	Evalua si los valores del campo son vacios o cero
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function generalIsEmpty( formName, fieldList, separator )
{
	var formObject;
	var fieldObject;
	var indexField = new Number();
	var indexFieldOption = new Number();
	var fieldArray;
	var messageArray;
	var isFull = new Boolean();
	var isChecked = new Boolean();

    //Evaluar el tipo de formulario a cargar
    if( Number( formName ) || formName == '0' )
    {
        formObject = document.forms[ formName ];
    }
    else
    {
        formObject = document[ formName ];
    }

	isFull = true;

	//Obtener el listado de datos en un array
	if( fieldList != '' )
	{
		fieldArray = fieldList.split( separator );
	}

	//Verifica que el formulario existe
	//Verifica que el numero de campoos
	if( formObject != null )
	{
		//Evalua que existan datos en los datos suministrados
		if( fieldList != '' )
		{
			indexField = 0;
			isFull = true;

			while( ( fieldObject = formObject[ fieldArray[ indexField ] ] ) != null && isFull == true )
			{

				if( fieldObject.type != null 
					&& fieldObject.type.toUpperCase() == "TEXT" 
					&& ( fieldObject.value == '' || Number( fieldObject.value ) == 0 ) )
				{
					isFull = false;
				}

				indexField ++;
			}
		}
	}

	return( !(isFull) );
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function changeSubMenuOn( formName, fieldSelected, submenuObject, active )
{
	var formObject;
	var fieldObject;

    //Evaluar el tipo de formulario a cargar
    if( Number( formName ) || formName == '0' )
    {
        formObject = document.forms[ formName ];
    }
    else
    {
        formObject = document[ formName ];
    }

	//Verifica que el formulario existe
	//Verifica que el numero de campoos
	if( formObject != null 
	    && ( fieldObject = formObject[ fieldSelected ] ) != null )
	{
		if( fieldObject.value != submenuObject.name )
		{
		    if( active == true )
		    {
		        submenuObject.className = "clsAMenuOn";
		    }
		    else
		    {
		        submenuObject.className = "clsAMenuOff";
		    }
		}
	}
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function validateGeoreferenciacion( formName, fieldList, message, separator )
{
	var formObject;
	var fieldObject;
	var indexField = new Number();
	var fieldArray;
	var isChecked = new Boolean();

    //Evaluar el tipo de formulario a cargar
    if( Number( formName ) || formName == '0' )
    {
        formObject = document.forms[ formName ];
    }
    else
    {
        formObject = document[ formName ];
    }

	isFull = true;

	//Obtener el listado de datos en un array
	if( fieldList != '' )
	{
		fieldArray = fieldList.split( separator );
	}

	//Verifica que el formulario existe
	//Verifica que el numero de campoos
	if( formObject != null )
	{
		//Evalua que existan datos en los datos suministrados
		if( fieldList != '' )
		{
			indexField = 0;
			isChecked = false;

			while( ( fieldObject = formObject[ fieldArray[ indexField ] ] ) != null && isChecked == false )
			{
				//Valida que el numero de campos no exceda el 
				//el numero de valores
				if( fieldObject.type != null 
					&& fieldObject.type.toUpperCase() == "CHECKBOX" 
					&& fieldObject.checked == true )
				{
					isChecked = true;
					
				}

				indexField ++;
			}

			if( isChecked == false )
			{
				alert( message );
			}
		}
	}

	return( isChecked );
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function generalSum( formName, fieldList, totalField, separator )
{
	var formObject;
	var fieldObject;
	var totalObject;
	var indexField = new Number();
	var fieldArray;
	var sumatoria = new Number();

	//Evaluar el tipo de formulario a cargar
	if( Number( formName ) || formName == '0' )
	{
		formObject = document.forms[ formName ];
	}
	else
	{
		formObject = document[ formName ];
	}

	//Obtener el listado de datos en un array
	if( fieldList != '' )
	{
		fieldArray = fieldList.split( separator );
	}

	//Verifica que el formulario existe
	//Verifica que el numero de campoos
	if( formObject != null 
		&& ( totalObject = formObject[ totalField ] ) != null )
	{
		//Evalua que existan datos en los datos suministrados
		if( fieldList != '' )
		{
			//Inicializar variables
			indexField = 0;
			sumatoria = 0;
			while( ( fieldObject = formObject[ fieldArray[ indexField ] ] ) != null )
			{
				if( fieldObject.value != '' )
				{
					sumatoria = sumatoria + Number( fieldObject.value );
				}

				indexField ++;
			}

			totalObject.value = sumatoria;
		}
	}
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function extendSection( aObject )
{
	var index = new Number();
	var foundObject = new Boolean();
	var divObject = aObject.nextSibling;
	var imgObject = aObject.firstChild;

	//Iniciar
	foundObject = false;
	index = 0;

	//valida que exista el objeto
	//valida que salga el objeto si salga
	//valida que busque solo 5 objetos
	while( divObject != null && imgObject != null 
		&& foundObject == false && index < 5 )
	{
		if( divObject.nodeType == 1 
			&& divObject.nodeName.toUpperCase() == 'DIV' )
		{
			foundObject = true;
		}
		else
		{
			//Iterar sobre l siguiente objeto
			divObject = divObject.nextSibling;
		}

		index ++;
	}

	//Si encontro el objeto
	if( foundObject == true )
	{
		if(imgObject.nodeName.toUpperCase() == 'IMG'
			&& imgObject.src.indexOf( "imgPlus" ) >= 0 )
		{
			divObject.style.display = "none";
			imgObject.src = imgObject.src.replace( "imgPlus", "imgMinus" );
		}
		else if( imgObject.nodeName.toUpperCase() == 'IMG'
			&& imgObject.src.indexOf( "imgMinus" ) >= 0 )
		{
			divObject.style.display = "";
			imgObject.src = imgObject.src.replace( "imgMinus", "imgPlus" );
		}
	}
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function load_File_Ext(fieldFileName, folderName, enumExtension)
{
	strAppVersion = navigator.appVersion;

	if (strAppVersion.indexOf('MSIE') != -1 && strAppVersion.substr(strAppVersion.indexOf('MSIE')+5,1) > 4)
	{
		objFile = window.open("../../Modules/ADM/Upload/Upload_File.aspx?fieldFileName=" + fieldFileName + "&folderName=" + folderName + "&enumExtension=" + enumExtension,"upload","width=375,height=20,top=250, left=200, status=yes",false);
		
	}
	else
	{
		objFile = window.open("../../Modules/ADM/Upload/Upload_File.aspx?fieldFileName=" + fieldFileName + "&folderName=" + folderName + "&enumExtension=" + enumExtension,"upload","width=375,height=20, top=250, left=200", true);
	}
	
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: No se puede utilizar con el evento onchange
*-------------------------------------------------------------------- */
function ValidateFieldFileUpload( formName, fieldUpload )
{
	var formObject = document[ formName ], fieldObject;
	var isValid = new Boolean();
	var charList = new String();

	isValid = false;

	if( formObject != null && ( ( fieldObject = formObject[ fieldUpload ] ) != null ) )
	{

		if( ( charList = IsValidNameUploadFile ( fieldObject.value ) ) != "" )
		{
			alert('Por favor cambie el nombre del archivo, contiene los siguientes caracteres invalidos: ' + charList + '.');
		}
		else{
			isValid = true;
		}
	}

	return( isValid );
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: 
*-------------------------------------------------------------------- */
function IsValidNameUploadFile( address )
{
	var isValid = new Boolean();
	var patternAddress = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.\\_ ';
	var newaddress = new String();
	var indexPattern = new Number();
	var totalPattern = new Number();
	var currentChar = new String();

	isValid = false;

	if( address.lastIndexOf( "\\" ) >= 0 )
	{
		newaddress = address.substring( address.lastIndexOf( "\\" ) + 1 );
	}
	else
	{
		newaddress = address;
	}

	indexPattern = 0;
	totalPattern = patternAddress.length;

	while( indexPattern < totalPattern )
	{
		currentChar = patternAddress.substr( indexPattern, 1 );

		while( newaddress.indexOf( currentChar ) >= 0 )
		{
			newaddress = newaddress.replace( currentChar, '' );
		}

		indexPattern ++;
	}

	return( newaddress );
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: 
*-------------------------------------------------------------------- */
function validaForm()
{
	var enumExtension;

	enumExtension = document.MyForm.enumExtension.value;

	if (document.MyForm.FILE1.value != null && document.MyForm.FILE1.value.length >0 )
	{
		if (enumExtension.length>0)
		{
			if (document.MyForm.FILE1.value.toLowerCase().indexOf(enumExtension)<0)
			{
				alert("El archivo seleccionado no tiene la extension esperada (" + enumExtension + ").");		
				return;
			}
		}
		//calcula solamente el nombre del archivos
		var filename = document.MyForm.FILE1.value.substring(document.MyForm.FILE1.value.lastIndexOf("\\")+1,document.MyForm.FILE1.value.length);

		if (filename.length < 150)
		{
			ShowProgress();
			document.MyForm.submit();
		}
		else
		{
			alert("El nombre del archivo no debe superar los 150 caracteres.");
		}
		
	}
	else
	{
		alert('Debe seleccionar un archivo.');
	}
}

/*-----------------------------------------------------------------------
* DESCRIPCION: function( widget, intValue, decimalValue )
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: 
*-------------------------------------------------------------------- */
function ShowProgress()
{
	strAppVersion = navigator.appVersion;
	if (document.MyForm.FILE1.value != "" )
	{
		if (strAppVersion.indexOf('MSIE') != -1 && strAppVersion.substr(strAppVersion.indexOf('MSIE')+5,1) > 4)
		{
			winstyle = "dialogWidth=385px; dialogHeight:140px; center:yes";
			window.showModelessDialog('framebar.asp?to=10&PID=1000&b=IE',null,winstyle);
		}
		else
		{
			window.open('framebar.asp?to=10&PID=1000&b=NN','','width=375,height=115', true);
		}
	}
	return true;
}

/*-----------------------------------------------------------------------
* DESCRIPCION: Funcion que valida la opcion del Cargue de Archivo ddesde otra carpeta 
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: 
*-------------------------------------------------------------------- */
function load_File(fieldFileName, folderName, enumExtension)
{
	strAppVersion = navigator.appVersion;

	if (strAppVersion.indexOf('MSIE') != -1 && strAppVersion.substr(strAppVersion.indexOf('MSIE')+5,1) > 4)
	{
		objFile = window.open("../../ibiza/upload/Upload.aspx?fieldFileName=" + fieldFileName + "&folderName=" + folderName + "&enumExtension=" + enumExtension,"upload","width=375,height=20,top=250, left=200, status=yes",false);
		
	}
	else
	{
		objFile = window.open("../../ibiza/upload/Upload.aspx?fieldFileName=" + fieldFileName + "&folderName=" + folderName + "&enumExtension=" + enumExtension,"upload","width=375,height=20, top=250, left=200", true);
	}
	
}

/*-----------------------------------------------------------------------
* DESCRIPCION: Funcion que valida la opcion del Cargue de Archivo ddesde otra carpeta 
*	Parse String to Number
* PARAMETROS:
* RESULTADO:
* PRE:
* POST:
* OJO: 
*-------------------------------------------------------------------- */
function ValidateFormUpload()
{
	if (confirm('Confirma que desea iniciar el proceso de validacion de los archivos seleccionados?')==true){
		document.forms[0].typeAction.value='ACTUALIZAR';
		document.forms[0].submit();
	}
}
