function cambiaractual(id_nuevo, tipo) {
	
	id_actual = document.getElementById("actual").value;
	clase = document.getElementById("clase").value;
	clase_actual = clase + '_actual';
	
	if (document.getElementById("tipo_obj").value == 'f'){	
		elemento_viejo = 'foto' + id_actual;
				
	} else {
		elemento_viejo = 'video' + id_actual;
	}
	
	if (tipo == 'f'){	
		elemento_nuevo = 'foto' + id_nuevo;
				
	} else {
		elemento_nuevo = 'video' + id_nuevo;
	}
	
	document.getElementById(elemento_viejo).className = clase;
	document.getElementById(elemento_nuevo).className = clase_actual;
	
	}
		
function validaInnerText() {
	var hasInnerText = (document.getElementsByTagName("body")[0].innerText != undefined) ? true : false;
	if(!hasInnerText){	 
	     return false;	     
	} else{	   
	     return true;	  
	}
	
}

function visibilidad(nombre,valor){ 
// ocultamos o mostramos segun la variable valor 
document.getElementById(nombre).style.visibility=valor; 
}

function embeber(idVideo) {
	//enviar div, tamanio y calcular version flash
	swfobject.embedSWF('http://www.youtube.com/v/' + idVideo + '&rel=0', 'video', '425', '355', '9.0.0');
}

function CambiarObjeto(obj, nom_array, tipo)
{
	
	if (obj > 0) {
	
		cambiaractual(obj, tipo);
		document.formulario.tipo_obj.value = tipo;
		
		
		document.formulario.actual.value= obj;
		if (tipo == 'f'){
			visibilidad('foto','visible');
			visibilidad('video','hidden');
			visibilidad('link_video','hidden');
			document.getElementById("objeto").src= nom_array[obj];
		} else {
			visibilidad('foto','hidden');
			visibilidad('video','visible');
			visibilidad('link_video','visible');
			embeber(nom_array[obj]);
		}
		
		if (!validaInnerText()) {
			document.getElementById("nro_objeto").textContent= obj;
			if (tipo == 'f') {
				document.getElementById("cant_obj").textContent = document.formulario.cantidad_foto.value;
				document.getElementById("tipo_objeto").textContent = 'Foto ';
				document.getElementById("objeto_link_video").textContent = '';
			} else {
				document.getElementById("cant_obj").textContent = document.formulario.cantidad_video.value;
				document.getElementById("tipo_objeto").textContent = 'Video ';
				document.getElementById("objeto_link_video").innerHTML='Link Video YouTube';
				document.getElementById("objeto_link_video").href='http://www.youtube.com/watch?v=' + nom_array[obj]  + '&rel=0';
			}
		} else {
			document.getElementById("nro_objeto").innerText = obj;
			if (tipo == 'f') {
				document.getElementById("cant_obj").innerText = document.formulario.cantidad_foto.value;
				document.getElementById("tipo_objeto").innerText = 'Foto ';
			} else {
				document.getElementById("cant_obj").innerText = document.formulario.cantidad_video.value;
				document.getElementById("tipo_objeto").innerText = 'Video ';
				document.getElementById("objeto_link_video").innerHTML='Link Video YouTube';
				document.getElementById("objeto_link_video").href='http://www.youtube.com/watch?v=' + nom_array[obj]  + '&rel=0';
			}
		}
	}
}
function Anterior()
{
	tipo = document.formulario.tipo_obj.value;
	if (parseInt(document.formulario.actual.value) > 1) {
		objactual = parseInt(document.formulario.actual.value);
		cambiaractual(objactual-1, tipo);
		if (tipo == 'f') {
				document.getElementById("objeto").src= arrImg[objactual - 1];
			} else {
				embeber(arrVid[objactual - 1]);
				document.getElementById("objeto_link_video").innerHTML='Link Video YouTube';
				document.getElementById("objeto_link_video").href='http://www.youtube.com/watch?v=' + arrVid[objactual - 1]  + '&rel=0';
			}
		document.formulario.actual.value= objactual-1;
		if (!validaInnerText()) {
			document.getElementById("nro_objeto").textContent= objactual - 1;			
		} else {
			document.getElementById("nro_objeto").innerText= objactual - 1;
			
		}
						
	}
}

function Siguiente()
{ 
	
	tipo = document.formulario.tipo_obj.value;
	if (tipo == 'f') {
		cantidad = parseInt(document.formulario.cantidad_foto.value);
	} else {
		cantidad = parseInt(document.formulario.cantidad_video.value);
	}
	if (cantidad > 0) {
		actual = parseInt(document.formulario.actual.value);
		if (actual != cantidad) {
			objactual= parseInt(document.formulario.actual.value);
			cambiaractual(objactual + 1, tipo);
			if (tipo == 'f') {
				document.getElementById("objeto").src= arrImg[objactual + 1];
			} else {
				embeber (arrVid[objactual + 1]);
				document.getElementById("objeto_link_video").innerHTML='Link Video YouTube';
				document.getElementById("objeto_link_video").href='http://www.youtube.com/watch?v=' + arrVid[objactual + 1]  + '&rel=0';
				
			}
			document.formulario.actual.value= objactual+1;				
			if (!validaInnerText()) {				
				document.getElementById("nro_objeto").textContent= objactual+1;
			} else {
				document.getElementById("nro_objeto").innerText= objactual+1;
			}
			
		}
	}
}
/*
function SiguienteF(nom_array,tipo)
{ 
	if (tipo == 'f') {
		cantidad = document.formulario.cantidad_foto.value
	} else {
		cantidad = document.formulario.cantidad_video.value
	}
	if (cantidad > 0) {		
		if (document.formulario.actual.value != cantidad) {
			objactual= parseInt(document.formulario.actual.value);
			document.objeto.src= nom_array[objactual +1];			
			document.formulario.actual.value= objactual+1;	
			
			if (!validaInnerText()) {				
				if (tipo == 'f') {
					document.getElementById("nro_objetoF").textContent= objactual+1;
				} else {
					document.getElementById("nro_objetoV").textContent= objactual+1;
				}				
			} else {
				
				if (tipo == 'f') {
					document.getElementById("nro_objetoF").innerText= objactual+1;
				} else {
					document.getElementById("nro_objetoV").innerText= objactual+1;
				}
			}
		}
	}
}
function AnteriorF(nom_array, tipo)
{
	if (document.formulario.actual.value > 1) {
		objactual= parseInt(document.formulario.actual.value);
		document.objeto.src= nom_array[objactual-1];
		document.formulario.actual.value= objactual-1;
		if (!validaInnerText()) {
			document.getElementById("nro_objeto").textContent= objactual - 1;
			if (tipo == 'f') {
				document.getElementById("nro_objetoF").textContent= objactual - 1;
			} else {
				document.getElementById("nro_objetoV").textContent= objactual - 1;
			}
		} else {
			if (tipo == 'f') {
				document.getElementById("nro_objetoF").innerText= objactual - 1;
			} else {
				document.getElementById("nro_objetoV").innerText= objactual - 1;
			}
		}
				
	}
}

*/

function multimediaPopUp(id_temp,id_evento,titulo) {
  window.open('galeria.php?id_temp='+ id_temp +'&id_evento='+ id_evento + '&id_titulo=' + titulo ,'','screenx=0,screeny=0,width=780,height=480,directories=no,status=no,scrollbars=no,resize=yes,menubar=no,top=40,left=5');
}

function videoPopUp(id,titulo,fuente) {
  window.open('video.php?id_video='+ id +'&titulo='+ titulo +'&fuente=' +fuente,'','screenx=0,screeny=0,width=540,height=410,directories=no,status=no,scrollbars=no,resize=yes,menubar=no,top=200,left=250');
}

function noticiasfotoPopUp(id,titulo) {
  window.open('galeria.php?id_noticia='+ id +'&titulo='+ titulo,'','screenx=0,screeny=0,width=540,height=510,directories=no,status=no,scrollbars=no,resize=yes,menubar=no,top=200,left=250');
}

function anuncioPopUp() {
  window.open('anuncio.php','','screenx=0,screeny=0,width=769,height=360,directories=no,status=no,scrollbars=no,resize=yes,menubar=no,top=50,left=10');
}


function agregarfavorito(){
   if ((navigator.appName=="Microsoft Internet Explorer") && (parseInt(navigator.appVersion)>=4)) {
      var url="http://www.acfa.com.ar/";
      var titulo="Córdoba Football Americano";
      window.external.AddFavorite(url,titulo);
   }
   else {
      if(navigator.appName == "Netscape")
         alert ("Presione Crtl+D para agregar este sitio en sus Favoritos");
   }
} 

function ValidarNumerico(e)
{
	 var charCode
	if (navigator.appName == "Netscape") // me fijo
		charCode = e.which // leo la tecla en ASCII que ingreso
		else
		charCode = e.keyCode // leo la tecla en ASCII que ingreso
	
	if (charCode > 31 && (charCode < 48 || charCode > 57) && (charCode.keyCode!=44)&&(charCode.keyCode!=13))
			return false
		
return true
}

/*************************************************************************************
	JavaScript Library  v1.0.03

	A recopilation of the best FREE Javascript functions.

	The code exposed here has been found all over the Internet and considered Public 
	Domain. Please feel free to pass this Library to all your friends. This library
	works with browsers that doesnt support Javascript1.2

    Remember to add the following command to the <HEAD> of your HTML/ASP page:
    [script language=javascript src="<path>/js_functions.js"][/script]

	Be sure to check for updates to this library   Comments? Send me an e-mail to 
	bryanbe@yahoo.com.

	Last Modified: 08/01/2000 Bryan Bensing
 *************************************************************************************/
 

/**************************************************************
 DetectBrowser: Return a string that contains the current 
                browser name and version used.

 Parameters:

 Returns: String
***************************************************************/
function DetectBrowser()
{
	var temp = navigator.appName;
	temp = temp.toLowerCase();

	if (temp == 'microsoft internet explorer')
		return 'IE' + navigator.appVersion
	else
		return 'NS' + navigator.appVersion;
}

/**************************************************************
 OpenURL: Return a concatenated string with all the 'objects
          values' contained in a FORM HTML in the format:
          page_to_redirect.html/asp?object1=xxxx&object2=yyyyy&...

 Parameters:
      URL  = URL to redirect
      Form = Form name (be sure not to use QUOTES when passing
             the Form name)

 Returns: URL

 Example: var redirect = OpenURL('mytest.asp', frmMyForm)
          alert(redirect)
          window.nagivate(redirect)
***************************************************************/
function OpenURL(URL, Form)
{
	if (URL.length == 0 || URL == null)
		return (false);

	var form_length = Form.elements.length;
	var myform = Form;
	var mytype = '';
	var temp = URL + '?';

	for (var i = 0; i < form_length; i++)
	{
		mytype = myform.elements[i].type
		mytype = mytype.toLowerCase();
		if (mytype == 'text' || mytype == 'hidden' || mytype == 'select-one' ||
		    mytype == 'checkbox' || mytype == 'radio' || mytype == 'select-multiple')
		{
			var t = myform.elements[i].name
			if (t == null || t == '')
				t = myform.elements[i].id
			if (mytype == 'text' || mytype == 'hidden')
				temp = temp + t + "=" + escape(myform.elements[i].value);
			else if (mytype == 'checkbox' || mytype == 'radio')
				temp = temp + t + "=" + escape(myform.elements[i].checked);
			else if (mytype == 'select-one' || mytype == 'select-multiple')
				temp = temp + t + "=" + escape(myform.elements[i][myform.elements[i].selectedIndex].value);
			if (i < form_length - 1)
				temp = temp + "&";
		}
	}
	temp = temp.substring(temp, temp.length - 1)

	return temp;
} 

/**************************************************************
 DaysInMonth: Return number of days in a month.

 Parameters:
      dDate = Date to process. If date is null, false is
              returned.

 Returns: Integer
***************************************************************/
function DaysInMonth(dDate)
{
	if (dDate == null)
		return (false);

	dDate = new Date(dDate)

	var dt1, cmn1, cmn2, dtt, lflag, dycnt
	var temp1 = dDate.getMonth() + 1;
	var temp2 = dDate.getYear();
	dt1 = new Date(temp2, temp1 - 1, 1)
	cmn1 = dt1.getMonth()
	dtt = dt1.getTime() + 2332800000
	lflag = true
	dycnt = 28
	while (lflag)
	{
		dtt = dtt + 86400000
		dt1.setTime(dtt)
		cmn2 = dt1.getMonth()
		if (cmn1 != cmn2)
			lflag = false
		else
			dycnt = dycnt + 1;
	}
	if (dycnt > 31)
		dycnt = 31;

    return dycnt;
}

/**************************************************************
 Abs: Returns a value of the same type that is passed to it 
      specifying the absolute value of a number.

 Parameters:
      Number = The required number argument can be any valid 
               numeric expression. If number contains Null, 
               false is returned; if it is an uninitialized 
               variable, false is returned.

 Returns: Long
***************************************************************/
function Abs(Number)
{
	Number = Number.toLowerCase();
	RefString = "0123456789.-";

	if (Number.length < 1) 
		return (false);

	for (var i = 0; i < Number.length; i++) 
	{
		var ch = Number.substr(i, 1)
		var a = RefString.indexOf(ch, 0)
		if (a == -1)
			return (false);
	}

	if (Number < 0)
		return (Number * -1)

	return Number;
}

/**************************************************************
 Len: Returns a Long containing the number of characters in a 
      string or the number of bytes required to store a 
      variable.

 Parameters:
      string = Any valid string expression. If string contains 
               null, false is returned.

 Returns: Long
***************************************************************/
function Len(string)
{
	if (string == null)
		return (false);

	return String(string).length;
}

/**************************************************************
 Chr: Returns a String containing the character associated 
      with the specified character code.

 Parameters:
      CharCode = Long that identifies a character.

 Returns: String
***************************************************************/
function Chr(CharCode)
{
	return String.fromCharCode(CharCode);
}

/**************************************************************
 Asc: Returns an Integer representing the character code 
      corresponding to the first letter in a string

 Parameters:
      String = The required string argument is any valid 
               string expression. If the string if not in 
               the range 32-126, the function return ZERO

 Returns: Integer
***************************************************************/
function Asc(string)
{
	var symbols = " !\"#$%&'()*+'-./0123456789:;<=>?@";
	var loAZ = "abcdefghijklmnopqrstuvwxyz";
	symbols += loAZ.toUpperCase();
	symbols += "[\\]^_`";
	symbols += loAZ;
	symbols += "{|}~";
	var loc;
	loc = symbols.indexOf(string);
	if (loc > -1)
	{ 
		Ascii_Decimal = 32 + loc;
		return (32 + loc);
	}
	return (0);
}

/**************************************************************
 LTrim: Returns a String containing a copy of a specified 
        string without leading spaces 

 Parameters:
      String = The required string argument is any valid 
               string expression. If string contains null, 
               false is returned

 Returns: String
***************************************************************/
function LTrim(String)
{
	var i = 0;
	var j = String.length - 1;

	if (String == null)
		return (false);

	for (i = 0; i < String.length; i++)
	{
		if (String.substr(i, 1) != ' ' &&
		    String.substr(i, 1) != '\t')
			break;
	}

	if (i <= j)
		return (String.substr(i, (j+1)-i));
	else
		return ('');
}

/**************************************************************
 RTrim: Returns a String containing a copy of a specified 
        string without trailing spaces 

 Parameters:
      String = The required string argument is any valid 
               string expression. If string contains null, 
               false is returned

 Returns: String
***************************************************************/
function RTrim(String)
{
	var i = 0;
	var j = String.length - 1;

	if (String == null)
		return (false);

	for(j = String.length - 1; j >= 0; j--)
	{
		if (String.substr(j, 1) != ' ' &&
			String.substr(j, 1) != '\t')
		break;
	}

	if (i <= j)
		return (String.substr(i, (j+1)-i));
	else
		return ('');
}

/**************************************************************
 RTrim: Returns a String containing a copy of a specified 
        string without both leading and trailing spaces 

 Parameters:
      String = The required string argument is any valid 
               string expression. If string contains null, 
               false is returned

 Returns: String
***************************************************************/
function Trim(String)
{
	if (String == null)
		return (false);

	return RTrim(LTrim(String));
}

/**************************************************************
 Left: Returns a String containing a specified number of 
       characters from the left side of a string.

 Parameters:
      String = String expression from which the leftmost 
               characters are returned. If string contains null, 
               false is returned.
      Length = Numeric expression indicating how many characters 
               to return. If 0, a zero-length string ("") is 
               returned. If greater than or equal to the number 
               of characters in string, the entire string is 
               returned. 

 Returns: String
***************************************************************/
function Left(String, Length)
{
	if (String == null)
		return (false);

	return String.substr(0, Length);
}

/**************************************************************
 Right: Returns a String containing a specified number of 
        characters from the right side of a string.

 Parameters:
      String = String expression from which the leftmost 
               characters are returned. If string contains null, 
               false is returned.
      Length = Numeric expression indicating how many characters 
               to return. If 0, a zero-length string ("") is 
               returned. If greater than or equal to the number 
               of characters in string, the entire string is 
               returned. 

 Returns: String
***************************************************************/
function Right(String, Length)
{
	if (String == null)
		return (false);

    var dest = '';
    for (var i = (String.length - 1); i >= 0; i--)
		dest = dest + String.charAt(i);

	String = dest;
	String = String.substr(0, Length);
	dest = '';

    for (var i = (String.length - 1); i >= 0; i--)
		dest = dest + String.charAt(i);

	return dest;
}

/**************************************************************
 Mid: Returns a String containing a specified number of 
      characters from a string

 Parameters:
      String = String expression from which characters are 
               returned. If string contains null, false is 
               returned.
      Start  = Number. Character position in string at which 
               the part to be taken begins. If Start is 
               greater than the number of characters in 
               string, Mid returns a zero-length string ("").
      Length = Number of characters to return. If omitted 
               false is returned. 

 Returns: String
***************************************************************/
function Mid(String, Start, Length)
{
	if (String == null)
		return (false);

	if (Start > String.length)
		return '';

	if (Length == null || Length.length == 0)
		return (false);

	return String.substr((Start - 1), Length);
}

/**************************************************************
 InStr: Returns a Long specifying the position of the first 
        occurrence of one string within another. Is String1
        or String2 are null, false is returned.

 Parameters:
      String1 = String expression being searched.
      String2 = String expression sought

 Returns: Integer
***************************************************************/
function InStr(String1, String2)
{
	var a = 0;

	if (String1 == null || String2 == null)
		return (false);

	String1 = String1.toLowerCase();
	String2 = String2.toLowerCase();

	a = String1.indexOf(String2);
	if (a == -1)
		return 0;
	else
		return a + 1;
}

/**************************************************************
 Sgn: Returns an Integer indicating the sign of a number. If
      Integer is not a number the functions return false.

 Parameters:
      Integer = The number argument can be any valid numeric 
                expression.

 Returns: Integer       -1 If Integer < 0
                         0 If Integer = 0
                         1 If Integer > 0
                     false If Parameter IS NOT NUMERIC
***************************************************************/
function Sgn(Integer)
{
	Number = Integer.toLowerCase();
	RefString = "0123456789-";

	if (Number.length < 1) 
		return (false);

	for (var i = 0; i < Number.length; i++) 
	{
		var ch = Number.substr(i, 1)
		var a = RefString.indexOf(ch, 0)
		if (a == -1)
			return (false);
	}
	if (Integer < 0)
		return (-1);
	else if (Integer == 0)
		return (0);
	else
		return (1);
}

/**************************************************************
 LBound: Returns a Long containing the smallest available 
         subscript for the indicated dimension of an array

 Parameters:
      array = Array to verify

 Returns: Integer       (-1 if Array does not contain
                            any subscript)
***************************************************************/
function LBound(array)
{
	var i = 0;
	var temp = '';

	if (array.length == 0)
		return (-1);

	for (i = 0; i < array.length; i++)
	{
		temp = array[i]
		if (temp != null)
		{
			var temp = i;
			return temp;
		}
	}
	return (-1);
}

/**************************************************************
 UBound: Returns a Long containing the largest available 
         subscript for the indicated dimension of an array

 Parameters:
      array = Array to verify

 Returns: Integer       (-1 if Array does not contain
                            any subscript)
***************************************************************/
function UBound(array)
{
	return (array.length - 1);
}

/**************************************************************
 Join: Returns a string created by joining a number of 
       substrings contained in an array.

 Parameters:
      array     = One-dimensional array containing substrings 
                  to be joined
      Delimiter = String character used to separate the 
                  substrings in the returned string. 
                  If delimiter is a zero-length string (""), 
                  all items in the list are concatenated 
                  with no delimiters. 

 Returns: String
***************************************************************/
function Join(array, Delimiter)
{
	var temp = '';

	if (array.length == 0)
		return '';

	if (Delimiter.length == 0)
		Delimiter = ' ';

	for (var i = 0; i < array.length; i++)
	{
		temp = temp + array[i]
		if (i < array.length - 1)
			temp = temp + Delimiter;
	}
	return temp;
}

/**************************************************************
 ReturnString: Returns a String containing a repeating 
               character string of the length specified

 Parameters:
      Number    = Length of the returned string. If number 
                  is less than 1, false is returned.
      Character = Character code specifying the character or 
                  string expression whose first character is 
                  used to build the return string. If character 
                  contains null, false is returned. 

 Returns: String
***************************************************************/
function ReturnString(Number, Character)
{
	var temp = '';

	if (Number < 1)
		return (false);

	if (Character.length == 0)
		return (false);

	if (Character.length > 1)
		Character = Character.charAt(0);

	for (var i = 0; i < Number; i++)
	{
		temp = temp + Character
	}

	return temp;
}

/**************************************************************
 Split: Returns a zero-based, one-dimensional array containing 
        a specified number of substrings

 Parameters:
      Expression = String expression containing substrings and 
                   delimiters. If expression is a zero-length 
                   string(""), Split returns an empty array, 
                   that is, an array with no elements and no 
                   data.
      Delimiter  = String character used to identify substring 
                   limits. If delimiter is a zero-length 
                   string (""), a single-element array 
                   containing the entire expression string 
                   is returned.

 Returns: String
***************************************************************/
function Split(Expression, Delimiter)
{
	var temp = Expression;
	var a, b = 0;
	var array = new Array();

	if (Delimiter.length == 0)
	{
		array[0] = Expression;
		return (array);
	}

	if (Expression.length == '')
	{
		array[0] = Expression;
		return (array);
	}

	Delimiter = Delimiter.charAt(0);

	for (var i = 0; i < Expression.length; i++) 
	{
		a = temp.indexOf(Delimiter);
		if (a == -1)
		{
			array[i] = temp;
			break;
		}
		else
		{
			b = (b + a) + 1;
			var temp2 = temp.substring(0, a);
			array[i] = temp2;
			temp = Expression.substr(b, Expression.length - temp2.length);
		}
	}

	return (array);
}

/**************************************************************
 Space: Returns a String consisting of the specified number 
        of spaces

 Parameters:
      Number = Number of spaces you want in the string.

 Returns: String
***************************************************************/
function Space(Number)
{
	var temp = '';

	if (Number < 1)
		return '';

	for (var i = 0; i < Number; i++)
	{
		temp = temp + ' ';
	}
	return temp;
}

/**************************************************************
 Replace: Returns a string in which a specified substring has 
          been replaced with another substring a specified 
          number of times.

 Parameters:
      Expression = String expression containing substring to 
                   replace
      Find       = Substring being searched for.
      Replace    = Replacement substring.

 Returns: String
***************************************************************/
function Replace(Expression, Find, Replace)
{
	var temp = Expression;
	var a = 0;

	for (var i = 0; i < Expression.length; i++) 
	{
		a = temp.indexOf(Find);
		if (a == -1)
			break
		else
			temp = temp.substring(0, a) + Replace + temp.substring((a + Find.length));
	}

	return temp;
}

/**************************************************************
 IsChar: Returns a Boolean value indicating whether an 
         expression can be evaluated as a character (this 
         not only includes alpha chars but all symbols such as
         @#$%^&|\_+-/*="!?,.:;'(){}<>[]

 Parameters:
    - Expression = Variant containing a numeric expression or 
                   string expression.

 Returns: Boolean
***************************************************************/
function IsChar(Expression)
{
	Expression = Expression.toLowerCase();
	RefString = "0123456789";

	if (Expression.length < 1) 
		return (false);

	for (var i = 0; i < Expression.length; i++) 
	{
		var ch = Expression.substr(i, 1)
		var a = RefString.indexOf(ch, 0)
		if (a != -1)
			return (false);
	}
	return(true);
}

/**************************************************************
 IsNumber: Returns a Boolean value indicating whether an 
           expression can be evaluated as a number (this
           includes values like $15,656.00)

 Parameters:
      Expression = Variant containing a numeric expression or 
                   string expression.

 Returns: Boolean
***************************************************************/
function IsNumber(Expression)
{
	Expression = Expression.toLowerCase();
	RefString = "0123456789.,-";
	
	if (Expression.length < 1) 
		return (false);

	for (var i = 0; i < Expression.length; i++) 
	{
		var ch = Expression.substr(i, 1)
		var a = RefString.indexOf(ch, 0)
		if (a == -1)
			return (false);
	}
	return(true);
}


/**************************************************************
 Parameters:
      Expression = Variant containing a numeric expression or 
                   string expression.

 Returns: Boolean
***************************************************************/
function IsInt(Expression)
{
	Expression = Expression.toLowerCase();
	RefString = "0123456789-";
	
	if (Expression.length < 1) 
		return (false);

	for (var i = 0; i < Expression.length; i++) 
	{
		var ch = Expression.substr(i, 1)
		var a = RefString.indexOf(ch, 0)
		if (a == -1)
			return (false);
	}
	return(true);
}


/**************************************************************
 Parameters:
      Expression = Variant containing a numeric expression or 
                   string expression.

 Returns: Boolean
***************************************************************/
function IsNatural(Expression)
{
	Expression = Expression.toLowerCase();
	RefString = "0123456789";
	
	if (Expression.length < 1) 
		return (false);

	for (var i = 0; i < Expression.length; i++) 
	{
		var ch = Expression.substr(i, 1)
		var a = RefString.indexOf(ch, 0)
		if (a == -1)
			return (false);
	}
	return(true);
}


/**************************************************************
 IsAlphanumeric: Returns a Boolean value indicating whether an 
                 expression can be evaluated as a number or
                 char.

 Parameters:
      Expression = Variant containing a numeric expression or 
                   string expression.

 Returns: Boolean
***************************************************************/
function IsAlphanumeric(Expression)
{
	Expression = Expression.toLowerCase();
	RefString = "abcdefghijklmnopqrstuvwxyz0123456789 ";

	if (Expression.length < 1) 
		return (false);

	for (var i = 0; i < Expression.length; i++) 
	{
		var ch = Expression.substr(i, 1)
		var a = RefString.indexOf(ch, 0)
		if (a == -1)
			return (false);
	}
	return(true);
}

/**************************************************************
 ReverseString: Returns a string in which the character order 
                of a specified string is reversed

 Parameters:
      Expression = The expression argument is the string whose 
                   characters are to be reversed. If expression 
                   is a zero-length string (""), a zero-length 
                   string is returned. If expression is null,
                   false is returned.

 Returns: String
***************************************************************/
function ReverseString(Expression)
{
	if (Expression == null)
		return (false);

    var dest = '';
    for (var i = (Expression.length - 1); i >= 0; i--)
		dest = dest + Expression.charAt(i);
    return dest;
}

/**************************************************************
 StrConv: Returns a String converted as specified in the
          Parameters Section.

 Parameters:
      String     = String expression to be converted.
      Conversion = Number specifying the type of conversion 
                   to perform.
                   1 = TO UPPER CASE
                   2 = to lower case
                   3 = To Proper Case
                   If Conversion is null or not specified 1
                   is set as default.

 Returns: String
***************************************************************/
function StrConv(String, Conversion)
{
	var index;
	var tmpStr;
	var tmpChar;
	var preString;
	var postString;
	var strlen;

	if (Conversion == null || Conversion.length == 0)
		Conversion = '1';

	if (Conversion != '1' && Conversion != '2' && Conversion != '3')
		Conversion = '1';

	if (Conversion == '1')
		return String.toUpperCase();

	if (Conversion == '2')
		return String.toLowerCase();

	//Proper Case
	tmpStr = String.toLowerCase();
	strLen = tmpStr.length;
	if (strLen > 0)
	{
		for (index = 0; index < strLen; index++)
		{
			if (index == 0)
			{
				tmpChar = tmpStr.substring(0, 1).toUpperCase();
				postString = tmpStr.substring(1, strLen);
				tmpStr = tmpChar + postString;
			}
			else
			{
				tmpChar = tmpStr.substring(index, index + 1);
				if (tmpChar == " " && index < (strLen - 1))
				{
					tmpChar = tmpStr.substring(index + 1, index + 2).toUpperCase();
					preString = tmpStr.substring(0, index + 1);
					postString = tmpStr.substring(index + 2,strLen);
					tmpStr = preString + tmpChar + postString;
				}
			}
		}
	}
	return tmpStr;
}

/**************************************************************
 ComboAdd: Add a new item to a SELECT HTML object at runtime.

 Parameters:
      Object = SELECT Object ID
      Value  = Value of the String ... <option VALUE="?????">....</option>
      String = String to add.

 Returns: None
***************************************************************/
function ComboAdd(Object, Value, String)
{
	Value = Trim(Value)
	String = Trim(String)

	if (Value.length < 1 || String.length < 1)
		return false

	Object[Object.length] = new Option(String, Value);
	Object.selectedIndex = Object.length;
}

/**************************************************************
 ComboDel: Delete the current/selected item from a SELECT 
           HTML object at runtime.

 Parameters:
      Object = SELECT Object ID

 Returns: None
***************************************************************/
function ComboDel(Object)
{
	var selected_index = Object.selectedIndex
	if (selected_index >= 0)
	{
		Object.options[Object.selectedIndex] = null;
		if (selected_index > 0)
			Object.selectedIndex = selected_index
		else
			Object.selectedIndex = 0;
	}
}

/**************************************************************
 FormatNumber: Returns an expression formatted as a number.

 Parameters:
      Expression            = Expression to be formatted.
      NumDigitsAfterDecimal = Numeric value indicating how
                              many places to the right of the
                              decimal are displayed.

 Returns: String
***************************************************************/
function FormatNumber(Expression, NumDigitsAfterDecimal)
{
	var iNumDecimals = NumDigitsAfterDecimal;
	var dbInVal = Expression;
	var bNegative = false;
	var iInVal = 0;
	var strInVal
	var strWhole = "", strDec = "";
	var strTemp = "", strOut = "";
	var iLen = 0;

	if (dbInVal < 0)
	{
		bNegative = true;
		dbInVal *= -1;
	}

	dbInVal = dbInVal * Math.pow(10, iNumDecimals)
	iInVal = parseInt(dbInVal);
	if ((dbInVal - iInVal) >= .5)
	{
		iInVal++;
	}
	strInVal = iInVal + "";
	strWhole = strInVal.substring(0, (strInVal.length - iNumDecimals));
	strDec = strInVal.substring((strInVal.length - iNumDecimals), strInVal.length);
	while (strDec.length < iNumDecimals)
	{
		strDec = "0" + strDec;
	}
	iLen = strWhole.length;
	if (iLen >= 3)
	{
		while (iLen > 0)
		{
			strTemp = strWhole.substring(iLen - 3, iLen);
			if (strTemp.length == 3)
			{
				strOut = "," + strTemp + strOut;
				iLen -= 3;
			}
			else
			{
				strOut = strTemp + strOut;
				iLen = 0;
			}
		}
		if (strOut.substring(0, 1) == ",")
		{
			strWhole = strOut.substring(1, strOut.length);
		}
		else
		{
			strWhole = strOut;
		}
	}
	if (bNegative)
	{
		return "-" + strWhole + "." + strDec;
	}
	else
	{
		return strWhole + "." + strDec;
	}
}

/**************************************************************
 FormatCurrency: Returns an expression formatted as a currency 
                 value using the currency symbol $.

 Parameters:
      Expression = Expression to be formatted.

 Returns: String
***************************************************************/
function FormatCurrency(Expression)
{
	var iNumDecimals = 2;
	var dbInVal = Expression;
	var bNegative = false;
	var iInVal = 0;
	var strInVal
	var strWhole = "", strDec = "";
	var strTemp = "", strOut = "";
	var iLen = 0;

	if (dbInVal < 0)
	{
		bNegative = true;
		dbInVal *= -1;
	}

	dbInVal = dbInVal * Math.pow(10, iNumDecimals)
	iInVal = parseInt(dbInVal);
	if ((dbInVal - iInVal) >= .5)
	{
		iInVal++;
	}
	strInVal = iInVal + "";
	strWhole = strInVal.substring(0, (strInVal.length - iNumDecimals));
	strDec = strInVal.substring((strInVal.length - iNumDecimals), strInVal.length);
	while (strDec.length < iNumDecimals)
	{
		strDec = "0" + strDec;
	}
	iLen = strWhole.length;
	if (iLen >= 3)
	{
		while (iLen > 0)
		{
			strTemp = strWhole.substring(iLen - 3, iLen);
			if (strTemp.length == 3)
			{
				strOut = "," + strTemp + strOut;
				iLen -= 3;
			}
			else
			{
				strOut = strTemp + strOut;
				iLen = 0;
			}
		}
		if (strOut.substring(0, 1) == ",")
		{
			strWhole = strOut.substring(1, strOut.length);
		}
		else
		{
			strWhole = strOut;
		}
	}
	if (bNegative)
	{
		return "-$" + strWhole + "." + strDec;
	}
	else
	{
		return "$" + strWhole + "." + strDec;
	}
}

/**************************************************************
 FormatPercent: Returns an expression formatted as a 
                percentage (multipled by 100) with a 
                trailing % character

 Parameters:
      Expression = Expression to be formatted.

 Returns: String
***************************************************************/
function FormatPercent(Expression, NumDigitsAfterDecimal)
{
	var iNumDecimals = NumDigitsAfterDecimal;
	var dbInVal = Expression * 100;
	var bNegative = false;
	var iInVal = 0;
	var strInVal
	var strWhole = "", strDec = "";
	var strTemp = "", strOut = "";
	var iLen = 0;

	if (dbInVal < 0)
	{
		bNegative = true;
		dbInVal *= -1;
	}

	dbInVal = dbInVal * Math.pow(10, iNumDecimals)
	iInVal = parseInt(dbInVal);
	if ((dbInVal - iInVal) >= .5)
	{
		iInVal++;
	}
	strInVal = iInVal + "";
	strWhole = strInVal.substring(0, (strInVal.length - iNumDecimals));
	strDec = strInVal.substring((strInVal.length - iNumDecimals), strInVal.length);
	while (strDec.length < iNumDecimals)
	{
		strDec = "0" + strDec;
	}
	iLen = strWhole.length;
	if (iLen >= 3)
	{
		while (iLen > 0)
		{
			strTemp = strWhole.substring(iLen - 3, iLen);
			if (strTemp.length == 3)
			{
				strOut = "," + strTemp + strOut;
				iLen -= 3;
			}
			else
			{
				strOut = strTemp + strOut;
				iLen = 0;
			}
		}
		if (strOut.substring(0, 1) == ",")
		{
			strWhole = strOut.substring(1, strOut.length);
		}
		else
		{
			strWhole = strOut;
		}
	}
	if (bNegative)
	{
		return "-" + strWhole + "." + strDec + "%";
	}
	else
	{
		return strWhole + "." + strDec + "%";
	}
}

/**************************************************************
 FormatDateTime: Returns an expression formatted as a date or 
                 time. If DateTime is null then false is
                 returned.

 Parameters:
      DateTime   = Date/Time expression to be formatted
      FormatType = Numeric value that indicates the date/time 
                   format used. If omitted, GeneralDate is used
                   0 = Very Long Date/Time Format (Mon Jul 10, 12:02:30 am EDT 2000)
                   1 = Long Date/Time Format (Monday, July 10, 2000)
                   2 = Short Date (1/10/00)
                   3 = Long Time (4:20 PM)
                   4 = Military Time (14:43)

 Returns: String
***************************************************************/
function FormatDateTime(DateTime, FormatType)
{
	if (DateTime == null)
		return (false);

	if (FormatType < 0)
		FormatType = 1;

	if (FormatType > 4)
		FormatType = 1;

	var strDate = new String(DateTime);

	if (strDate.toUpperCase() == "NOW")
	{
		var myDate = new Date();
		strDate = String(myDate);
	}
	else
	{
		var myDate = new Date(DateTime);
		strDate = String(myDate);
	}

	var Day = new String(strDate.substring(0, 3));
	if (Day == "Sun") Day = "Sunday";
	if (Day == "Mon") Day = "Monday";
	if (Day == "Tue") Day = "Tuesday";
	if (Day == "Wed") Day = "Wednesday";
	if (Day == "Thu") Day = "Thursday";
	if (Day == "Fri") Day = "Friday";
	if (Day == "Sat") Day = "Saturday";	

	var Month = new String(strDate.substring(4, 7)), MonthNumber = 0;
	if (Month == "Jan") { Month = "January"; MonthNumber = 1; }
	if (Month == "Feb") { Month = "February"; MonthNumber = 1; }
	if (Month == "Mar") { Month = "March"; MonthNumber = 1; }
	if (Month == "Apr") { Month = "April"; MonthNumber = 1; }
	if (Month == "May") { Month = "May"; MonthNumber = 1; }
	if (Month == "Jun") { Month = "June"; MonthNumber = 1; }
	if (Month == "Jul") { Month = "July"; MonthNumber = 1; }
	if (Month == "Aug") { Month = "August"; MonthNumber = 1; }
	if (Month == "Sep") { Month = "September"; MonthNumber = 1; }
	if (Month == "Oct") { Month = "October"; MonthNumber = 1; }
	if (Month == "Nov") { Month = "November"; MonthNumber = 1; }
	if (Month == "Dec") { Month = "December"; MonthNumber = 1; }

	var curPos = 11;
	var MonthDay = new String(strDate.substring(8, 10));
	if (MonthDay.charAt(1) == " ")
	{
		MonthDay = "0" + MonthDay.charAt(0);
		curPos--;
	}	

	var MilitaryTime = new String(strDate.substring(curPos, curPos + 5));
	var Year = new String(strDate.substring(strDate.length - 4, strDate.length));

	// Format Type decision time!
	if (FormatType == 1)
		strDate = Day + ", " + Month + " " + MonthDay + ", " + Year;
	else if (FormatType == 2)
		strDate = MonthNumber + "/" + MonthDay + "/" + Year.substring(2,4);
	else if (FormatType == 3)
	{
		var AMPM = MilitaryTime.substring(0,2) >= 12 && MilitaryTime.substring(0,2) != "24" ? " PM" : " AM";
		if (MilitaryTime.substring(0,2) > 12)
			strDate = (MilitaryTime.substring(0,2) - 12) + ":" + MilitaryTime.substring(3,MilitaryTime.length) + AMPM;
		else
		{
			if (MilitaryTime.substring(0,2) < 10)
				strDate = MilitaryTime.substring(1,MilitaryTime.length) + AMPM;
			else
			strDate = MilitaryTime + AMPM;
		}
	}	
	else if (FormatType == 4)
		strDate = MilitaryTime;

	return strDate;
}

/**************************************************************
 Mask: Returns a Boolean if the specified Expression match
       the specified Mask.

 Parameters:
      Expression = String to validate
      Mask       = String that can contain the following
                   options:
                   9 = only numbers (0..9)
                   X = only letters (a..z or A..Z)
                   * = Anything...
 Example: alert(Mask("(954) 572-4419", "(999) 999-9999")); => TRUE
          alert(Mask("33351-820", "99999-9999"));          => FALSE
          alert(Mask("This is a test", "XXXXXX"));         => FALSE
          alert(Mask("This 34 a test", "**************")); => TRUE

 Returns: Boolean
***************************************************************/
function Mask(Expression, Mask)
{
	Mask = Mask.toUpperCase();
	LenStr = Expression.length;
	LenMsk = Mask.length;
	if ((LenStr == 0) || (LenMsk == 0))
		return (false);
	if (LenStr != LenMsk)
		return (false);
	TempString = '';
	for (Count = 0; Count <= Expression.length; Count++)
	{
		StrChar = Expression.substring(Count, Count + 1);
		MskChar = Mask.substring(Count, Count + 1);
		if (MskChar == '9')
		{
			if(!IsNumber(StrChar))
				return (false);
		}
		else if (MskChar == 'X')
		{
			if(!IsChar(StrChar))
				return (false);
		}
		else if (MskChar == '*')
		{
			if(!IsAlphanumeric(StrChar))
				return (false);
		}
		else
		{
			if (MskChar != StrChar) 
				return (false);
		}
	}
	return (true);
}

/**************************************************************
 IsEmail: Returns a Boolean if the specified Expression is a
          valid e-mail address. If Expression is null, false
          is returned.

 Parameters:
      Expression = e-mail to validate.

 Returns: Boolean
***************************************************************/
function IsEmail(Expression)
{
	if (Expression == null)
		return (false);

	var supported = 0;
	if (window.RegExp)
	{
		var tempStr = "a";
		var tempReg = new RegExp(tempStr);
		if (tempReg.test(tempStr)) supported = 1;
	}
	if (!supported) 
		return (Expression.indexOf(".") > 2) && (Expression.indexOf("@") > 0);
	var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
	var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
	return (!r1.test(Expression) && r2.test(Expression));
}

/**************************************************************
 DayOfWeek: Returns a String specifying a name of the day
            for a given date.

 Parameters:
      dDate = Date to evaluate. The Date can be one of the
              following formats: '7/6/2000' or 'July 4, 1830'

 Returns: String
***************************************************************/
function DayOfWeek(dDate)
{
	var ar = new Array();
	ar[0] = "Sunday";   ar[1] = "Monday"; ar[2] = "Tuesday";  ar[3] = "Wednesday";
	ar[4] = "Thursday";	ar[5] = "Friday"; ar[6] = "Saturday";
	var dow = new Date(dDate);
	var day = dow.getDay();
	return ar[day];
}

/**************************************************************
 AddDays: Returns a Date containing a date to which a 
          specified days interval has been added to the
          current date.

 Parameters:
      DaysToAdd = Numeric expression that is the interval of 
                  days you want to add to the actual date.

 Returns: Date/String
***************************************************************/
function AddDays(DaysToAdd)
{
	var newdate = new Date();
	var newtimems = newdate.getTime() + (DaysToAdd * 24 * 60 * 60 * 1000);
	newdate.setTime(newtimems);
	return newdate.toLocaleString();
}

/**************************************************************
 AllowOnly: This function allow entering just the specified
            Expression to a textbox or textarea control.

 Parameters:
      Expression = Allowed characters.
                   a..z => ONLY LETTERS
                   0..9 => ONLY NUMBERS
                   other symbols...

 Example: use the onKeyPress event to make this function work:
          //Allows only from A to Z
          onKeyPress="AllowOnly('a..z');"

          //Allows only from 0 to 9
          onKeyPress="AllowOnly('0..9');"

          //Allows only A,B,C,1,2 and 3
          onKeyPress="AllowOnly('abc123');"

          //Allows only A TO Z,@,#,$ and %
          onKeyPress="AllowOnly('a..z|@#$%');"

		  //Allows only A,B,C,0 TO 9,.,,,+ and -
          onKeyPress="AllowOnly('ABC|0..9|.,+-');"

 Remarks: Use the pipe "|" symbol to separate a..z from 0..9 and symbols

 Returns: None
***************************************************************/
function AllowOnly(Expression)
{
	Expression = Expression.toLowerCase();
	Expression = Replace(Expression, 'a..z', 'abcdefghijklmnopqrstuvwxyz');
	Expression = Replace(Expression, '0..9', '0123456789');
	Expression = Replace(Expression, '|', '');

	var ch = String.fromCharCode(window.event.keyCode);
	ch = ch.toLowerCase();
	Expression = Expression.toLowerCase();
	var a = Expression.indexOf(ch);
	if (a == -1) 
		window.event.keyCode = 0;
}

/**************************************************************
 LeapYear: Return a Boolean if the speficied Year is a Leap
           Year

 Parameters:
      Year = Numeric expression that represents the Year.

 Returns: Boolean
***************************************************************/
function LeapYear(Year)
{    
	if(Year % 4 == 0 && Year % 100 != 0 || Year % 400 ==0)
		return true;
	return false;
}

/**************************************************************
 GeneratePopupMenu: Defines a new MENU for the right-click
                    event. The arrMenu 'array' must have the
                    following syntax:
                    arrMenu('<tool_tip>'|'<function_to_call OR javascript_code>'|'<menu_string'>)

 Parameters:
      arrMenu  = Array containing the NEW menu
      FontFace = The font name (ie: Tahoma, Times New, Helvetica, etc).
                 If FontFace is blank ('') or ('default') Tahoma
                 font will be used
      FontSize = The font size (8, 9, 12, 24, etc). If FontSize
	             is blank ('') or ('default') font size 8
	             will be used

 Returns: Nothing

 Remarks: - This menu works only with IE 4.01+
          - Use <HR> to separate items in the menu

 Example:
 [body]
	[script language=javascript]
	var arrM = new Array()
	arrM[0] = 'Cancel the current Order|btnCancelOrder_OnClick()|Cancel Order'
	arrM[1] = 'Refresh the Current page|window.location.reload()|Refresh Order'
	arrM[2] = '<hr>'
	arrM[3] = 'Search Products by Category|SearchProducts()|Search Products'
	arrM[4] = '<hr>'
	arrM[5] = 'Display the Agency Order History|AgencyOrderHistory()|Order History'
	arrM[6] = 'Shows the Agency Information|AgencyInfo()|Show Agency Info'
	arrM[7] = 'Add a new Agent to the Database|AddNewAgent()|Add New Agent'
	arrM[8] = '<hr>'
	arrM[9] = 'Enter your Name|var a=prompt("Enter your Name:");showName(a)|Enter Name'
	arrM[10] = '<hr>'
	arrM[11] = 'Close this menu...|alert("This menu will be closed")|Close this Menu'

	GeneratePopupMenu(arrM, '', '')

	function showName(a)
	{
		//This function will be called from the Popup menu//
		alert('Hello' + a);
	}
	[/script]
 [/body]
***************************************************************/
function GeneratePopupMenu(arrMenu, FontFace, FontSize)
{
	var strTemp = ''
	var A = new Array()

	if (FontFace.length == 0 || FontFace == '' || FontFace.toLowerCase() == 'default')
		FontFace = "Tahoma"

	if (FontSize.length == 0 || FontSize == 0 || FontSize == '' || FontSize.toLowerCase() == 'default')
		FontSize = "8"

	var line_step = ((FontSize * 16) / 8)

	document.write('<style>')
	document.write('#MainMenu {border-top: 1px solid #D4D0C8; border-left: 1px solid LightGrey; border-right: 1px solid Black; border-bottom: 1px solid Black; position: absolute; visibility: hidden}')
	document.write('.MenuItem {border-top: 1px solid White; border-left: 1px solid White; border-right: 1px solid Gray; border-bottom: 1px solid Gray; line-height: ' + line_step + 'px; padding-left: 15px; padding-right: 15px; font-family: ' + FontFace + '; font-size: ' + FontSize + 'pt; background-color: #D4D0C8}')
	document.write('</style>')

	strTemp = "<div id='MainMenu' bgcolor='#D4D0C8'>"
	strTemp = strTemp + "<table border='0' bgcolor='#D4D0C8' cellpadding='0' cellspacing='0' class='MenuItem' valign='top'>"

	for (var I = 0; I <= UBound(arrMenu); I++)
	{
		A = Split(arrMenu[I], "|")
		if (A[0].toLowerCase() != "<hr>")
		{
			strTemp = strTemp + "<tr><td valign='top' onmouseover='highlight()' onmouseout='lowlight()' style='cursor: hand' "
			strTemp = strTemp + " toolTip='" + A[0] + "'"
			strTemp = strTemp + " onClick='javascript:{HideMenu();" + A[1] + "}'>"
			strTemp = strTemp + A[2] + ""
			strTemp = strTemp + "</td></tr>"
		}
		else
		{
			strTemp = strTemp + "<tr><td style='height: 3px; cursor: normal'></td></tr>"
			strTemp = strTemp + "<tr><td bgcolor=gray style='height: 1px; cursor: normal'></td></tr>"
			strTemp = strTemp + "<tr><td bgcolor=white style='height: 1px; cursor: normal'></td></tr>"
			strTemp = strTemp + "<tr><td style='height: 3px; cursor: normal'></td></tr>"
		}
	}

	strTemp = strTemp + "</table></div>"

	document.write(strTemp)

	document.oncontextmenu = DisplayMenu
	if (document.all && window.print)
		document.body.onclick = HideMenu

	return true
}

function highlight()
{
	event.srcElement.style.background = "Navy" //<= change value to change background color
	event.srcElement.style.color = "White"     //<= change value to change fore color
	if (event.srcElement.toolTip != '')
		window.status = event.srcElement.toolTip
}

function lowlight()
{
	event.srcElement.style.backgroundColor = "#D4D0C8"
	event.srcElement.style.color = "Black"
	window.status = ''
}

function DisplayMenu()
{
	var rightedge = document.body.clientWidth - event.clientX
	var bottomedge = document.body.clientHeight - event.clientY

	if (rightedge < MainMenu.offsetWidth)
		MainMenu.style.left = document.body.scrollLeft + event.clientX - MainMenu.offsetWidth
	else
		MainMenu.style.left = document.body.scrollLeft + event.clientX

	if (bottomedge < MainMenu.offsetHeight)
		MainMenu.style.top = document.body.scrollTop + event.clientY - MainMenu.offsetHeight
	else
		MainMenu.style.top = document.body.scrollTop + event.clientY

	MainMenu.style.visibility = "visible"
	return false
}

function HideMenu()
{
	MainMenu.style.visibility = "hidden"
}

/**************************************************************
 IsDate: Returns a Boolean (true) if the date is true, false
         is not

 Parameters:
	- DateStr: String date in format (MM/DD/YYYY)

 Returns: Boolean
***************************************************************/
function IsDate(dateStr)
{
	// Checks for the following valid date formats:
	// DD/MM/YYYY   DD-MM-YYYY

	var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

	var matchArray = dateStr.match(datePat)
	if (matchArray == null)
		return false

	month = matchArray[3]
	day = matchArray[1]
	year = matchArray[4]
	if (month < 1 || month > 12)
		return false

	if (day < 1 || day > 31)
		return false

	if ((month==4 || month==6 || month==9 || month==11) && day==31)
		return false

	if (month == 2)
	{
		var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0))
		if (day>29 || (day==29 && !isleap))
			return false;
	}
	return true;
}

/**************************************************************
 CheckBoxes: Checks, unchecks or switch the values of the
             checkboxes in a form.

 Parameters:
    - f_form: String. Name of the Form <FORM...>
    - Start : Number: Checkbox to start with (0 to start from 
              the first one
    - Length: Number: How many checkboxes after the Start 
              you want to check, uncheck or switch
    - Method: Strign: c = Check, u = Uncheck, s = Switch

 Returns: None
***************************************************************/
function CheckBoxes(f_form, Start, Length, Method)
{
	var s_type = ''

	Method = Method.toLowerCase()

	if (Start == 0) {Start = 0} else {Start = Start - 1}
	if (Length == 0) {Length = f_form.elements.length}

	for (var i = Start; i < Start + Length; i++)
	{
		s_type = f_form.elements[i]
		if (s_type.type == 'checkbox')
		{
			if (Method == 'c')
				s_type.checked = true
			if (Method == 'u')
				s_type.checked = false
			if (Method == 's')
				s_type.checked = !s_type.checked
		}
	}

	return
}

/**************************************************************
 DateDiff: Returns the Difference between two dates in weeks,
           days, hours, minutes & seconds

 Parameters:
    - Date1: First Date
    - Date2: Second Data

 Returns: String containing the weeks, days, hours, minutes &
          seconds between the two dates.
***************************************************************/
function DateDiff(Date1, Date2)
{
	date1 = new Date();
	date2 = new Date();
	diff  = new Date();

	date1temp = new Date(Date1);
	date1.setTime(date1temp.getTime());
	date2temp = new Date(Date2);
	date2.setTime(date2temp.getTime());

	diff.setTime(Math.abs(date1.getTime() - date2.getTime()));
	timediff = diff.getTime();

	weeks = Math.floor(timediff / (1000 * 60 * 60 * 24 * 7));
	timediff -= weeks * (1000 * 60 * 60 * 24 * 7);

	days = Math.floor(timediff / (1000 * 60 * 60 * 24)); 
	timediff -= days * (1000 * 60 * 60 * 24);

	hours = Math.floor(timediff / (1000 * 60 * 60)); 
	timediff -= hours * (1000 * 60 * 60);

	mins = Math.floor(timediff / (1000 * 60)); 
	timediff -= mins * (1000 * 60);

	secs = Math.floor(timediff / 1000); 
	timediff -= secs * 1000;

	return (weeks + " weeks, " + days + " days, " + hours + " hours, " + mins + " minutes, and " + secs + " seconds");
}

/**************************************************************
 MinutesDiff: Returns the number of minutes between two dates.

 Parameters:
    - Date1: First date
    - Date2: Second data

 Returns: Number
***************************************************************/
function MinutesDiff(Date1, Date2)
{
	date1 = new Date();
	date2 = new Date();
	diff  = new Date();

	date1temp = new Date(Date1);
	date1.setTime(date1temp.getTime());

	date2temp = new Date(Date2);
	date2.setTime(date2temp.getTime());

	diff.setTime(Math.abs(date1.getTime() - date2.getTime()));
	timediff = diff.getTime();

	weeks = Math.floor(timediff / (1000 * 60 * 60 * 24 * 7));
	timediff -= weeks * (1000 * 60 * 60 * 24 * 7);

	days = Math.floor(timediff / (1000 * 60 * 60 * 24)); 
	timediff -= days * (1000 * 60 * 60 * 24);

	hours = Math.floor(timediff / (1000 * 60 * 60)); 
	timediff -= hours * (1000 * 60 * 60);

	mins = Math.floor(timediff / (1000 * 60)); 
	timediff -= mins * (1000 * 60);

	secs = Math.floor(timediff / 1000); 
	timediff -= secs * 1000;

	return (mins + (hours * 60) + (days * 24 * 60) + (weeks * 7 * 24 * 60))
}

function EnableDisable(strControlName)
	//'**************************************************************************************************************************
	//'Procedure: EnableDisable
	//'--------------------------------------------------------------------------------------------------------------------------
	//'Description:   Habilita o deshabilita un control Html
	//'--------------------------------------------------------------------------------------------------------------------------
	//'Parameters:
	//'				strControlName	(Nombre del control HTML a habilitar/deshabilitar)	 - Type:String
	//'--------------------------------------------------------------------------------------------------------------------------
	//'Return Type:   None
	//'--------------------------------------------------------------------------------------------------------------------------
	//'Author:        Ing. Mariano Surghy
	//'Date:          18-May-2001
	//'**************************************************************************************************************************

	
	{
		if (document.all.item(strControlName).disabled == true)
			document.all.item(strControlName).disabled = false;
		else
			document.all.item(strControlName).disabled = true;
	}
	
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//Floating

var dragswitch=0
var nsx
var nsy
var nstemp

function drag_dropns(strDivName){
temp=eval(strDivName)
temp.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP)
temp.onmousedown=gons
temp.onmousemove=dragns
temp.onmouseup=stopns
}

function gons(e){
temp.captureEvents(Event.MOUSEMOVE)
nsx=e.x
nsy=e.y
}
function dragns(e){
if (dragswitch==1){
temp.moveBy(e.x-nsx,e.y-nsy)
return false
}
}

function stopns(){
temp.releaseEvents(Event.MOUSEMOVE)
}


//drag drop function for IE 4+////
/////////////////////////////////

var dragapproved=false
var elementName
var global = window.document
global.top_shadows = new Array

function drag_dropie(){
if (dragapproved==true){
document.all.item(elementName).style.pixelLeft=tempx+event.clientX-iex
document.all.item(elementName).style.pixelTop=tempy+event.clientY-iey

return false
}
}

function initializedragie(strDivName){
iex=event.clientX
iey=event.clientY
tempx=document.all.item(strDivName).style.pixelLeft
tempy=document.all.item(strDivName).style.pixelTop

dragapproved=true
elementName=strDivName
document.onmousemove=drag_dropie

}


if (document.all){
document.onmouseup=new Function("dragapproved=false")
}


function makeRectangularShadow(el,color, size)
{
	
	var i;
	for (i=size; i>0; i--)
	{
		var rect = document.createElement('div');
		var elId=el.id;
		
		rect.name=elId + "Shadow"
		rect.id=elId + "Shadow"
		var rs = rect.style
		rs.position = 'absolute';
		rect.style.position="absolute";
		rs.left = (el.style.posLeft + i) + 'px';
		rs.top = (el.style.posTop + i) + 'px';
		rs.width = el.offsetWidth + 'px';
		rs.height = el.offsetHeight + 'px';
		el.style.zIndex=1;
		rs.zIndex = el.style.zIndex - 1;
		rs.backgroundColor = color;
		var opacity = 1 - i / (i + 1);
		rs.filter = 'alpha(opacity=' + (100 * opacity) + ')';
		el.insertAdjacentElement('afterEnd', rect);
		global.top_shadows[global.top_shadows.length] = rect;
	}
}

function removeShadow()
{
		var i
		for (i=0; i<global.top_shadows.length; i++)
			global.top_shadows[i].removeNode(true);
		global.top_shadows = new Array();
	
}


/*=================================================================
Function: ShowTooltip
Purpose:  position, draw, and display tooltip element 
Input:    fArg - indexes text array to display
Returns:  undefined
==================================================================*/
function ShowTooltip(fArg)
{

var tooltipOBJ = eval("document.all['tt" + fArg + "']");
var tooltipOffsetTop = tooltipOBJ.scrollHeight + 35;
var testTop = (document.body.scrollTop + event.clientY) - tooltipOffsetTop;
var testLeft = event.clientX - 250;
var tooltipAbsLft = (testLeft < 0) ? 10 : testLeft;
var tooltipAbsTop = (testTop < document.body.scrollTop) ? document.body.scrollTop + 10 : testTop;
tooltipOBJ.style.posLeft = tooltipAbsLft;
tooltipOBJ.style.posTop = tooltipAbsTop;
tooltipOBJ.style.visibility = "visible";
}
/*=================================================================
Function: HideTooltip
Purpose:  set visibility attribute of tooltip to hidden
Input:    none
Returns:  undefined
==================================================================*/
function HideTooltip(fArg)
{
var tooltipOBJ = eval("document.all['tt" + fArg + "']");
tooltipOBJ.style.visibility = "hidden";
}
	

/*=================================================================
Function: ShowTooltip
Purpose:  position, draw, and display tooltip element 
Input:    fArg - indexes text array to display
			strParams: Lista de parametros separadas por -|-
Returns:  undefined
==================================================================*/
function ShowHelpTooltip(fArg)
{
var tooltipOBJ = eval("document.all['Helptt" + fArg + "']");
var tooltipOffsetTop = tooltipOBJ.scrollHeight + 5;
var testTop = (document.body.scrollTop + event.clientY) - tooltipOffsetTop;
var testLeft = event.clientX- 200;
var tooltipAbsLft = (testLeft < 0) ? 10 : testLeft;
var tooltipAbsTop = (testTop < document.body.scrollTop) ? document.body.scrollTop + 10 : testTop;
tooltipOBJ.style.posLeft = tooltipAbsLft;
tooltipOBJ.style.posTop = tooltipAbsTop;
tooltipOBJ.style.visibility = "visible";
}
/*=================================================================
Function: HideHelpTooltip
Purpose:  set visibility attribute of tooltip to hidden
Input:    none
Returns:  undefined
==================================================================*/
function HideHelpTooltip(fArg)
{
var tooltipOBJ = eval("document.all['Helptt" + fArg + "']");
tooltipOBJ.style.visibility = "hidden";
}

/*=================================================================
Function: SelectIFrame
Purpose:  envia datos y recarga el iframe seleccionado
Input:    none
Returns:  undefined
==================================================================*/
function SelectIFrame(num,Id,NomFlag)
{

	window.frames[num].document.frm.EntityId.value=Id;
	window.frames[num].document.all.item(NomFlag).value="";
	window.frames[num].document.frm.submit();
			
}
//////////////////////////////////////////////////////////////////////////////////////////////////
function CenterWindow(screenheight,screenwidth)
{
	var intTop = window.screen.height - screenheight; 
	var intLeft = window.screen.width - screenwidth;
	
	if (intTop<1 || intLeft<1)
	{
	 intTop = 0;
	 intLeft = 0;
	}else{
	 intTop = intTop/2;
	 intLeft = intLeft/2;
	}
	window.moveTo(intLeft,intTop);
}







/**************************************************************
 Metodo      : TblColOrder
 Diseño      : 
 Programo    : 
 Fecha       : 
 Version     : 

 Descripcion : Ordena las filas de una Tabla en base al contenido de
   las celdas de la misma, en orden Ascendete o Descendente.
 Parametros  :
     pTableId - Id de la Tabla a ordenar, 
     pColId   - Id de la columna a ordenar.
***************************************************************/

function TblColOrder(pTableId, pColId){
	var dRowCount, I, X;
	var TRi, TDi, TRx, TDx;
	var bOrder, bMove;
	var sTDiinnerText, sTDxinnerText;
	var oTable;

	//pColId=3;
		
	// Busca la Tabla
	oTable=document.all.item(pTableId)
		
	dRowCount = oTable.rows.length;


	//defino el orden
	TRi = oTable.rows.item(0);		
	TDi = TRi.cells.item(pColId);
	bOrder = TDi.Order;	

	
	// i
	for (var i = 1; i <= dRowCount - 1; i++){
			
		// busqueda de la celda(I)
		TRi = oTable.rows.item(i);
		TDi = TRi.cells.item(pColId);
			
		// x
		for (var x = 1; x <= dRowCount - 1; x++){
			// busqueda de la celda(X)
			TRx = oTable.rows.item(x);
			TDx = TRx.cells.item(pColId);
			sTDiinnerText=TDi.innerText;
			sTDxinnerText=TDx.innerText;		
			sTDiinnerText=sTDiinnerText.toLowerCase();
			sTDxinnerText=sTDxinnerText.toLowerCase();
			bMove = false;
				
			// defino la comparacion para el ordenamiento
			if (bOrder=='true'){					
				if (sTDiinnerText>sTDxinnerText){
					bMove=true; }
				}
			else {
				if (sTDiinnerText<sTDxinnerText){
					bMove=true; }
				}				
				
			// muevo las celdas y refresco los objetos
			if (bMove==true){
				oTable.moveRow(i, x);
				TRi = oTable.rows.item(i);
				TDi = TRi.cells.item(pColId);
				TRx = oTable.rows.item(x);
				TDx = TRx.cells.item(pColId);
			}
				
		} // x
			
	}// i

	//defino el orden
	TRi = oTable.rows.item(0);
	TDi = TRi.cells.item(pColId);
	if (TDi.Order=='true')
		{TDi.Order='false'}
	else
		{TDi.Order='true'}
	//refresco la tabla
	oTable.refresh();
}
/**************************************************************
***************************************************************/

/**************************************************************
 Metodo      : TblColOrderHeader
 Diseño      : 
 Programo    : 
 Fecha       : 
 Version     : 

 Descripcion : Asigna una imagen a una cabecera de una columna
     segun el orden q tenga la misma.
 Parametros  :
     pTableId - Id de la Tabla a ordenar, 
     pColId   - Id de la columna a ordenar.
***************************************************************/
function TblColOrderHeader(pTableId, pColId){
	var TRi, TDi, oTable;
		
	// Busca la Tabla
		
	oTable=document.all.item(pTableId)	
	TRi = oTable.rows.item(0);
	TDi = TRi.cells.item(pColId);
	
	// Define la imagen en la columna de ordenamiento
	if (TDi.Order!='true')
		{	
			if (document.all.item('col' + pColId + 'Img')) {
				document.all.item('col' + pColId + 'Img').src='../images/OrderDown8.gif';
			}
		}
	else
		{	
			if (document.all.item('col' + pColId + 'Img')){
				document.all.item('col' + pColId + 'Img').src='../images/OrderUp8.gif';
			}
		}

	// Borra las demas imagenes
	for (var x = 0 ; x < TRi.cells.length - 1; x++){
		//alert(x);
		if (x!=pColId){
			if (document.all.item('col' + x + 'Img')){
			document.all.item('col' + x + 'Img').src='../images/OrderNo8.gif';
			}
			}
	}		
}
/**************************************************************
***************************************************************/

/*function DeleteView(objViews,ClassType,NameFrame,xmlFilter)
{		
		var NameView = objViews.options(objViews.selectedIndex).innerText;
		if (objViews.value != 0)
		{
			if (window.confirm("<%Traducir pstrLang,"Are you sure delete "%>"+NameView+"?"))
			{
				var oXmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
				var oDomHttp=new ActiveXObject("MSXML2.DomDocument");
				var strURL = "../includes/GetEnteredBy.asp?ViewName="+NameView+"&ClassType="+ClassType;

				oXmlHttp.open ("POST",strURL,false);
				oXmlHttp.send();
				oDomHttp=oXmlHttp.responseXML;
	      
				if (oDomHttp.hasChildNodes)
				{
					var IdView = oDomHttp.selectSingleNode("View/ViewId").text	
					var strURL = "../includes/DelViews.asp?ViewId="+IdView;
					oXmlHttp.open ("POST",strURL,false);
					oXmlHttp.send();
					window.frames[NameFrame].document.all.item(xmlFilter).value = "";
    				window.frames[NameFrame].document.frmGrid.submit();
					CleanFields();
					objViews.remove(objViews.selectedIndex);
					objViews.value = 0;
				}else{
					alert("<%Traducir pstrLang,"can not this view delete"%>");
				}
	      
			}
		}
}*/

/************************************************************************************************************************************************
'Page:	ShowPromptPage
'------------------------------------------------------------------------------------------------------------------------------------------------
'Parameters:Message,Buttons,Title,DefaultButton
' Message: Mensaje que se muestra
' Buttons: Botones que se muestran "Yes|No|Retry" Se muestran en ese orden
' Title:   Titulo de la ventana
' DefaultButton: Boton por defecto 
'------------------------------------------------------------------------------------------------------------------------------------------------
'Description: Pagina para Mostrar Mensajes modales
'------------------------------------------------------------------------------------------------------------------------------------------------
'Author:M D
'Date: 04/04/2002
'Valor de Retorno: 
'	0 - No o Cierra la Pagina sin hacer Click
'	1 - Yes
'	2 - Cancel
'	3 - Retry
'	4 - Abort
'------------------------------------------------------------------------------------------------------------------------------------------------
'Image: Nro de imagen
'************************************************************************************************************************************************/
function ShowPromptPage(Message,Buttons,Title,DefaultButton,Image)
{
	var a=window.showModalDialog ("../Includes/PromptPage.asp?Message=" + Message + "&Buttons=" + Buttons + "&Title=" + Title + "&DefaultButton=" + DefaultButton ,"ModalDialog", "dialogWidth:19; dialogHeight:8; status=no" )
	//, top=100, height=500, width=720, status=no,scrollbars=yes, toolbar=no, menubar=no, location=no
	return (a)
}

/************************************************************************************************************************************************
'Function :	ShowError
'------------------------------------------------------------------------------------------------------------------------------------------------
'Parameters:
' oDom
'------------------------------------------------------------------------------------------------------------------------------------------------
'Description: Muestra una pagina con la descripcion del error 
'------------------------------------------------------------------------------------------------------------------------------------------------
'Author:M D
'Date: 11/06/2002
'Valor de Retorno: none
'************************************************************************************************************************************************/

function ShowError(oDom)
{
	var oErrors=oDom.selectSingleNode('//Errors')
	var oError=oErrors.selectSingleNode('Error')
	
	var ErrNumber=oError.selectSingleNode('Number').text
	var ErrSource=oError.selectSingleNode('Source').text
	var ErrDescription=oError.selectSingleNode('Description').text
	window.showModalDialog  ('../Includes/ErrorPageQstr.asp?Number=' + ErrNumber + '&Source=' + ErrSource + '&Description=' + ErrDescription, oDom," dialogWidth:300px; dialogHeight:300px ")

}


/************************************************************************************************************************************************
'Function :	BindTable 
'------------------------------------------------------------------------------------------------------------------------------------------------
'Parameters: oTable - strXMLName
'------------------------------------------------------------------------------------------------------------------------------------------------
'Description: Enlaza una tabla con una isla #XMLDi y la hace visible si no esta visible
'------------------------------------------------------------------------------------------------------------------------------------------------
'Author:M D
'Date: 2002.06.20
'Valor de Retorno: none
'************************************************************************************************************************************************/

function BindTable(oTable,strXMLName)
{
	if (oTable.dataSrc!=strXMLName)
		oTable.dataSrc=strXMLName
	try{
		if (oTable.style.display!='')
			oTable.style.display=''
		}
	catch(e){}
}


//---------------------------------------------------------------------------------------
//Deja el Dom de la Forma </Root>
function CleanDomXML(oDomXML)
{
	var oRoot=oDomXML.documentElement
	
	while (oDomXML.documentElement.hasChildNodes)
	{
		oRoot.removeChild(oRoot.childNodes(0))
	}
}

/**************************************************************
 DateChronology: Retorna True si la primera fecha es menor que la segunda
-------------------------------------
 Parameters: Date1(String), Date2 (String) // Formato:YYYY-MM-DD HH:MM
-------------------------------------
Author: Martín Yasse
Date : 03/07/2002
***************************************************************/
function DateChronology(strDate1, strDate2)
{
	var bResponse
	
	var vMin = "0";
	var vHour = "0";
	var vDay;
	if (strDate1 != "")
	{	//Cargo el 1 Date
		var Array1 = strDate1.split("-");
		var vMonth=Array1[1];
		var vYear = Array1[0];
	
		var TimePart=Array1[2];	
		if (TimePart.search(":")!=-1)
		{	var Array2 = TimePart.split(" ");
			vDay=Array2[0];
			var Array3 = Array2[1].split(":");
			vHour=Array3[0];
			vMin=Array3[1];
		}
		else
			vDay=Array1[2];
		var dDate1 = new Date(vYear, vMonth, vDay, vHour, vMin)
	}
	
	if (strDate2!="")
	{	//Cargo el 2 Date
		Array1 = strDate2.split("-");
		vMin = "0";
		vHour = "0";
		vDay = "0";

		vMonth=Array1[1];
		vYear = Array1[0];
			
		var TimePart=Array1[2];	
		if (TimePart != undefined)
		{	if (TimePart.search(":")!=-1)
			{	var Array2 = TimePart.split(" ");
				vDay=Array2[0];
				var Array3 = Array2[1].split(":");
				vHour=Array3[0];
				vMin=Array3[1];
			}
			else
				vDay=Array1[2];
		}
		var dDate2 = new Date(vYear, vMonth, vDay, vHour, vMin) 
	}

	if ((strDate1=="")||(strDate2==""))
		bResponse = true
	else
		bResponse = (dDate1 <= dDate2);
	
	return (bResponse);
}







/*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//	Autor:	Martin Melchior 
//	Fecha:	10 de julio 2002
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//-- Función para validar numeros, decimales y textos en INPUT TYPE=TEXT
//
//-- Atributos del Input Text
//
//			format			=	Formato que acepta la caja de texto 	[ natural | decimal | lower | upper | proper | '']
//			[decimal]		=	Cantidad de decimales, es opcional es decir si se especifica formato="decimal" y no se especifican la cantidad de decimales
//									por default se asumen 2 decimales !!!!
//			[description]	=	Mensaje de error cuando, el dato no es válido, es opcional !!!
//			[mark]			=	Filtro para validar algunas cajas de texto solamente. Es decir si por ejemplo tenemos 2 botones grabar en una misma pagina
//									este atributo nos permite validar las cajas de texto que nosotros querramos al hacer CLICK en el botón grabar 1, y las otras
//									en el boton grabar 2, depende de la marca !!!!
//			[Required]		=	Valor requerido, no opcional
//
//			Ej. onClick del Grabar 1			==>	onClick="Validate('Grabar1')"
//														==>	Entonces voy a validar solo las cajas de texto que digan	mark="Grabar1"	
//															
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
function ValidateObjects(strFilterMark, blnDebuger, strObjectStopDebug)
{

	var blnValidar = false;
	var blnVerificarMarca = false;

	if (blnDebuger == null)
		blnDebuger = false;

	if (strObjectStopDebug == null)
		strObjectStopDebug = "";
	else
		strObjectStopDebug = StrConv(strObjectStopDebug,1)

	if (strFilterMark == null)
		strFilterMark = ""
	else
		strFilterMark = StrConv(strFilterMark,1)
		

	if (blnDebuger)	{ alert('Entro a función Validate Object.\n  Marca: [' + strFilterMark + ']'); }

	try {
		var i=0, j=0; 
		var strFormat;
		var strDecimal;
		var strMark;
		var strDescription;
		var strFocus;
		var intPositionPoint;
		var intPositionComa;
		var blnDebuger2	= false;
		var blnRequired		= false;
		var aElements		= document.body.getElementsByTagName("INPUT");		// Array de Elementos
		var intCantidad		= aElements.length															// Cantidad de elementos a Validar

	
		//-----------------------------------------------------------------------------------
		//-- Matriz de desición !!!!
		//-----------------------------------------------------------------------------------
		var aMatDesicion = new Array();
		aMatDesicion[0] = new Array(		"000",	false);		//	No Requerido		|	No Tiene Marca	|	No Tiene Valor	|	NO		|
		aMatDesicion[1] = new Array(		"001",	true);		//	No Requerido		|	No Tiene Marca	|	Tiene Valor		|	SI		|
		aMatDesicion[2] = new Array(		"010",	false);		//	No Requerido		|	Tiene Marca		|	No Tiene Valor	|	NO		|
		aMatDesicion[3] = new Array(		"011", 	true);		//	No Requerido		|	Tiene Marca		|	Tiene Valor		|	SI		|	Verificar Marca
		aMatDesicion[4] = new Array(		"100",	true);		//	Requerido			|	No Tiene Marca	|	No Tiene Valor	|	SI		|
		aMatDesicion[5] = new Array(		"101",	true);		//	Requerido			|	No Tiene Marca	|	Tiene Valor		|	SI		|
		aMatDesicion[6] = new Array(		"110",	true);		//	Requerido			|	Tiene Marca		|	No Tiene Valor	|	SI		|	Verificar Marca
		aMatDesicion[7] = new Array(		"111",	true);		//	Requerido			|	Tiene Marca		|	TieneValor		|	SI		|	Verificar Marca

		var strResult
		
		for(i=0; i<intCantidad; i++)																	// Recorro todos los INPUT de la página
		{

			if (blnDebuger)	
				if (StrConv(strObjectStopDebug,1) == StrConv(aElements(i).name,1))
					alert("En este objeto para el Debuger....")
				

			blnValidar	= false;
		
			//-------------------------------------------------------------------------
			//-- Unicamente valido los que tienen format
			//-------------------------------------------------------------------------
			if (aElements(i).getAttribute("format")==null)										// format [ DECIMAL | INTEGER ]
			{
				strFormat	= "";
			}
			else
			{	
				strFormat	= StrConv(aElements(i).getAttribute("format"),1);
				blnValidar	= true;
				strResult	= "";

				
				//-------------------------------------------------------------------------
				//-- Es Requerido
				//-------------------------------------------------------------------------
				if (aElements(i).getAttribute("required")==null)	
				{									
					strResult = strResult + "0";															// No Requerido
					blnRequired = false;
					
				}
				else
				{	
					strResult = strResult + "1";															// Requerido
					blnRequired = true;
				}
				
				
				//-------------------------------------------------------------------------
				//-- Veo si esta marcado el control
				//-------------------------------------------------------------------------
				if (aElements(i).getAttribute("mark")==null)
				{
					strResult	= strResult + "0";															// No Marca
					strMark		= "" 
				}
				else					
				{
					strResult	= strResult + "1";															// Marca
					strMark		= StrConv(aElements(i).getAttribute("mark"),1)
				}
				
				
				//----------------------------------------------------------------------------
				//-- Veo si tiene Valor
				//----------------------------------------------------------------------------
				if (aElements(i).value == null || aElements(i).value == "")
				{	
					strResult = strResult + "0";															// No tiene valor
				}
				else
				{	
					strResult = strResult + "1";															// tiene valor
				}


				for(j=0; j<aMatDesicion.length; j++)
				{
					if (aMatDesicion[j][0,0]==strResult)
					{
						blnValidar = aMatDesicion[j][0,1]
						j = aMatDesicion.length
					}
				}	
			

				//----------------------------------------------------------------------------
				//-- Si retorna True, es decir si tengo que validar verifico la marca
				//-- siemrpe y cuando haya entrado la marca a esta función
				//----------------------------------------------------------------------------
				if (blnValidar)
				{
					if (strFilterMark != null)								//-- Si entro una marca a la funcion
					{
						if (strFilterMark == strMark)					//-- Valido la marca de la función con el del campo de texto
						{
							blnValidar = true								//-- VALIDAR CONTROL
						}
						else
						{	
							blnValidar = false								//-- NO VALIDAR CONTROL
						}
					}
				}
			}
			
			
			//----------------------------------------------------------------------------
			//--	Comienzo a validar
			//----------------------------------------------------------------------------
			if (blnValidar)
			{	
				if (blnDebuger)
				{
					if (StrConv(aElements(i).name,1) == strObjectStopDebug)
						{	blnDebuger2 = true;	}
					else
						{	blnDebuger2 = false;	}
				}
					
				if (aElements(i).getAttribute("decimal")==null)										// decimal [ 0 | 1 | 2 | 3 | 4 .....]   Default = (2)
				{	strDecimal = "2"	}
				else
				{	strDecimal	= StrConv(aElements(i).getAttribute("decimal"),1)	}
					
				if (aElements(i).getAttribute("description")==null)									// description [Hola que tal !!!!]
				{	strDescription	= ""	}
				else
				{	strDescription	= aElements(i).getAttribute("description")	}

				if (blnDebuger2)	
				{ 
					alert('Elemento: [' + aElements(i).name + ']\n Requerido: [' + blnRequired + ']\n Validar: [' + blnValidar + ']\n Verificar Marca: ['+ blnVerificarMarca +']\n Format: [' + strFormat + ']\n Decimal: [' + strDecimal + ']\n Description: [' + strDescription + ']\n Mark: [' + strMark + ']\n Valor que posee: [' + aElements(i).value + ']'); 
				}
				
				strFocus	 = "document.all." + aElements(i).name + ".focus()"				// para establecer el foco
				
				//---------------------------------------------------
				//	 Valido Naturales
				//---------------------------------------------------
				if (strFormat == "NATURAL")
				{
					if (blnDebuger2)	{ alert('Elemento: [' + aElements(i).name + ']\n Validando elemento como NATURAL.'); }
					if (!IsNatural(aElements(i).value))
					{
							//alert("El campo [" + aElements(i).name +"] solo acepta valores enteros y positivos !!!");
							alert("El campo " + strDescription + " solo acepta valores enteros y positivos !!!");
							SetFocus(strFocus);
							return (false);	 
						
					}
				}

				//---------------------------------------------------
				//	 Valido Enteros
				//---------------------------------------------------
				if (strFormat == "INTEGER")
				{
					if (blnDebuger2)	{ alert('Elemento: [' + aElements(i).name + ']\n Validando elemento como INTEGER.'); }
					if (!IsInt(aElements(i).value))
					{
						
						alert("El campo " + strDescription + " solo acepta valores Enteros !!!");
						SetFocus(strFocus);
						return (false);	 
						
					}
				}


				//---------------------------------------------------
				//	 Valido Decimales
				//---------------------------------------------------							
				if (strFormat == "DECIMAL" && IsNatural(strDecimal))
				{
	
					if (blnDebuger2)	{ alert('Elemento: [' + aElements(i).name + ']\n Validando elemento como DECIMAL.'); }

					intPositionPoint = InStr(ReverseString(Trim(aElements(i).value)),".")-1		// posicion del punto decimal de izquierda a derecha
					intPositionComa = InStr(ReverseString(Trim(aElements(i).value)),",")-1		// posicion del punto decimal de izquierda a derecha
					if ((intPositionPoint < 0) && (intPositionComa < 0))	// No tiene punto decimal, lo valido como un entero
					{	
						if (!IsInt(aElements(i).value))
						{
								alert("El campo " + strDescription +" solo acepta valores Numéricos !!!");
								SetFocus(strFocus);
								return (false);
							
						}
					}
					else
					{
						if (IsNumber(aElements(i).value))
						{
							if ((intPositionPoint > strDecimal) || (intPositionComa > strDecimal))
							{
								alert("El campo " + strDescription +" solo acepta [" + strDecimal + "] Decimales !!!");
								SetFocus(strFocus);
								return (false);
							}
						}
						else
						{
							alert("El campo " + strDescription + " solo acepta valores Numéricos !!!");
							SetFocus(strFocus);
							return (false);
						}
					}
				}

				//---------------------------------------------------
				//	 Valido Textos
				//---------------------------------------------------
				if (strFormat == "UPPER")	
				{
					if (blnDebuger2)	{ alert('Elemento: [' + aElements(i).name + ']\n Validando elemento como UPPER.'); }
					aElements(i).value	= StrConv(aElements(i).value,1)					// Paso a  Mayúsculas
					if (blnRequired && Trim(aElements(i).value)=="")
					{	
						alert("El campo " + strDescription +" no acepta valores vacíos !!!");
						SetFocus(strFocus);
						return (false);	 
						
					}
				}
				if (strFormat == "LOWER")	
				{
					if (blnDebuger2)	{ alert('Elemento: [' + aElements(i).name + ']\n Validando elemento como LOWER.'); }
					aElements(i).value	= StrConv(aElements(i).value,2)					// Paso a  Mayúsculas
					if (blnRequired && Trim(aElements(i).value)=="")
					{	
							alert("El campo " + strDescription +" no acepta valores vacíos !!!");
							SetFocus(strFocus);
							return (false);
						
					}
				}
				if (strFormat == "PROPER")	
				{
					if (blnDebuger2)	{ alert('Elemento: [' + aElements(i).name + ']\n Validando elemento como PROPER.'); }
					aElements(i).value	= StrConv(aElements(i).value,3)					// Paso a  Mayúsculas
					if (blnRequired && Trim(aElements(i).value)=="")
					{	
						alert("El campo " + strDescription +" no acepta valores vacíos !!!");
						SetFocus(strFocus);
						return (false);	 
						
					}
				}	
				if (strFormat == "" || strFormat == null)	
				{
					if (blnRequired && Trim(aElements(i).value)=="")
					{	
						alert("El campo " + strDescription +" no acepta valores vacíos !!!");
						SetFocus(strFocus);
						return (false);	 
					}
				}
			}
		}
	}
	catch(e)
	{
		window.status="Error: " + e.description + " Source: Validate()";
		return (false);
	}	
	return (true);
}


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function SetFocus(strFocus)
{	try {
		eval(strFocus);
	}	
	catch(e) { 	window.status="Error al intentar poner foco en: " + strFocus; }	
}



function SingleContactGetData(ContactId)
{

	var oXmlHttp=new ActiveXObject ("msxml2.xmlhttp")
		
		oXmlHttp.open ("post","../Contact/SingleContactGetData.asp?ContactId="+ContactId,false );
		
		oXmlHttp.send ();
		return(oXmlHttp.responseXml)

}

function CenterWindowH(screenheight)
{
	var intTop = window.screen.height - screenheight; 
	
	if (intTop<1)
		intTop = 0;
	else
	 intTop = intTop/2;
	
	return (intTop);
}

function CenterWindowW(screenwidth)
{
	var intLeft = window.screen.width - screenwidth;
	
	if (intLeft<1)
	 intLeft = 0;
	else
	 intLeft = intLeft/2;

	return (intLeft);
}


function PopDiv_ondragstart() {
	PopDiv.style.cursor="hand";
}

function PopDiv_ondrag() {
	window.PopDiv.style.posLeft=window.event.clientX 
	window.PopDiv.style.posTop=window.event.clientY 
}

function ReplaceMark(strText)
{
	var strReplace=strText
	strText=Replace(strText,'´´','"')
	strText=Replace(strText,"`","'")
	return(strText)
}

/*----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//	Autor:	Martin Yasse
//	Date:	21/03/2003
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//-- Función para redondear numeros
//			strNumber		=	Numero a redondear
//			strDecimals		=	numero de decimales que acepta
//			Ej. "500.9" = ReFormatDecimal ("500.8556", 1)*/

function ReFormatDecimal (strNumber, strDecimals)
{ //var Arr = strNumber.split(".")
  var Arr = new Array();
  var Decimaln 
  var Decimaln1
  var Decimaln2
  var strFinalNumber
  var strDecimalPart
  var strFirstDecimal
  strNumber = strNumber.toString() //convierte a string
  Arr = strNumber.split(".");
  if (isNaN(strNumber))
	return strNumber

  if (isNaN(strDecimals))
	return strNumber
	
  
  if (Arr.length == 1)
  {strFinalNumber = strNumber
   return strFinalNumber
  }
  else
	{	var n  = parseInt(strDecimals)+1
		var n1  = parseInt(strDecimals)+2
		var n2  = parseInt(strDecimals)+3
		strFinalNumber = Arr[0]
		strFinalNumber = strFinalNumber + "."
		
		strDecimalPart=Arr[1].substr(0,strDecimals)
		strFirstDecimal=strDecimalPart.substr(0,1)

		if (Arr[1].length >= n)
			{ Decimaln = Arr[1].substr(strDecimals,1)
			  if (Decimaln > 5)
				{ strDecimalPart=parseInt(strDecimalPart)+1
				  strFinalNumber = strFinalNumber + strDecimalPart
				}
			  if (Decimaln < 5)
				strFinalNumber = strFinalNumber + strDecimalPart
			  if (Decimaln == 5)
				{ if (Arr[1].length >= n1)
					{Decimaln1 = Arr[1].substr(parseInt(strDecimals)+1,1)
						if (Decimaln1 > 5)
							{	strDecimalPart=parseInt(strDecimalPart)+1
								strFinalNumber = strFinalNumber + strDecimalPart
							}
						if (Decimaln1 < 5)
							strFinalNumber = strFinalNumber + strDecimalPart
						if (Decimaln1 == 5)
						{	if (Arr[1].length >= n2)
								{Decimaln2 = Arr[1].substr(parseInt(strDecimals)+2,1)
									if (Decimaln2 > 5)
									{	strDecimalPart=parseInt(strDecimalPart)+1
										strFinalNumber = strFinalNumber + strDecimalPart
									}
									if (Decimaln2 < 5)
										strFinalNumber = strFinalNumber + strDecimalPart
									if (Decimaln2 == 5)
										strFinalNumber = strFinalNumber + strDecimalPart
								}
							else
								 strFinalNumber = strFinalNumber + strDecimalPart
						}
					}
				   else
					 strFinalNumber = strFinalNumber + strDecimalPart
				}
			}
		else
		{	strFinalNumber = strNumber
			return strFinalNumber
		}
	}
	Arr = strFinalNumber.split(".")
	
	if ((strFirstDecimal == "9") && (Arr[1].substr(0,1) != strFirstDecimal))
	{	strFinalNumber =parseInt(Arr[0])+1 
	}
	
	return strFinalNumber
}


//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//	Autor:	Sebastian Mancini
//	Date:	21/03/2003
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Funcion Que transforma el formato de fecha YMD a formato DMY


function ChangeDateFormat(strDate)
{
if (strDate!="")
	{
	var DatePart = strDate.split(" ");
	var Dte =DatePart[0];
	var Hrs =DatePart[1];

	var pDte= Dte.split("-");

	if (pDte[2]!= undefined)
		{
		if ((Hrs==undefined)||(Hrs==false)||(Hrs==""))
			{		
			strDate= pDte[2] + '/' + pDte[1] + '/' + pDte[0]
			}
		else
			{			
			strDate= pDte[2] + '/' + pDte[1] + '/' + pDte[0] + ' ' + Hrs
			}			
		}
	}
return strDate
	
}
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//	Autor:	Sebastian Bustos
//	Date:	28/05/2004
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Funcion Que transforma el formato de fecha YMD a formato DMY, y permite, además, definir
// el separador de fechas ya sea "-", "/"

function ChangeDateFormatDelimiter(strDate,strDelimiter)
{
  if (strDate!="")
  {
    if ((strDelimiter=="")||(strDelimiter== undefined))
		strDelimiter="-"
	var DatePart = strDate.split(" ");
	var Dte =Trim(DatePart[0]);
	var Hrs =Trim(DatePart[1]);

	var pDte= Dte.split(strDelimiter);
	if (pDte[2]!= undefined)
	{
		//se agrega tambien que sea distinto de false, porque al hacer el Trim
		//si DatePart[1] es undefined, entonces Hrs pasa a ser falso		
		if ((Hrs==undefined)||(Hrs==false))
			strDate= pDte[2] + '/' + pDte[1] + '/' + pDte[0]			
		else
			strDate= pDte[2] + '/' + pDte[1] + '/' + pDte[0] + ' ' + Hrs
	}
  }
  return strDate
}
//////////////////////////////////////////////////////////////////////////////////////
//																					//
//																					//
//////////////////////////////////////////////////////////////////////////////////////

function EncodeURL(sString)
{
	var mString= new String(sString)
	var nReturn
	mString = mString.replace(/&amp;/gi,'%26')
	mString = mString.replace(/#/gi,'%23')
	mString = mString.replace(/&lt;/gi,'%3C')
	mString = mString.replace(/&gt;/gi,'%3E')
	mString = mString.replace(/&/gi,'%26') //es importante que este replace este posterior
										  //a /&amp;/, /&lt/ y /&gt/
	return(mString)
	
}

function UndoEncodeURL(sString)
{
	var mString= new String(sString)
	mString = mString.replace(/%23/gi,'#')
	mString = mString.replace(/%3C/gi,'<')
	mString = mString.replace(/%3E/gi,'>')
	mString = mString.replace(/%26/gi,'&')
	return(mString)
}

//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//	Autor:	Martin Yasse
//  Arreglada por: Sebastian Mancini
//	Date:	21/03/2003
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Funcion SumMinutesToDate, suma o resta minutos (dependiendo del signo del parameto minutos) 
//	a un control de fecha determinado (DateRef) y pone el resultado en el control de fecha (DateWrite)

function SumMinutesToDate(DateRef, minutes, DateWrite)
{
 var dDate = GetDateFull(DateRef);
 
 if (dDate!="")
 {	var Array1 = dDate.split("-");
	var TimePart;

	var vMin = "0";
	var vHour = "0";
	var vDay;
	var vMonth=Array1[1];
	vMonth=parseInt(vMonth)-1;
	var vYear = Array1[0];
 
	var TimePart=Array1[2];
	
	if (TimePart.search(":")!=-1)
	{	var Array2 = TimePart.split(" ");
		vDay=Array2[0];
		var Array3 = Array2[1].split(":");
		vHour=Array3[0];
		vMin=Array3[1];
	}
	else
		vDay=Array1[2];
 
	var vEndDate = new Date(vYear,vMonth,vDay,vHour,vMin);

	var vNewEndDate = vEndDate.getTime() + (minutes * 60 * 1000);
	
	vEndDate.setTime(vNewEndDate);
	
	vYear = vEndDate.getFullYear();
	vMonth = vEndDate.getMonth();
	vDay = vEndDate.getDate();
	
	vHour = vEndDate.getHours();
	vMin = vEndDate.getMinutes();

	var vT
	
		vT = vDay + "/" + parseInt(vMonth+1) + "/" + vYear + " " + vHour + ":" + vMin;
	
	PutDateFull(DateWrite,vT);
 }
}


//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//	Autor:	Horacio Montalvetti
//	Date:	20/05/2003
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Funcion que verifica que la Hora este bien 


function CheckHour (StrHour)
{
var Arr = StrHour.split(":")

if (Arr.length == 2)
{		
	if ((Arr[0]<0)||(Arr[0]>23)||(Arr[1]<0)||(Arr[1]>59))
	{
		return false;		
	}
		
}
else
{
	return false;
}
return true;
}



//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//	Autor:	Horacio Montalvetti
//	Date:	20/05/2003
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Funcion que completa los minutos y horas en la Hora 
// Por ej: 9:5 --> 09:05

function CompleteHour (StrHour)
{

var Arr = StrHour.split(":")
if (Arr.length == 1)
{
	StrHour = StrHour + ":00" 
	var Arr = StrHour.split(":")
}

if ((Arr[0]>=0)||(Arr[0]<=9))
{	
	if (Arr[0].length == 1)
		{
		Arr[0] = "0" + Arr[0]
		}
}
if (Arr[1].length = 0)

if ((Arr[1]>=0) || (Arr[1]<=9))
{		
	if (Arr[1].length == 1)
		{
		Arr[1] = "0" + Arr[1]
		}
}
StrHour = Arr[0] + ":" + Arr[1]
return StrHour;
}


//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//	Autor:	Horacio Montalvetti
//	Date:	21/05/2003
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Funcion que verifica si la primer hora es anterior a la segunda 
// 

function HourChronology (StrHour1, StrHour2)
{
var Arr1 = StrHour1.split(":")
var Arr2 = StrHour2.split(":")

if (Arr1[0] < Arr2[0]) //hora correcta
	{
	return true
	}
else
	{
	if (Arr1[0] == Arr2[0])  //tienen la misma hora
		{
		if (Arr1[1] < Arr2[1])
			{
			return true
			}
		else
			{
			return false
			}
		}
	else
		{
		return false
		}
	}


}



//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//	Autor:	Horacio Montalvetti
//	Date:	11/09/2003
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//Function addToDate(Fecha,Tiempo a incrementar en dias) 
//Funcion que suma o resta dias a una fecha con Formato Universal
// Por ej 2003-08-03  YYYY-MM-DD


var aFinMes  

function SetArray(Ano,Mes,Dia)
{
	if (Mes == 2)
	{
		var isleap = (Ano % 4 == 0 && (Ano % 100 != 0 || Ano % 400 == 0))
		if (Dia>29 || (Dia==29 && !isleap))
			aFinMes = new Array(31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
		else
			aFinMes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
	}

}

function finMes(nMes, nAno){
   return aFinMes[nMes - 1] + (((nMes == 2) && (nAno % 4) == 0)? 1: 0);
  }

   function padNmb(nStr, nLen, sChr){
    var sRes = String(nStr);
    for (var i = 0; i < nLen - String(nStr).length; i++)
     sRes = sChr + sRes;
    return sRes;
   }

   function makeDateFormat(nYear, nMonth,nDay ){
    var sRes;
    sRes = padNmb(nYear, 4, "0") + "-" + padNmb(nMonth, 2, "0") + "-" + padNmb(nDay, 2, "0");    
    return sRes;
   }
   
  function incDate(sFec0){
   var nAno = parseInt(sFec0.substr(0, 4), 10);
   var nMes = parseInt(sFec0.substr(5, 2), 10);
   var nDia = parseInt(sFec0.substr(8, 2), 10);
   nDia += 1;
   if (nDia > finMes(nMes, nAno)){
    nDia = 1;
    nMes += 1;
    if (nMes == 13){
     nMes = 1;
     nAno += 1;
    }
   }
   return makeDateFormat(nAno, nMes, nDia);
  }

  function decDate(sFec0){
   var nAno = parseInt(sFec0.substr(0, 4), 10);
   var nMes = parseInt(sFec0.substr(5, 2), 10);
   var nDia = parseInt(sFec0.substr(8, 2), 10);
   nDia -= 1;
   if (nDia == 0){
    nMes -= 1;
    if (nMes == 0){
     nMes = 12;
     nAno -= 1;
    }
    nDia = finMes(nMes, nAno);
   }
   return makeDateFormat(nDia, nMes, nAno);
  }

  function addToDate(sFec0, sInc){
   var nInc = Math.abs(parseInt(sInc));
   var sRes = sFec0;
   var Ano = parseInt(sFec0.substr(0, 4), 10);
   var Mes = parseInt(sFec0.substr(5, 2), 10);
   var Dia = parseInt(sFec0.substr(8, 2), 10);
   SetArray(Ano,Mes,Dia)
   if (parseInt(sInc) >= 0)
    for (var i = 0; i < nInc; i++) sRes = incDate(sRes);
   else
    for (var i = 0; i < nInc; i++) sRes = decDate(sRes);
   return sRes;
  }



//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//	Autor:	MD
//	Date:	04/09/2003
//----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// Setea El frame de Attachments dependiendo de los parametros y el modo de
//	la operacion

function DoViewAttachments(ObjetoNombre, ObjetoId, openWindow, strOperation)
{
	//Crea un xml con el id de contacto para filtrar el listado del mismo
	var XmlAttachmentFilter
	var oDomDoc=new ActiveXObject("MSXML2.DOMDocument");
	var strXPath = "Attachments/Attachment" ;
	
	oDomDoc.appendChild (oDomDoc.createElement("Attachments"));
	oDomDoc.selectSingleNode("Attachments").appendChild (oDomDoc.createElement("Attachment"));
	oDomDoc.selectSingleNode(strXPath).appendChild (CreateCDataNode("ObjetoNombre",ObjetoNombre));
	oDomDoc.selectSingleNode(strXPath).appendChild (CreateCDataNode("ObjetoId",ObjetoId));
	oDomDoc.selectSingleNode(strXPath).appendChild (CreateCDataNode("EnteredBy",document.all.IdUsuario.value));
	
	XmlAttachmentFilter = oDomDoc.xml;
	XmlAttachmentFilter=EncodeURL(XmlAttachmentFilter)
	
	if (strOperation == 'I') 
	{
		document.all.AttachmentList.src=''
	}
	else
	{
		if (openWindow == null)
			document.all.AttachmentList.src= '../Attachments/Attachments.asp?TrxId='+document.all.TrxId.value+'&xmlAttachment='+XmlAttachmentFilter+'&EnteredBy='+document.all.IdUsuario.value + '&ObjetoNombre=' + ObjetoNombre + '&ObjetoId=' + ObjetoId
		else
			window.open ('../Attachments/Attachments.asp?TrxId='+window.TrxId.value+'&xmlAttachment='+XmlAttachmentFilter+'&EnteredBy='+document.all.IdUsuario.value,'','left=50, top=50, height=245, width=600, status=no, toolbar=no, menubar=no, location=no, scrollbars=no, resizable=no',1);
	}
		
		
	oDomDoc=null;
}


/////////////////////////////////
//Author: Horacio Montalvetti
//
// Descripcion: Convierte una fecha en formato universal a un formato DD/MM/YYY

function DateUniversalToNormal(strDate)
{
	var Retorno	
	var DateFull=strDate.split("-");
	var Dia=DateFull[2];
	var Mes=DateFull[1];
	var Anio=DateFull[0];
	Retorno = Dia + "/" + Mes + "/" + Anio
	return Retorno
}

/////////////////////////////////
//Author: Horacio Montalvetti
//
// Descripcion: Convierte una fecha en formato DD/MM/YYY a un formato universal

function DateNormalToUniversal(strDate)
{
	var Retorno;	
	var DateFull=strDate.split(" ");
	
	DateFull=DateFull[0];
	DateFull=DateFull.split("/");
	
	var Dia=DateFull[0];	
	if ((Dia<=9)&&(Dia.length==1))
		{
		Dia = '0' + Dia
		}
	var Mes=DateFull[1];
	if ((Mes<=9)&&(Mes.length==1))
		{
		Mes = '0' + Mes
		}

	var Anio=DateFull[2];
	Retorno = Anio + "-" + Mes + "-" + Dia
	return Retorno
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//Función: ReFormatString
//***********************************************************************************************************************************************/
//Description: reemplaza las vocales acentuadas por sus correlativas no acentuadas en el  string recibido por parámetro,
//			   y pasa el string a Mayúsculas
//***********************************************************************************************************************************************/
//Author: Sebastián Bustos Argañaraz
//Date:   15/06/2004
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function ReFormatString(txtString)
{
 txtString=txtString.toUpperCase()
 txtString=escape(txtString)
 txtString=txtString.replace(/%C1/g,"A")
 txtString=txtString.replace(/%C9/g,"E")
 txtString=txtString.replace(/%CD/g,"I")
 txtString=txtString.replace(/%D3/g,"O")
 txtString=txtString.replace(/%DA/g,"U")
 txtString=unescape(txtString)
 return txtString
}


//Comienzo de Funciones para la Utilización de Attachments

// Setea El frame de Attachments dependiendo de los parametros y el modo de la operacion
function DoVerArchivos( openWindow, strMode)
{
	//Crea un xml con el id de contacto para filtrar el listado del mismo
	var XmlAttachmentFilter
	var oDomDoc=new ActiveXObject("MSXML2.DOMDocument");
	var strXPath = "Attachments/Attachment" ;
	var ObjetoNombre = document.all.ObjetoNombre.value
	var ObjetoId = document.all.ObjetoId.value
	var Operation = document.all.Operation.value
		
	oDomDoc.appendChild (oDomDoc.createElement("Attachments"));
	oDomDoc.selectSingleNode("Attachments").appendChild (oDomDoc.createElement("Attachment"));
	oDomDoc.selectSingleNode(strXPath).appendChild (CreateCDataNode("ObjetoNombre",ObjetoNombre));
	oDomDoc.selectSingleNode(strXPath).appendChild (CreateCDataNode("ObjetoId",ObjetoId));
	oDomDoc.selectSingleNode(strXPath).appendChild (CreateCDataNode("EnteredBy",document.all.IdUsuario.value));
	
	XmlAttachmentFilter = oDomDoc.xml;
	XmlAttachmentFilter=EncodeURL(XmlAttachmentFilter)
	
	
	if (Operation == 'I' || Operation == 'i') 
	{
		document.all.AttachmentList.src='../attachmentsNew/Insert.asp?TrxId=' + document.all.TrxId.value + '&ObjetoNombre=' + ObjetoNombre + '&Lang=' + document.all.Lang.value + '&LoginId=' + document.all.IdUsuario.value + '&ButtonSubmit=0&NotShowRevisions=' + document.all.NotShowRevisions.value
	}
	else
	{
		if(strMode==null)
			strMode=0
		if (openWindow == null)
			document.all.AttachmentList.src= '../AttachmentsNew/Attachments.asp?TrxId='+document.all.TrxId.value+'&xmlAttachment='+XmlAttachmentFilter+'&EnteredBy='+document.all.IdUsuario.value + '&ObjetoNombre=' + ObjetoNombre + '&ObjetoId=' + ObjetoId + '&Mode=' + strMode + '&NotShowRevisions=' + document.all.NotShowRevisions.value
		else
			window.open ('../AttachmentsNew/Attachments.asp?TrxId='+document.all.TrxId.value+'&xmlAttachment='+XmlAttachmentFilter+'&EnteredBy='+document.all.IdUsuario.value + '&ObjetoNombre=' + ObjetoNombre + '&ObjetoId=' + ObjetoId + '&Mode=' + strMode + '&NotShowRevisions=' + document.all.NotShowRevisions.value,'','left=50, top=50, height=245, width=600, status=no, toolbar=no, menubar=no, location=no, scrollbars=no, resizable=yes',1);
	}
	oDomDoc=null;
}

function DoViewDocAttachmentsWithRevisions( openWindow, strMode)
{
	//Crea un xml con el id de contacto para filtrar el listado del mismo
	var XmlAttachmentFilter
	var oDomDoc=new ActiveXObject("MSXML2.DOMDocument");
	var strXPath = "Attachments/Attachment" ;
	var ObjetoNombre = document.all.ObjetoNombre.value
	var ObjetoId = document.all.ObjetoId.value
	var Operation = document.all.Operation.value
	var ShowAddAttachment = document.all.ShowAddAttachment.value	
	
	oDomDoc.appendChild (oDomDoc.createElement("Attachments"));
	oDomDoc.selectSingleNode("Attachments").appendChild (oDomDoc.createElement("Attachment"));
	oDomDoc.selectSingleNode(strXPath).appendChild (CreateCDataNode("ObjetoNombre",ObjetoNombre));
	oDomDoc.selectSingleNode(strXPath).appendChild (CreateCDataNode("ObjetoId",ObjetoId));
	oDomDoc.selectSingleNode(strXPath).appendChild (CreateCDataNode("EnteredBy",document.all.IdUsuario.value));
	
	XmlAttachmentFilter = oDomDoc.xml;
	XmlAttachmentFilter=EncodeURL(XmlAttachmentFilter)
	
	
	if (Operation == 'I' || Operation == 'i') 
	{
		document.all.AttachmentList.src='../DocAttachmentsNew/Insert.asp?TrxId=' + document.all.TrxId.value + '&ObjetoNombre=' + ObjetoNombre + '&Lang=' + document.all.Lang.value + '&LoginId=' + document.all.IdUsuario.value + '&ButtonSubmit=0&NotShowRevisions=' + document.all.NotShowRevisions.value
	}
	else
	{
		if(strMode==null)
			strMode=0
		if (openWindow == null)
		{
			document.all.AttachmentList.src= '../DocAttachmentsNew/Attachments.asp?Lang='+document.all.Lang.value+'&TrxId='+document.all.TrxId.value+'&LoginId='+document.all.IdUsuario.value+'&xmlAttachment='+XmlAttachmentFilter+'&EnteredBy='+document.all.IdUsuario.value + '&ObjetoNombre=' + ObjetoNombre + '&ObjetoId=' + ObjetoId + '&Mode=' + strMode + '&NotShowRevisions=' + document.all.NotShowRevisions.value + '&ShowAddAttachment=' + ShowAddAttachment
		}	
		else
			window.open ('../DocAttachmentsNew/Attachments.asp?Lang='+document.all.Lang.value+'&TrxId='+window.TrxId.value+'&LoginId='+document.all.IdUsuario.value+'&xmlAttachment='+XmlAttachmentFilter+'&EnteredBy='+document.all.IdUsuario.value,'','left=50, top=50, height=245, width=100%, status=no, toolbar=no, menubar=no, location=no, scrollbars=no, resizable=no',1);
	}
	oDomDoc=null;
}



//-- Para introducir Attachments
//function submitAttachmentListData(pObjetoId, pObjetoNombre)
function submitAttachmentListData()
{
	window.frames['AttachmentList'].document.formAttachments.ObjetoId.value = document.all.ObjetoId.value
	window.frames['AttachmentList'].document.formAttachments.ObjetoNombre.value = document.all.ObjetoNombre.value 

	window.frames['AttachmentList'].DoSubmit();
}

//Fin de Funciones para la Utilización de Attachments

function EncodeQuote(sString)
{
	var mString= new String(sString)
	mString = Replace(mString,"'","´")
	mString = Replace(mString,'"','´´')
	return(mString)
}

function PasoConEnter(){
	///////////////////////////////////
	//Función: Pasa al siguiente control cuando se ingresa un enter
	//Autor: Martin Yasse
	///////////////////////////////////
	try{
		var ctrl
		if (document.all) 
			ctrl = event.srcElement;
		else
			ctrl = event.target;
		
		
		if (ctrl.tagName.toLowerCase() == "input"){ 
			
			//Solo estudiamos el tipo de control si es un input
			if (ctrl.type.toLowerCase() != "hidden" && ctrl.type.toLowerCase() != "submit" && ctrl.type.toLowerCase() != "button")
			{
				// actúa solo para controles que no sean botones
				if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13))
				{
					if (event.keyCode && event.keyCode != 9)
						event.keyCode=9;
				}
			}
		}
		else{
			// si no son inputs también aplica
			if ((event.which && event.which == 13) || (event.keyCode && event.keyCode == 13))
			{
				if (event.keyCode && event.keyCode != 9)
					event.keyCode=9;
			}
		}
			
	}
	catch(e){}
}

function VaciarCombo(strNombreCombo){
	try{
		var objCombo= document.getElementById(strNombreCombo);
		var intLength=objCombo.length
		for (var i=1;i<intLength;i++)
			objCombo.remove(objCombo.options(1).index);
	}
	catch(e){
		alert("Error en función VaciarCombo: " + strNombreCombo);
	}
			
}


//*****************************FUNCIONES PARA EL MANEJO DE ADJUNTOS*********************************//
// Setea El frame de Attachments dependiendo de los parametros y el modo de la operacion

function DoViewAttachmentsWithRevisions( openWindow, strMode)
{
	//Crea un xml con el id de contacto para filtrar el listado del mismo
	var XmlAttachmentFilter
	var oDomDoc=new ActiveXObject("MSXML2.DOMDocument");
	var strXPath = "Attachments/Attachment" ;
	var ObjetoNombre = document.all.ObjetoNombre.value
	var ObjetoId = document.all.ObjetoId.value
	var Operation = document.all.Operation.value
		
	oDomDoc.appendChild (oDomDoc.createElement("Attachments"));
	oDomDoc.selectSingleNode("Attachments").appendChild (oDomDoc.createElement("Attachment"));
	oDomDoc.selectSingleNode(strXPath).appendChild (CreateCDataNode("ObjetoNombre",ObjetoNombre));
	oDomDoc.selectSingleNode(strXPath).appendChild (CreateCDataNode("ObjectKey",""));
	oDomDoc.selectSingleNode(strXPath).appendChild (CreateCDataNode("ObjetoId",ObjetoId));
	oDomDoc.selectSingleNode(strXPath).appendChild (CreateCDataNode("EnteredBy",document.all.IdUsuario.value));
	
	XmlAttachmentFilter = oDomDoc.xml;
	XmlAttachmentFilter=EncodeURL(XmlAttachmentFilter)
	
	
	if (Operation == 'I' || Operation == 'i') 
	{
		document.all.AttachmentList.src='../attachments/Insert.asp?ObjetoNombre=' + ObjetoNombre + '&Lang=' + document.all.Lang.value + '&LoginId=' + document.all.IdUsuario.value + '&ButtonSubmit=0&NotShowRevisions=' + document.all.NotShowRevisions.value
	}
	else
	{
		if(strMode==null)
			strMode=0
		if (openWindow == null)
			document.all.AttachmentList.src= '../Attachments/Attachments.asp?xmlAttachment='+XmlAttachmentFilter+'&EnteredBy='+document.all.IdUsuario.value + '&ObjetoNombre=' + ObjetoNombre + '&ObjetKey=&ObjetoId=' + ObjetoId + '&Mode=' + strMode + '&NotShowRevisions=' + document.all.NotShowRevisions.value
		else
			window.open ('../Attachments/Attachments.asp?xmlAttachment='+XmlAttachmentFilter+'&EnteredBy='+document.all.IdUsuario.value + '&ObjetoNombre=' + ObjetoNombre + '&ObjectKey=&ObjetoId=' + ObjetoId + '&Mode=' + strMode + '&NotShowRevisions=' + document.all.NotShowRevisions.value,'','left=50, top=50, height=245, width=600, status=no, toolbar=no, menubar=no, location=no, scrollbars=no, resizable=yes',1);
	}
	oDomDoc=null;
}
//*****************************FIN DE FUNCIONES PARA EL MANEJO DE ADJUNTOS*********************************//