/*
Derechos Reservados Ministerio El Corazon del Padre 2008
Script:			general.js
Descripcion:	Funciones generales
Autor:			Reynel Giraldo B.
Fecha:			Febrero de 2008
*/

//window.history.forward(1);

//resizeTo(1000, 768);
var xdeeditorBasePath="rte/"; 
var progreso="";
var sVentana = "";
var defaultEmptyOK = false
var checkNiceness = true;
var digits = "0123456789"; 
var digitsID = "0123456789-"; 
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyzáéíóúñü"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ"
var whitespace = " \t\n\r"; 
var phoneChars = "()-+";  
var mMessage = "Error: no puede dejar este espacio vacio"
var pPrompt = "Error: ";  
var pAlphanumeric = "Por favor ingrese un texto que contenga solo letras y/o numeros"; 
var pAlphabetic   = "Por favor ingrese un texto que contenga solo letras"; 
var pInteger = "Por favor ingrese un numero entero"; 
var pNumber = "Por favor ingrese un numero"; 
var pPhoneNumber = "Por favor ingrese un número de teléfono"; 
var pEmail = "Por favor ingrese una dirección de correo electrónico válida"; 
var pName = "Por favor ingrese un texto que contenga solo letras, numeros o espacios"; 
var pNice = "No puede utilizar comillas aqui"; 
// Check browser version
var isNav4 = false, isNav5 = false, isIE4 = false


var strSeperator = "/";  
// If you are using any Java validation on the back side you will want to use the / because 
// Java date validations do not recognize the dash as a valid date separator.
var vDateType = 1; // Global value for type of date format
//                1 = mm/dd/yyyy
//                2 = yyyy/dd/mm  (Unable to do date check at this time)
//                3 = dd/mm/yyyy
var vDateTypeFormat=""; 
switch (vDateType)
{ case 1: vDateTypeFormat="mm/dd/yyyy"; 
	break;
case 2: vDateTypeFormat="yyyy/dd/mm"; 
	break;
case 3: vDateTypeFormat="dd/mm/yyyy"; 
	break;
}
var vYearType = 4; //Set to 2 or 4 for number of digits in the year for Netscape
var vYearLength = 2; // Set to 4 if you want to force the user to enter 4 digits for the year before validating.
var err = 0; // Set the error code to a default of zero
if(navigator.appName == "Netscape") {
	if (navigator.appVersion < "5") {
		isNav4 = true;
		isNav5 = false;
	}
	else
	if (navigator.appVersion > "4") {
		isNav4 = false;
		isNav5 = true;
	}
}
else {
	isIE4 = true;
}

function DateFormat(vDateName, vDateValue, e, dateCheck, dateType) {
	return DateFormat(vDateName, vDateValue, e, dateCheck, dateType, true);
}


function DateFormat(vDateName, vDateValue, e, dateCheck, dateType, bMsg) {
	vDateType = dateType;
	sMsgAlert = "Fecha Inválida. Por favor vuelva a \ningresar la fecha con el formato ";
	// vDateName = object name
	// vDateValue = value in the field being checked
	// e = event
	// dateCheck 
	// True  = Verify that the vDateValue is a valid date
	// False = Format values being entered into vDateValue only
	// vDateType
	// 1 = mm/dd/yyyy
	// 2 = yyyy/mm/dd
	// 3 = dd/mm/yyyy
	//Enter a tilde sign for the first number and you can check the variable information.
	if(bMsg==true)
	{
		if (vDateValue == "~") {
			alert("AppVersion = "+navigator.appVersion+" \nNav. 4 Version = "+isNav4+" \nNav. 5 Version = "+isNav5+" \nIE Version = "+isIE4+" \nYear Type = "+vYearType+" \nDate Type = "+vDateType+" \nSeparator = "+strSeperator);
			vDateName.value = ""; 
			vDateName.focus();
			return true;
		}
	}

	var whichCode = (window.Event) ? e.which : e.keyCode;
	// Check to see if a seperator is already present.
	// bypass the date if a seperator is present and the length greater than 8
	if (vDateValue.length > 8 && isNav4) {
		if ((vDateValue.indexOf("-") >= 1) || (vDateValue.indexOf("/") >= 1))
		return true;
	}
	//Eliminate all the ASCII codes that are not valid
	var alphaCheck = " abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/-"; 
	if (alphaCheck.indexOf(vDateValue) >= 1) {
		if (isNav4) {
			vDateName.value = ""; 
			vDateName.focus();
			vDateName.select();

			return false;
		}
		else {
			//vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
			return false;
		}
	}
	if (whichCode == 8) //Ignore the Netscape value for backspace. IE has no value
	return false;
	else {
		//Create numeric string values for 0123456789/
		//The codes provided include both keyboard and keypad values
		var strCheck = '47,48,49,50,51,52,53,54,55,56,57,58,59,95,96,97,98,99,100,101,102,103,104,105';
		if (strCheck.indexOf(whichCode) != -1) {
			if (isNav4) {
				if (((vDateValue.length < 6 && dateCheck) || (vDateValue.length == 7 && dateCheck)) && (vDateValue.length >=1)) {
					if(bMsg==true)
						alert(sMsgAlert  + vDateTypeFormat);
					vDateName.value = ""; 
					vDateName.focus();
					vDateName.select();
					return false;
				}
				if (vDateValue.length == 6 && dateCheck) {
					var mDay = vDateName.value.substr(2,2);
					var mMonth = vDateName.value.substr(0,2);
					var mYear = vDateName.value.substr(4,4)
					//Turn a two digit year into a 4 digit year
					if (mYear.length == 2 && vYearType == 4) {
						var mToday = new Date();
						//If the year is greater than 30 years from now use 19, otherwise use 20
						var checkYear = mToday.getFullYear() + 30; 
						var mCheckYear = '20' + mYear;
						if (mCheckYear >= checkYear)
						mYear = '19' + mYear;
						else
						mYear = '20' + mYear;
					}
					var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
					if (!dateValid(vDateValueCheck)) {
						if(bMsg==true)
							alert(sMsgAlert  + vDateTypeFormat);
						vDateName.value = ""; 
						vDateName.focus();
						vDateName.select();
						return false;
					}
					return true;
				}
				else {
					// Reformat the date for validation and set date type to a 1
					if (vDateValue.length >= 8  && dateCheck) {
						if (vDateType == 1) // mmddyyyy
						{
							var mMonth = vDateName.value.substr(0,2);
							var mDay = vDateName.value.substr(2,2);
							var mYear = vDateName.value.substr(4,4)
							vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
						}
						if (vDateType == 2) // yyyymmdd
						{
							var mYear = vDateName.value.substr(0,4)
							var mMonth = vDateName.value.substr(4,2);
							var mDay = vDateName.value.substr(6,2);
							vDateName.value = mYear+strSeperator+mMonth+strSeperator+mDay;
						}
						if (vDateType == 3) // ddmmyyyy
						{
							var mDay = vDateName.value.substr(0,2);
							var mMonth = vDateName.value.substr(2,2);
							var mYear = vDateName.value.substr(4,4)
							vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
						}
						//Create a temporary variable for storing the DateType and change
						//the DateType to a 1 for validation.
						var vDateTypeTemp = vDateType;
						vDateType = 1;
						var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
						if (!dateValid(vDateValueCheck)) {
							if(bMsg==true)
								alert(sMsgAlert  + vDateTypeFormat);
							vDateType = vDateTypeTemp;
							vDateName.value = ""; 
							vDateName.focus();
							vDateName.select();
							return false;
						}
						vDateType = vDateTypeTemp;
						return true;
					}
					else {
						if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
							if(bMsg==true)
								alert(sMsgAlert  + vDateTypeFormat);
							vDateName.value = ""; 
							vDateName.focus();
							vDateName.select();
							return false;
						}
					}
				}
			}
			else {
				// Non isNav Check
				if (((vDateValue.length < 8 && dateCheck) || (vDateValue.length == 9 && dateCheck)) && (vDateValue.length >=1)) {
					if(bMsg==true)
						alert(sMsgAlert  + vDateTypeFormat);
					vDateName.value = ""; 
					vDateName.focus();
					return true;
				}
				// Reformat date to format that can be validated. mm/dd/yyyy
				if (vDateValue.length >= 8 && dateCheck) {
					// Additional date formats can be entered here and parsed out to
					// a valid date format that the validation routine will recognize.
					if (vDateType == 1) // mm/dd/yyyy
					{
						var mMonth = vDateName.value.substr(0,2);
						var mDay = vDateName.value.substr(3,2);
						var mYear = vDateName.value.substr(6,4)
					}
					if (vDateType == 2) // yyyy/mm/dd
					{
						var mYear = vDateName.value.substr(0,4)
						var mMonth = vDateName.value.substr(5,2);
						var mDay = vDateName.value.substr(8,2);
					}
					if (vDateType == 3) // dd/mm/yyyy
					{
						var mDay = vDateName.value.substr(0,2);
						var mMonth = vDateName.value.substr(3,2);
						var mYear = vDateName.value.substr(6,4)
					}
					if (vYearLength == 4) {
						if (mYear.length < 4) {
							if(bMsg==true)
								alert(sMsgAlert + vDateTypeFormat);
							vDateName.value = ""; 
							vDateName.focus();
							return true;
						}
					}
					// Create temp. variable for storing the current vDateType
					var vDateTypeTemp = vDateType;
					// Change vDateType to a 1 for standard date format for validation
					// Type will be changed back when validation is completed.
					vDateType = 1;
					// Store reformatted date to new variable for validation.
					var vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
					if (mYear.length == 2 && vYearType == 4 && dateCheck) {
						//Turn a two digit year into a 4 digit year
						var mToday = new Date();
						//If the year is greater than 30 years from now use 19, otherwise use 20
						var checkYear = mToday.getFullYear() + 30; 
						var mCheckYear = '20' + mYear;
						if (mCheckYear >= checkYear)
						mYear = '19' + mYear;
						else
						mYear = '20' + mYear;
						vDateValueCheck = mMonth+strSeperator+mDay+strSeperator+mYear;
						// Store the new value back to the field.  This function will
						// not work with date type of 2 since the year is entered first.
						if (vDateTypeTemp == 1) // mm/dd/yyyy
						vDateName.value = mMonth+strSeperator+mDay+strSeperator+mYear;
						if (vDateTypeTemp == 3) // dd/mm/yyyy
						vDateName.value = mDay+strSeperator+mMonth+strSeperator+mYear;
					} 
					if (!dateValid(vDateValueCheck)) {
						if(bMsg==true)
							alert(sMsgAlert  + vDateTypeFormat);
						vDateType = vDateTypeTemp;
						vDateName.value = ""; 
						vDateName.focus();
						return true;
					}
					vDateType = vDateTypeTemp;
					return true;
				}
				else {
					if (vDateType == 1) {
						if (vDateValue.length == 2) {
							vDateName.value = vDateValue+strSeperator;
						}
						if (vDateValue.length == 5) {
							vDateName.value = vDateValue+strSeperator;
						}
					}
					if (vDateType == 2) {
						if (vDateValue.length == 4) {
							vDateName.value = vDateValue+strSeperator;
						}
						if (vDateValue.length == 7) {
							vDateName.value = vDateValue+strSeperator;
						}
					} 
					if (vDateType == 3) {
						if (vDateValue.length == 2) {
							vDateName.value = vDateValue+strSeperator;
						}
						if (vDateValue.length == 5) {
							vDateName.value = vDateValue+strSeperator;
						}
					}
					return true;
				}
			}
			if (vDateValue.length == 10&& dateCheck) {
				if (!dateValid(vDateName)) {
					// Un-comment the next line of code for debugging the dateValid() function error messages
					//alert(err);  
					if(bMsg==true)
					{
						if(err==9)
							alert("Fecha Inválida.");
						else
							alert(sMsgAlert  + vDateTypeFormat);
					}
					vDateName.focus();
					vDateName.select();
				}
			}
			return false;
		}
		else {
			// If the value is not in the string return the string minus the last
			// key entered.
			if (isNav4) {
				vDateName.value = "";
				vDateName.focus();
				vDateName.select();
				return false;
			}
			else
			{
				//vDateName.value = vDateName.value.substr(0, (vDateValue.length-1));
				return false;
			}
		}
	}
}
function dateValid(objName) {
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var booFound = false;
	var datefield = objName;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array(12);
	strMonthArray[0] = "Jan"; 
	strMonthArray[1] = "Feb"; 
	strMonthArray[2] = "Mar"; 
	strMonthArray[3] = "Apr"; 
	strMonthArray[4] = "May"; 
	strMonthArray[5] = "Jun"; 
	strMonthArray[6] = "Jul"; 
	strMonthArray[7] = "Aug"; 
	strMonthArray[8] = "Sep"; 
	strMonthArray[9] = "Oct"; 
	strMonthArray[10] = "Nov"; 
	strMonthArray[11] = "Dec"; 
	//strDate = datefield.value;
	strDate = objName;
	if (strDate.length < 1) {
		return true;
	}
	for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
		if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
			strDateArray = strDate.split(strSeparatorArray[intElementNr]);
			if (strDateArray.length != 3) {
				err = 1;
				return false;
			}
			else {
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
			}
			booFound = true;
		}
	}
	if (booFound == false) {
		if (strDate.length>5) {
			strDay = strDate.substr(0, 2);
			strMonth = strDate.substr(2, 2);
			strYear = strDate.substr(4);
		}
	}
	//Adjustment for short years entered
	if (strYear.length == 2) {
		strYear = '20' + strYear;
	}
	strTemp = strDay;
	strDay = strMonth;
	strMonth = strTemp;
	intday = parseInt(strDay, 10);
	if (isNaN(intday)) {
		err = 2;
		return false;
	}
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) {
		for (i = 0;i<12;i++) {
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
				intMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;
			}
		}
		if (isNaN(intMonth)) {
			err = 3;
			return false;
		}
	}
	intYear = parseInt(strYear, 10);
	if (isNaN(intYear)) {
		err = 4;
		return false;
	}
	if (intMonth>12 || intMonth<1) {
		err = 5;
		return false;
	}
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
		err = 6;
		return false;
	}
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
		err = 7;
		return false;
	}
	if (intMonth == 2) {
		if (intday < 1) {
			err = 8;
			return false;
		}
		if (LeapYear(intYear) == true) {
			if (intday > 29) {
				err = 9;
				return false;
			}
		}
		else {
			if (intday > 28) {
				err = 10;
				return false;
			}
		}
	}
	return true;
}
function LeapYear(intYear) {
	if (intYear % 100 == 0) {
		if (intYear % 400 == 0) { return true; }
	}
	else {
		if ((intYear % 4) == 0) { return true; }
	}
	return false;
}

function makeArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 0
	} 
	return this
}

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isWhitespace (s)
{   var i;
	if (isEmpty(s)) return true;
	for (i = 0; i < s.length; i++)
	{   
		var c = s.charAt(i);
		// si el caracter en que estoy no aparece en whitespace,
		// entonces retornar falso
		if (whitespace.indexOf(c) == -1) return false;
	}
	return true;
}


function stripCharsInBag (s, bag)
{   var i;
	var returnString = ""; 

	// Buscar por el string, si el caracter no esta en "bag", 
	// agregarlo a returnString
	
	for (i = 0; i < s.length; i++)
	{   var c = s.charAt(i);
		if (bag.indexOf(c) == -1) returnString += c;
	}

	return returnString;
}


function stripCharsNotInBag (s, bag)
{   var i;
	var returnString = ""; 
	for (i = 0; i < s.length; i++)
	{   
		var c = s.charAt(i);
		if (bag.indexOf(c) != -1) returnString += c;
	}

	return returnString;
}


function stripWhitespace (s)
{   return stripCharsInBag (s, whitespace)
}

function charInString (c, s)
{   for (i = 0; i < s.length; i++)
	{   if (s.charAt(i) == c) return true;
	}
	return false
}

function stripInitialWhitespace (s)
{   var i = 0;
	while ((i < s.length) && charInString (s.charAt(i), whitespace))
	i++;
	return s.substring (i, s.length);
}

function isLetter (c)
{
	return( ( uppercaseLetters.indexOf( c ) != -1 ) ||
	( lowercaseLetters.indexOf( c ) != -1 ) )
}

function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

function isLetterOrDigit (c)
{   return (isLetter(c) || isDigit(c))
}

function isInteger (s)
{   var i;
	if (isEmpty(s)) 
	if (isInteger.arguments.length == 1) return defaultEmptyOK;
	else return (isInteger.arguments[1] == true);
	
	for (i = 0; i < s.length; i++)
	{   
		var c = s.charAt(i);
		if( i != 0 ) {
			if (!isDigit(c)) return false;
		} else { 
			if (!isDigit(c) && (c != "-") || (c == "+")) return false;
		}
	}
	return true;
}

function esPositivoMayorQueCero(obj)
{
	if(!isNumber(obj.value) || obj.value <=0)
	{
		msgBox("Por favor ingrese valores válidos", 48, "Validación", 0, 0);
		obj.focus();
		return false;
	}
	return true;
}

function esPositivo(obj)
{
	if(!isNumber(obj.value) || obj.value <0)
	{
		msgBox("Por favor ingrese valores válidos", 48, "Validación", 0, 0);
		obj.focus();
		return false;
	}
	return true;
}

function isNumber (s)
{   var i;
	var dotAppeared;
	dotAppeared = false;
	if (isEmpty(s)) 
	if (isNumber.arguments.length == 1) return defaultEmptyOK;
	else return (isNumber.arguments[1] == true);
	
	for (i = 0; i < s.length; i++)
	{   
		var c = s.charAt(i);
		if( i != 0 ) {
			if ( c == "." ) {
				if( !dotAppeared )
				dotAppeared = true;
				else
				return false;
			} else     
			if (!isDigit(c)) return false;
		} else { 
			if ( c == "." ) {
				if( !dotAppeared )
				dotAppeared = true;
				else
				return false;
			} else     
			if (!isDigit(c) && (c != "-") || (c == "+")) return false;
		}
	}
	return true;
}

function isAlphabetic (s)
{   var i;

	if (isEmpty(s)) 
	if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
	else return (isAlphabetic.arguments[1] == true);
	for (i = 0; i < s.length; i++)
	{   
		// Check that current character is letter.
		var c = s.charAt(i);

		if (!isLetter(c))
		return false;
	}
	return true;
}

function isAlphanumeric (s)
{   var i;

	if (isEmpty(s)) 
	if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
	else return (isAlphanumeric.arguments[1] == true);

	for (i = 0; i < s.length; i++)
	{   
		var c = s.charAt(i);
		if (! (isLetter(c) || isDigit(c) ) )
		return false;
	}

	return true;
}


function isName (s)
{
	if (isEmpty(s)) 
	if (isName.arguments.length == 1) return defaultEmptyOK;
	else return (isAlphanumeric.arguments[1] == true);
	
	return( isAlphanumeric( stripCharsInBag( s, whitespace ) ) );
}

function isPhoneNumber (s)
{   var modString;
	if (isEmpty(s)) 
	if (isPhoneNumber.arguments.length == 1) return defaultEmptyOK;
	else return (isPhoneNumber.arguments[1] == true);
	modString = stripCharsInBag( s, phoneChars );
	return (isInteger(modString))
}


function esASCII(sStr)
{
	strValido = "*-}¿'!%&/()=?¡]¨*[;:{}\$";
	for(iPos=1; iPos< sStr.length; iPos++)
	{ if(strValido.indexOf(sStr.charAt(iPos))!=-1)
		{return false;}
	}
	return true;
}


function isEmail (s)
{
	if (isEmpty(s)) 
	if (isEmail.arguments.length == 1) 
	return defaultEmptyOK;
	else 
	return (isEmail.arguments[1] == true);
	
	if (isWhitespace(s)) 
	return false;

	if(s.indexOf(" ")!= -1 || 
			s.indexOf("..") != -1 ||
			s.indexOf(",")!= -1 || 
			(!esASCII(s) ) || 
			(!esASCII(s.charAt(0))))
	return false;
	
	var i = 1;
	var sLength = s.length;
	while ((i < sLength) && (s.charAt(i) != "@"))
	{ i++; }

	if ((i >= sLength) || (s.charAt(i) != "@")) 
	return false;
	else 
	i += 2;

	while ((i < sLength) && (s.charAt(i) != "."))
	{ i++; }

	if ((i >= sLength - 1) || (s.charAt(i) != ".")) 
	return false;
	else 
	return true;
}

function isNice(s)
{
	var i = 1;
	var sLength = s.length;
	var b = 1;
	while(i<sLength) {
		if( (s.charAt(i) == '\"') || (s.charAt(i) == "'" ) ) b = 0;
		i++;
	}
	return b;
}


function warnEmpty (theField)
{   theField.focus()
	alert(mMessage)
	statBar(mMessage)
	return false
}

function warnInvalid (theField, s)
{   theField.focus()
	theField.select()
	alert(s)
	statBar(pPrompt + s)
	return false
}


function checkField (theField, theFunction, emptyOK, s)
{   
	var msg;
	if (checkField.arguments.length < 3) emptyOK = defaultEmptyOK;
	if (checkField.arguments.length == 4) {
		msg = s;
	} else {
		if( theFunction == isAlphabetic ) msg = pAlphabetic;
		if( theFunction == isAlphanumeric ) msg = pAlphanumeric;
		if( theFunction == isInteger ) msg = pInteger;
		if( theFunction == isNumber ) msg = pNumber;
		if( theFunction == isEmail ) msg = pEmail;
		if( theFunction == isPhoneNumber ) msg = pPhoneNumber;
		if( theFunction == isName ) msg = pName;
	}
	
	if ((emptyOK == true) && (isEmpty(theField.value))) return true;

	if ((emptyOK == false) && (isEmpty(theField.value))) 
	return warnEmpty(theField);

	if ( checkNiceness && !isNice(theField.value))
	return warnInvalid(theField, pNice);

	if (theFunction(theField.value) == true) 
	return true;
	else
	return warnInvalid(theField,msg);

}

function findStr(sStr1, sStr2)
{
	sVec=sStr1.split(sStr2);
	if(sVec.length>1)
	return true;
	
	return false;
}

function validarSQL(sSQL)
{
	if(findStr(sSQL.toUpperCase(), "DELETE") || 
			findStr(sSQL.toUpperCase(), "DROP") ||
			findStr(sSQL.toUpperCase(), "CREATE") || 
			findStr(sSQL.toUpperCase(), "ALTER") || 
			findStr(sSQL.toUpperCase(), "UPDATE") ||
			findStr(sSQL.toUpperCase(), "INSERT") )
	{ return false;}
	else
	{ return true;}

}

function isNumeric(checkStr)
{
	var checkOK = digits; 
	var allValid = true; 
	for (i = 0; i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i); 
		for (j = 0; j < checkOK.length; j++)
		if (ch == checkOK.charAt(j))
		break;
		if (j == checkOK.length)
		{ 
			allValid = false; 
			break; 
		}
	}
	if (!allValid)
	{ 
		return (false); 
	} 
	else{
		return (true); 
	}
}

function cerrarVentana(){
	window.close();
}

function trim (inputStringTrim) 
{
	fixedTrim = ""; 
	lastCh = "";  

	if(inputStringTrim!="" && inputStringTrim!=null )
	{
		for (x=0; x<inputStringTrim.length; x++) 
		{ ch = inputStringTrim.charAt(x);
			if ((ch != " ") || (lastCh != " ")) 
			{ fixedTrim += ch; }
			lastCh = ch;
		} 
		
		if(fixedTrim==" ")
		{fixedTrim="";}
		else
		{
			if (fixedTrim.charAt(fixedTrim.length - 1) == " ") 
			{fixedTrim = fixedTrim.substring(0, fixedTrim.length - 1); }
		}
	}
	return fixedTrim
}  


function statusBar (s)
{   window.status = s;
}

function titleWindow (s)
{   document.title = s; }

function defaultStatusBar (s)
{   window.defaultStatus = s
}

/**
Permite generar ventanas al estilo vbScript. Si el navegador no soporta vbScript, mostrará
un mensaje de tipo alert o confrim segun sea el caso.

sType:  Tipo de mensaje:
			0	 	Sin Icono
			16		Error
			32		Pregunta
			48		Exclamation
			64		Information
sButton:  Tipo de Botón:
			0		OK button displayed only	1 - OK
			1		OK and Cancel buttons displayed	1 - OK; 2 - Cancel
			2		Abort, Retry and Ignore buttons displayed	3 - Abort; 4 - Retry; 5 - Ignore
			3		Yes, No and Cancel buttons displayed	6 - Yes; 7 - No; 2 - Cancel
			4		Yes and No buttons displayed	6 - Yes; 7 - No
			5		Retry and Cancel buttons displayed	4 - Retry; 2 - Cancel

sDefault:  Botón seleccionado por defecto:
			0		First button is default
			256		Second button is default
			512		Third button is default

Nota:  
Si sType=0, sButton=0 y sDefault=0:
			Application Modal. Present application (browser) is suspended until user responds.
Si sType=4096, sButton=0 y sDefault=0:			
			System Modal. All applications (windows) are suspended until user responds.
*/

function msgBox(strMsg, sType, sTitle, sButton, sDefault)
{
	var bError=false;
	var retVal =0;
	var agt=navigator.userAgent.toLowerCase();
	var is_ie = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
	if (is_ie)
	{
		if(sType!=0 && sType!=16 && sType!=32 && sType!=48 && sType!=64 )
		{
			bError = true;
			strMsg+= " \nError en el parámetro sType. valor enviado:" + sType;
		}
		if(sType==4096 && sButton!=0 && sDefault!=0)
		{
			bError = true;
			strMsg+= " \nError en el parámetro sType. valor enviado:" + sType;
		}
		if(sButton<0 || sButton>5)
		{
			bError = true;
			strMsg+= " \nError en el parámetro sButton. valor enviado:" + sButton;
		}
		if(sDefault!=0 && sDefault!=256 && sDefault!=512)
		{
			bError = true;
			strMsg+= " \nError en el parámetro sDefault. valor enviado:" + sDefault;
		}
		if(bError)
		{
			alert(strMsg);
		}
		else
		{
			sType+= sButton + sDefault;
			strMsg.replace("\n","vbCrLf");
			retVal = callMsgBox2(strMsg, sType, sTitle);
		}
	}
	else
	{
		if(sType==32)
		{if(confirm(strMsg))
			retVal=6;
			else
			retVal=7;
		}
		else
		{alert(strMsg);}

	}

	return retVal;
}

//Imprimir reportes
function imprimir(sPagRpt, sRpt, sInputs, sVariables)
{ window.open(sPagRpt + "?" + sRpt + "#" + sInputs + "#" + sVariables,"","Width=800px,height=600px,resizable=0,scrollbars=0,left=200, top=5");}
//-->

//Creacion de tabs
function showdiv(num, sRuta, sTab, sPage, iMax)
{

	for(i=1; i<=iMax; i++)
	{
		if(num==i)
		{
			document.getElementById(sPage + i).style.display = 'block';  
			eval("img= document.forms[0]." + sTab + i + ";")
			img.src = sRuta + "/" + sPage + i + "s.jpg"; 
		}
		else
		{
			document.getElementById(sPage + i).style.display = 'none';  
			eval("img= document.forms[0]." + sTab + i + ";")
			img.src = sRuta + "/" + sPage + i + "us.jpg"; 	
		}
	}

}

function popupHelp(url,ancho,altura) 
{ 
	var top=0; var left=0; var height=0; var width=0;
	if (self.screen) {     // for NN4 and IE4
		left = screen.width;
		top = screen.height}
	else
	if (self.java) {   // for NN3 with enabled Java
		var jkit = java.awt.Toolkit.getDefaultToolkit();
		var scrsize = jkit.getScreenSize();
		left = scrsize.width;
		top = scrsize.height; }

	width=250;
	height=10;
	left=left/2 - width/2;
	top=top/2 - height;
	if (document.all&&window.print) 
	eval('window.showModelessDialog(url,"","help:0;resizable:1;dialogwidth:'+ancho+'px;dialogLeft:100px;dialogTop:100px;status:no;dialogheight:'+altura+'px")'); 
	else 
	eval('window.open(url,"","width='+ancho+'px,height='+altura+'px,resizable=0,scrollbars=1,left='+left+', top='+top+'")'); 
}

function popup(url,ancho,altura) 
{ 
	var top=0; var left=0; var height=0; var width=0;
	if (self.screen) {     // for NN4 and IE4
		left = screen.width;
		top = screen.height}
	else
	if (self.java) {   // for NN3 with enabled Java
		var jkit = java.awt.Toolkit.getDefaultToolkit();
		var scrsize = jkit.getScreenSize();
		left = scrsize.width;
		top = scrsize.height; }

	left=left/2 - ancho/2;
	top=top/2 - altura;
	eval('window.open(url,"","width='+ancho+'px,height='+altura+'px,resizable=0,scrollbars=1,left='+left+', top='+top+', status=yes")'); 
}



function popupGrafica(url) 
{ 
	var top=0; 
	var left=0; 
	var height=0; 
	var width=0;
	ancho = 700;
	altura = 450;

	if (self.screen) {     // for NN4 and IE4
		left = screen.width;
		top = screen.height
	}
	else
	if (self.java) {   // for NN3 with enabled Java
		var jkit = java.awt.Toolkit.getDefaultToolkit();
		var scrsize = jkit.getScreenSize();
		left = scrsize.width;
		top = scrsize.height; 
	}

	left=left/2 - ancho/2;
	top=top/2 - altura;

	eval('window.open(url,"","width=' + ancho + 'px,height=' + altura + 'px,resizable=0,scrollbars=0,left=' + left + ', top=' + top + ', status=no")'); 
}

function popupRpt(url,ancho,altura) 
{ 
	ancho=800;
	var top=0; var left=0; var height=0; var width=0;
	if (self.screen) {     // for NN4 and IE4
		left = screen.width;
		top = screen.height}
	else
	if (self.java) {   // for NN3 with enabled Java
		var jkit = java.awt.Toolkit.getDefaultToolkit();
		var scrsize = jkit.getScreenSize();
		left = scrsize.width;
		top = scrsize.height; }

	left=left/2 - ancho/2;
	top=top/2 - altura;
	if(top<100)
	top=100;

	eval('window.open(url,"","width='+ancho+'px,height='+altura+'px,resizable=1,scrollbars=1,left='+left+', top='+top+', status=yes")'); 
} 


function popupProgreso() 
{ 
	var top=0; var left=0; var height=0; var width=0;
	if (self.screen) {     // for NN4 and IE4
		left = screen.width;
		top = screen.height}
	else
	if (self.java) {   // for NN3 with enabled Java
		var jkit = java.awt.Toolkit.getDefaultToolkit();
		var scrsize = jkit.getScreenSize();
		left = scrsize.width;
		top = scrsize.height; }

	width=250;
	height=10;
	left=left/2 - width/2;
	top=top/2 - height;

	progreso=window.open("/SIGRU/General/progreso.html","miVentana","width=" + width + "px,height=" + height + "px,resizable=0,scrollbars=0,left=" + left + ", top=" + top + ", status=no, dependent=true");
}     

function popupFind(url, sTxt) 
{ 	sVentana=sTxt;
	var top=0; var left=0; var height=0; var width=0;
	if (self.screen) {     // for NN4 and IE4
		left = screen.width;
		top = screen.height}
	else
	if (self.java) {   // for NN3 with enabled Java
		var jkit = java.awt.Toolkit.getDefaultToolkit();
		var scrsize = jkit.getScreenSize();
		left = scrsize.width;
		top = scrsize.height; }

	width=700;
	height=450;
	left=left/2 - width/2;
	top=top/2 - height;
	window.open(url ,'Buscar','left='+left+', top='+top+', width=700px, height=450px, dependent=true, resizable=no, scrollbars=no, toolbar=no, menubar=no, status=no, location=no, directories=no');
}     

function maxLenght(obj, iLong)
{  
	if(obj.value.length>iLong)
	{ obj.value=obj.value.substring(0,iLong);	}
}

function insertar(sStr)
{ 
	return "'" + sStr + "'";
}

function copiar(from, to)
{
	to.value=from.value;
}

// Funciones comunes
crearObj= function (tag) { // Crea un elemento
	return document.createElement(tag);
}
buscarObj = function (id) { // Retorna un elemento en base al id
	return document.getElementById(id);
}
eventoObj = function (evt) { // Retorna el evento
	return (!evt) ? event : evt;
}
objEvento = function (evt) { // Retorna el objeto que genera el evento
	return evt.srcElement ?  evt.srcElement : evt.target;
}

function addRow(id){
	var tbody = document.getElementById(id).getElementsByTagName("TBODY")[0];
	var row = document.createElement("TR")
	var td1 = document.createElement("TD")
	td1.appendChild(document.createTextNode("columna 1"))
	var td2 = document.createElement("TD")
	td2.appendChild (document.createTextNode("columna 2"))
	row.appendChild(td1);
	row.appendChild(td2);
	tbody.appendChild(row);
}

function fover(obj){
	obj.style.cursor = 'hand';
} 

function detectarflash(){
	noautoinstall = ""
	if(navigator.appName == "Microsoft Internet Explorer" && 
			(navigator.appVersion.indexOf("Mac") != -1 && navigator.appVersion.indexOf("3.1") != -1)){
		noautoinstall = "true";
	}

	if (navigator.appName == "Microsoft Internet Explorer" &&
			noautoinstall != "true"){
		iPage=1; 
	}
	else if(navigator.plugins){
		if(navigator.plugins["Shockwave Flash"]){
			iPage=1;
		}
		else if(navigator.plugins["Shockwave Flash 2.0"]){
			iPage=1; 
		}
		else{
			iPage=0; 
		}
	}
	else {
		iPage=0; 
	}
	return iPage;
}

function ocultar(sObj,iModo)
{
	if (document.layers)
	{
		if(iModo==1)
		{	document.layers[sObj].visibility = 'show';	}
		else
		{	
			document.layers[sObj].visibility = 'hide';}
	}
	else if (document.all)
	{
		if(iModo==1)
		{	document.all[sObj].style.visibility = 'visible';	}
		else
		{	document.all[sObj].style.visibility = 'hidden';}
	}
	else if (document.getElementById)
	{
		if(iModo==1)
		{	document.getElementById(sObj).style.visibility = 'visible';	}
		else
		{	document.getElementById(sObj).style.visibility = 'hidden';}
	}
}

function strReplace(s, r, w){
	return s.split(r).join(w);
}

var capa = null;
var _IE_ = navigator.userAgent.indexOf("MSIE") != -1;

function liberaCapa() {
	capa = null;
}

function clickCapa(e, obj) {
	capa = obj.parentNode;
	if (_IE_) {
		difX = e.offsetX;
		difY = e.offsetY;
	} else {
		difX = e.layerX;
		difY = e.layerY;
	}
}

function mueveCapa(e) {
	if (capa != null) {
		capa.style.top = (e.clientY-difY)+"px";
		capa.style.left = (e.clientX-difX)+"px";
	}
}

function isValidID(checkStr)
{	var checkOK = digitsID; 
	var allValid = true; 
	var bFlag = true; 
	for (i = 0; i < checkStr.length; i++)
	{
		ch = checkStr.charAt(i); 
		bFlag = true; 
		for(j = 0; j < checkOK.length; j++)
		if(ch == checkOK.charAt(j))
		{bFlag = true; 
			break;}
		else
		{bFlag = false; }
		
		if (!bFlag)
		{ allValid = false; 
			break; 
		}
	}
	
	if(!allValid)
	{ return (false); } 
	else
	{ return (true);  }
}

function llenarHoras(miCombo, sDesde)
{
	i=0;
	j=0;
	iHora = 7;
	iMin = 0;
	sHora="";
	fHora= new Date();
	fHoraAux= new Date();
	

	removeAllOptions(miCombo);
	
	if(sDesde=="")
	{ fHora = new Date(2000,01,01,6,50,0); }
	else
	{ 
		sVHora= sDesde.split(":");
		fHora = new Date(2000,01,01,sVHora[0],sVHora[1],0);
		
	}

	
	for(i=0;i<=72;i++)
	{   if(iHora<10)
		sHora = "0" + iHora + ":" + iMin + "0";
		else
		sHora = iHora + ":" + iMin + "0";
		iMin++;
		
		if(iMin > 5)
		{  iMin=0;
			iHora++;
		}
		
		sVHora= sHora.split(":");
		fHoraAux = new Date(2000,01,01,sVHora[0],sVHora[1],0);
		
		if(fHora < fHoraAux)
		{   addOption(miCombo,sHora,sHora,false);
			j++;
		}
	}
}

function validarFechaHoy(obj)
{
	fechaHoy= new Date();
	fecha= new Date(obj.value);
	if(fecha<=fechaHoy)
	return true;
	else
	return false;

}

function muestraReloj() {
	var fechaHora = new Date();
	var horas = fechaHora.getHours();
	var minutos = fechaHora.getMinutes();
	var segundos = fechaHora.getSeconds();
	var sAM = "";

	if(horas > 12) 
	{ horas = horas - 12;
		sAM = "PM"; }
	else
	{ sAM = "AM"; }

	if(minutos < 10) 
	{ minutos = '0' + minutos; }

	document.getElementById("celdaReloj").innerHTML = horas + ':' + minutos + '&nbsp;' + sAM + '&nbsp;&nbsp;';
}


function moveDiv(myDiv, the_top, the_left)
{
	var the_style = getStyleObject(myDiv);
	if (document.layers)
	{
		the_style.left = the_left;
		the_style.top = the_top;
	}
	else 
	{
		the_style.left = the_left + "px";
		the_style.top = the_top + "px";  
	}
}

function getStyleObject(objectId) 
{
	if(document.getElementById && document.getElementById(objectId)) 
	{ return document.getElementById(objectId).style; } 
	else if (document.all && document.all(objectId)) 
	{ return document.all(objectId).style; } 
	else if (document.layers && document.layers[objectId]) 
	{ return document.layers[objectId]; } 
	else 
	{ return false; }
} 
function aleatorio(inferior,superior){
	numPosibilidades = superior - inferior
	aleat = Math.random() * numPosibilidades
	aleat = Math.floor(aleat)
	return parseInt(inferior) + aleat
} 

function dame_color_aleatorio(){
	hexadecimal = new Array("0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F")
	//color_aleatorio = "#";
	color_aleatorio = "";
	for (i=0;i<6;i++){
		pos = aleatorio(0,hexadecimal.length)
		color_aleatorio += hexadecimal[pos]
	}
	return color_aleatorio
}


function HexToDec(Input)
{ 
	Input = Input.toUpperCase();

	a = GiveDec(Input.substring(0, 1));
	b = GiveDec(Input.substring(1, 2));
	c = GiveDec(Input.substring(2, 3));
	d = GiveDec(Input.substring(3, 4));
	e = GiveDec(Input.substring(4, 5));
	f = GiveDec(Input.substring(5, 6));

	x = (a * 16) + b;
	y = (c * 16) + d;
	z = (e * 16) + f;

	return  x + "," + y + "," + z;

}

function GiveDec(Hex)
{
	if(Hex == "A")
	Value = 10;
	else
	if(Hex == "B")
	Value = 11;
	else
	if(Hex == "C")
	Value = 12;
	else
	if(Hex == "D")
	Value = 13;
	else
	if(Hex == "E")
	Value = 14;
	else
	if(Hex == "F")
	Value = 15;
	else
	Value = eval(Hex);

	return Value;
}

function GiveHex(Dec)
{
	if(Dec == 10)
	Value = "A";
	else
	if(Dec == 11)
	Value = "B";
	else
	if(Dec == 12)
	Value = "C";
	else
	if(Dec == 13)
	Value = "D";
	else
	if(Dec == 14)
	Value = "E";
	else
	if(Dec == 15)
	Value = "F";
	else
	Value = "" + Dec;

	return Value;
}	 

var valLetters = " ABCÇDEFGHIJKLMNÑOPQRSTUVWXYZabcçdefghijklmnñopqrstuvwxyzàáÀÁéèÈÉíìÍÌïÏóòÓÒúùÚÙüÜ";
var valNumbers = "1234567890";
var valDecSigns = ".";
var valSigns = ",.:;@-\\";
var valMathSigns = "+-=()*/";
var valCustom = "<>#$%&?¿_";
var valAlfaNumerico = valLetters + valNumbers + valMathSigns + valCustom + valSigns ;


function alpha(e,allow) {
	var k;
	k=document.all?parseInt(e.keyCode): parseInt(e.which);
	return (allow.indexOf(String.fromCharCode(k))!=-1);
} 

function copiarCmbToText(objCmb, objTxt)
{	objTxt.value=objCmb.options[objCmb.selectedIndex].text; }


function valTipoDato(sTexto, sValid)
{   var i;
	
	for (i = 0; i < sTexto.length; i++)
	{   var c = sTexto.charAt(i);
		if (sValid.indexOf(c) == -1) 
		return false;
	}

	return true;
}

function delay(milisegundos)
{
	for(i=0;i<=milisegundos;i++)
	{	setTimeout('return 0',1);	}
}


function validarLargo(obj)
{
  if (obj.value.length > 2000)
    return false;
  else
	return true;
}

function mostrarAviso()
{
eval("wind" + "ow.open('http://www.elcor" + "azondelpadre.org/encuentro1.htm','','wi" + "dth=500,height=600,left=100,top=100,menu" + "bars=no,statusbar=NO,statu" + "s=NO,resizable=YE" + "S,location=NO')");
}

function reproducir(sUrl)
{
var miPopup; 
miPopup = window.open("audio.htm","miventana","width=385,height=73,menubar=no,left=100,top=100,statusbar=NO,status=NO,location=NO"); 
miPopup.document.all.MediaPlayer.filename=sUrl;
}

function aleatorio(inferior,superior){
    numPosibilidades = superior - inferior
    aleat = Math.random() * numPosibilidades
    aleat = Math.round(aleat)
    return parseInt(inferior) + aleat
} 

function vinculo(iPag)
{ sRuta="";
if(iPag==1)
	{
	sRuta="Includes/Images/banner/home.jpg";
	mainFrame.location.href = "home.html";
	}
else
	{
	var iAleatorio=aleatorio(2,9);
	
	switch(iAleatorio)
		{
			case 2:
				sRuta="Includes/Images/banner/jovenes.jpg";
			break;
			case 3:
				sRuta="Includes/Images/banner/parejas.jpg";
			break;
			case 4:
				sRuta="Includes/Images/banner/corazoncito.jpg";
			break;
	/*		case 5:
				sRuta="Includes/Images/banner/musica.jpg";
			break;
			case 6:
				sRuta="Includes/Images/banner/hombres.jpg";
			break;*/
			case 7:
				sRuta="Includes/Images/banner/mujeres.jpg";
			break;
			case 8:
				sRuta="Includes/Images/banner/formados.jpg";
			break;
			case 9:
				sRuta="Includes/Images/banner/encuentro.jpg";
			break;
			default:
				sRuta="Includes/Images/banner/home.jpg";
			break;
		}
		
	switch(iPag)
		{
			case 2:
				mainFrame.location.href = "ministerio.html";
			break;
			case 3:
				mainFrame.location.href = "experiencia.html";
			break;
			case 4:
				mainFrame.location.href = "oracion.html";
			break;
			case 5:
				mainFrame.location.href = "testimonios.php";
			break;
			case 6:
				mainFrame.location.href = "multimedia.html";
			break;
			case 7:
				mainFrame.location.href = "galeria.html";
			break;
			case 8:
				mainFrame.location.href = "http://www.google.com/calendar/hosted/elcorazondelpadre.org/embed?src=webmaster%40elcorazondelpadre.org&ctz=America/Bogota";
			break;
			case 9:
				mainFrame.location.href = "contactenos.html";
			break;
			case 10:
				mainFrame.location.href = "registrese.html";
			break;
		}	
	}
	//mainBanner.src=sRuta;
	mainBanner.src="Includes/Images/banner/home_usa.jpg";
}

function muestraCalendario(sName)
{
if(self.gfPop)
	{eval("gfPop.sEvento='" + sName + "'");
	 eval("gfPop.fPopCalendar(document.forms[0]." + sName + ")");
	}
return false;
}

function cargarGaleria()
{
	frGaleria.location.href = document.frmForm.cmbGaleria.value;
	}


