/*******************/
/*  CROSS-BROWSER  */
/*******************/

function MM_findObj (n, d)	//v4.0
{
	var p, i, x;
	
	if (!d)
		d=document;

	if ( (p=n.indexOf("?"))>0 && parent.frames.length )
	{
		d = parent.frames[n.substring(p+1)].document;
		n = n.substring(0,p);
	}
	if ( !(x=d[n]) && d.all )
		x = d.all[n];

	for ( i=0 ; !x && i<d.forms.length ; i++ )
		x = d.forms[i][n];

	for ( i=0 ; !x && d.layers && i<d.layers.length ; i++ )
		x = MM_findObj(n,d.layers[i].document);

	if ( !x && document.getElementById )
		x = document.getElementById(n);

	return x;
}



/**************/
/*  ROLLOVER  */
/**************/

/* 
	Usage:

	onLoad="MM_preloadImages('home_down.gif')"

	<a href="home.htm" onMouseOut="MM_swapImgRestore()" onMouseOver="MM_swapImage('homepage','','home_down.gif',0)">
		<img name="homepage" border="0" width="100" height="100" src="home_up.gif">
	</a>
*/

function MM_swapImgRestore()	//v3.0
{
	var i, x, a=document.MM_sr;
	for (i=0 ; a && i<a.length && (x=a[i]) && x.oSrc ; i++ )
		x.src=x.oSrc;
}

function MM_preloadImages()	//v3.0
{
	var d=document; 
	if (d.images)
	{
		if (!d.MM_p)
			d.MM_p=new Array();

		var i, j=d.MM_p.length, a=MM_preloadImages.arguments;
		for ( i=0 ; i<a.length ; i++ )
			if ( a[i].indexOf("#") != 0 )
			{
				d.MM_p[j] = new Image;
				d.MM_p[j++].src = a[i];
			}
	}
}

function MM_swapImage()	//v3.0
{
	var i, j=0, x, a=MM_swapImage.arguments;
	document.MM_sr = new Array;
	for ( i=0 ; i<(a.length-2) ; i+=3 )
		if ( (x=MM_findObj(a[i])) != null )
		{
			document.MM_sr[j++]=x;
			if ( !x.oSrc )
				x.oSrc = x.src;
			x.src = a[i+2];
		}
}



/************/
/*  ARRAYS  */
/************/

function AddData ( Tabla , Dato ) {
    Tabla[Tabla.length] = Dato
}

function RemoveData ( Tabla , index ) {
	for ( i = index ; i < Tabla.length ; i++ ) {
		Tabla[i] = Tabla[i+1]
	}
	Tabla.length = Tabla.length - 1
}

function ChangeData ( Tabla , index , Dato ) {
	Tabla[index] = Dato
}



/************/
/*  GENDER  */
/************/

function SetChecked ( gender )
{
	var f = document.forms['FrmSubmit']

	if ( gender == "male" ) {
		if ( f.male.value == 'X' ) {
			f.male.value = ''
		} else {
			f.male.value = 'X'
			f.female.value = ''
		}
	} else {
		if ( f.female.value == 'X' ) {
			f.female.value = ''
		} else {
			f.female.value = 'X'
			f.male.value = ''
		}
	}

}



/*************/
/*  LISTBOX  */
/*************/

function CreateListBox ( Name, ListaLabel, ListaVal, Preselect, OnChg , filas, selmultiple , estilo)
{    
    Fil = ""
    if ( filas > 0 ) Fil = "SIZE=" + filas
    Mul = ""
    if ( selmultiple > 0 ) Mul = " MULTIPLE"
    document.write('<SELECT NAME=' + Name + ' VALUE="" '+ Fil + ' ONCHANGE="' + OnChg + '(this)"' + Mul + ' style="' + estilo + '">')
    if ( ListaLabel != 0 ) {
        for ( i = 0 ; i < ListaVal.length ; i++ ) {
            Sel = ""
            if ( ListaVal[i] == Preselect ) Sel = " SELECTED"
            document.write('<OPTION value="' + ListaVal[i] + '"' + Sel + '>' + ListaLabel[i] + '</OPTION>')
        }
    }
    document.write('</SELECT>')
}


function AddNewOption ( listbox_destino , texto , valor , defaultSel , sel )
{
	//antes se comprueba la existencia
	var isNew = true
	if ( listbox_destino.length > 0 )
	{
		for ( i=0 ; i < listbox_destino.length ; i++ )
		{
			if ( listbox_destino.options[i].value == valor )
			{
				isNew = false
				break
			}
		}
	}

	if ( isNew )	//no existe, entonces se añade
	{
		newoption = new Option( texto , valor , defaultSel , sel )  //new Option([text[, value[, defaultSelected[, selected]]]]) 
		listbox_destino.options[listbox_destino.length] = newoption
	}
	else	//ya existe, entonces se selecciona
	{
		listbox_destino.options[i].selected = true
	}
}


function DeleteOption ( obj_listbox )
{
	// Se construye un array con los valores de las opciones seleccionadas
	seleccionados = new Array()
	for ( i=0 ; i < obj_listbox.length ; i++ )
	{
		if ( obj_listbox.options[i].selected )
			AddData( seleccionados , obj_listbox.options[i].value )
	}

	// Se anulan todas las opciones seleccionadas
	for ( i=0 ; i < obj_listbox.length ; i++ )
	{
		for ( x=0 ; x < seleccionados.length ; x++ )
		{
			if ( obj_listbox.options[i].value == seleccionados[x] )
				obj_listbox.options[i] = null
		}
	}
}


function QuitarSeleccion ( obj_listbox )
{
	for ( i=0 ; i < obj_listbox.length ; i++ )
	{
		obj_listbox.options[i].selected = false
	}
}



/*******************/
/*  SCROLL-STATUS  */
/*******************/

var msg_status = ""

function scroll_status ( seed )
{
  var out = " "
  var c = 1
  lg = msg_status.length + 5

  if ( 150 < seed )
  {
    seed--;
    var cmd = "scroll_status(" + seed + ")"
    timerTwo = window.setTimeout( cmd , 50 )
  }
  else
  {
    if ( seed <= lg && 0 < seed )
    {
      for ( c=0 ; c < seed ; c++ )
      {
        out += " "
      }

      out += msg_status
      seed--
      var cmd = "scroll_status(" + seed + ")"

      window.status = out
      timerTwo = window.setTimeout( cmd , 50 )
    }
    else
    {
      if ( seed <= 0 )
      {
        if ( -seed < msg_status.length )
        {
          out += msg_status.substring( -seed , msg_status.length )
          seed--
          var cmd = "scroll_status(" + seed + ")"
          window.status = out
          timerTwo = window.setTimeout( cmd , 50 )
        }
        else
        {
          window.status = " "
          timerTwo = window.setTimeout( "scroll_status(lg)" , 50 )
        }
      }
    }
  }
}



/*************/
/*  WINDOWS  */
/*************/

/*
   Parámetros:
               url
               target
               w        width
               h        height
               t        top
               l        left
               tb       toolbar
               sb       scrollbar
               r        resizable
               d        directories
               mb       menubar
               s        status
*/

function NuevaVentana ( url , target , w , h , t , l , tb , sb , r , d , mb , s )
{
	params = "width=" + w + ",height=" + h + ",top=" + t + ",left=" + l + ",toolbar=" + tb + ",scrollbars=" + sb + ",resizable=" + r + ",menubar=" + mb + ",status=" + s ;

  	//alert(params)

	var v = window.open( url , target , params ) ;

	v.focus()
}




/****************/
/*  VALIDATION  */
/****************/

function caracterRaro(cadena){

	caracteres = new Array();
	caracteres[0] = "%"  
	caracteres[1] = "?"
	caracteres[2] = ","
	caracteres[3] = "'"
	caracteres[4] = "*"
	caracteres[5] = "#"
	caracteres[6] = "$"
	caracteres[7] = "@"
	caracteres[8] = "!"
	caracteres[9] = "\\"
	caracteres[10] = "\""
	caracteres[11] = "^"
	caracteres[12] = ":"
	caracteres[13] = ";"
	caracteres[14] = "/"
	caracteres[15] = "&"
	caracteres[16] = "<"
	caracteres[17] = ">"
	caracteres[18] = "["
	caracteres[19] = "]"
	caracteres[20] = "{"
	caracteres[21] = "}"
	caracteres[22] = "á"
	caracteres[23] = "é"
	caracteres[24] = "í"
	caracteres[25] = "ó"
	caracteres[26] = "ú"
	caracteres[27] = "Á"
	caracteres[28] = "É"
	caracteres[29] = "Í"
	caracteres[30] = "Ó"
	caracteres[31] = "Ú"
	caracteres[32] = "ñ"
	caracteres[33] = "Ñ"

	for (i=0;i<cadena.length;i++){ 
        	for (j=0;j<caracteres.length;j++){
                	if (cadena.charAt(i) == caracteres[j]) return true
        	}
	}
	return false
}

function caracterProhibido(cadena){

	caracteres = new Array();
	caracteres[0] = "%"  
	caracteres[1] = "?"
	caracteres[2] = "'"
	caracteres[3] = "$"
	caracteres[4] = "!"
	caracteres[5] = "\\"
	caracteres[6] = "\""
	caracteres[7] = "^"
	caracteres[8] = ":"
	caracteres[9] = ";"
	caracteres[10] = "/"
	caracteres[11] = "<"
	caracteres[12] = ">"
	caracteres[13] = "["
	caracteres[14] = "]"
	caracteres[15] = "{"
	caracteres[16] = "}"

	for (i=0;i<cadena.length;i++){ 
        	for (j=0;j<caracteres.length;j++){
                	if (cadena.charAt(i) == caracteres[j]) return true
        	}
	}
	return false
}



/***********/
/*  EMAIL  */
/***********/

function emailCheck (emailStr) {
    	
  /* Verificar si el email tiene el formato user@dominio. */
  var emailPat=/^(.+)@(.+)$/ 
  /* Verificar la existencia de caracteres. ( ) < > @ , ; : \ " . [ ] */
  var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]" 
  /* Verifica los caracteres que son válidos en una dirección de email */
  var validChars="\[^\\s" + specialChars + "\]" 
  var quotedUser="(\"[^\"]*\")" 
  /* Verifica si la dirección de email está representada con una dirección IP Válida */ 
  var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/

  /* Verificar caracteres inválidos */ 
  var atom=validChars + '+'
  var word="(" + atom + "|" + quotedUser + ")"
  var userPat=new RegExp("^" + word + "(\\." + word + ")*$") /* domain, as opposed to ipDomainPat, shown above. */
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

  var matchArray=emailStr.match(emailPat)
  if (matchArray==null) {
	mailvalido=1;
	return false
  }
  var user=matchArray[1]
  var domain=matchArray[2]

  // Si el user "user" es valido 
  if (user.match(userPat)==null) {
  // Si no
	mailvalido=1;
	return false
  }

  /* Si la dirección IP es válida */
  var IPArray=domain.match(ipDomainPat)
  if (IPArray!=null) {
	for (var i=1;i<=4;i++) {
		if (IPArray[i]>255) {
			mailvalido=1;
			return false
		}
	}
	return true
  }
  
  var domainArray=domain.match(domainPat)
  if (domainArray==null) {
	mailvalido=1;
	return false
  }

  var atomPat=new RegExp(atom,"g")
  var domArr=domain.match(atomPat)
  var len=domArr.length
  if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) {
	mailvalido=1;
	return false
  }

  if (len<2) {
	var errStr="no email"
	mailvalido=1;
	return false
  }

  // La dirección de email ingresada es Válida
  return true;

}



/*************/
/*  COOKIES  */
/*************/

function getCookie ( c_name )
{
  if ( document.cookie.length > 0 )
  {
    c_start = document.cookie.indexOf( c_name + "=" )
    if ( c_start != -1 )
    {
      c_start = c_start + c_name.length + 1 
      c_end = document.cookie.indexOf( ";" , c_start )
      if ( c_end == -1 )
        c_end = document.cookie.length

      return unescape( document.cookie.substring(c_start,c_end) )
    }
  }
  return null
}

function setCookie ( c_name , value , expiredays )
{
  var exdate = new Date()
  exdate.setDate( exdate.getDate() + expiredays )
  document.cookie = c_name + "=" + escape(value) + ((expiredays==null)? "" : "; expires="+exdate)
}

