var peticion;

// Left trim method: strltrim
function strltrim()
{
//Match spaces at beginning of text and replace with a null string
return this.replace(/^\s+/,'');
}
    

// Right trim method: strrtrim
function strrtrim()
{
//Match spaces at end of text and replace with a null string
return this.replace(/\s+$/,'');
}

//Trim method: strtrim

function strtrim()
{
//Match spaces at beginning and end of text and replace
//with null strings
return this.replace(/^\s+/,'').replace(/\s+$/,'');
}
String.prototype.ltrim = strltrim;
String.prototype.rtrim = strrtrim;
String.prototype.trim  = strtrim;

// Manejo de Ventanas

function CloseWindow()
{
    close();
}

function OpenProcura( Page)
{

pop_up = window.open(Page,'','location=no,scrollbars=yes,resizable=no,height=5,width=5,top=0,left=0');

}

function OpenWindow( Page, Winheight, Winwidth )
{

var hauteur_popup = Winheight;
var H = (screen.availHeight - hauteur_popup) / 2;
var largeur_popup = Winwidth;
var L = (screen.availWidth - largeur_popup) / 2;

pop_up = window.open(Page,'','location=no,scrollbars=yes,statusbar=no,resizable=no,height=' + hauteur_popup + ',width=' + largeur_popup + ',top=' + H + ',left=' + L);
pop_up.focus();

}

function OpenWindowEx( Page, Winheight, Winwidth, top, left )
{

var hauteur_popup = Winheight;
var H = top;
var largeur_popup = Winwidth;
var L = left;

pop_up = window.open(Page,'','location=no,scrollbars=yes,resizable=no,height=' + hauteur_popup + ',width=' + largeur_popup + ',top=' + H + ',left=' + L);
pop_up.focus();

}

function OpenWindowCustom( Page, Title, Winheight, Winwidth )
{

var hauteur_popup = Winheight;
var H = (screen.availHeight - hauteur_popup) / 2;
var largeur_popup = Winwidth;
var L = (screen.availWidth - largeur_popup) / 2;

pop_up = window.open(Page,Title,'location=no,scrollbars=no,resizable=no,height=' + hauteur_popup + ',width=' + largeur_popup + ',top=' + H + ',left=' + L);

if(!pop_up)
	alert('Por favor habilite las pop-up para este sitio.\n\r Gracias')
else	
	pop_up.focus();

}

function OpenWindowNotScroll( Page, Winheight, Winwidth )
{

var hauteur_popup = Winheight;
var H = (screen.availHeight - hauteur_popup) / 2;
var largeur_popup = Winwidth;
var L = (screen.availWidth - largeur_popup) / 2;

pop_up = window.open(Page,'','location=no,menubar=0,toolbar=0,statusbar=no,resizable=0,height=' + hauteur_popup + ',width=' + largeur_popup + ',top=' + H + ',left=' + L);
pop_up.focus();

}

// Voltamos uma pagina para atras
function Volver()
{
    history.go(-1);
}

// isEmail (STRING s [, BOOLEAN emptyOK])
// 
// Email address must be of form a@b.c -- in other words:
// * there must be at least one character before the @
// * there must be at least one character before and after the .
// * the characters @ and . are both required
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.
/*
function isEmail (s)
{   if (isEmpty(s)) 
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);
   
    // is s whitespace?
    if (isWhitespace(s)) return false;
    
    // there must be >= 1 character before @, so we
    // start looking at character position 1 
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;

    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }

    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;

    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }

    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
    else return true;
}
*/


// ===================================================================
// Author: Matt Kruse <matt@mattkruse.com>
// WWW: http://www.mattkruse.com/
//
// NOTICE: You may use this code for any purpose, commercial or
// private, without any further permission from the author. You may
// remove this notice from your final code if you wish, however it is
// appreciated by the author if at least my web site address is kept.
//
// You may *NOT* re-distribute this code in any way except through its
// use. That means, you can include it in your product, or your web
// site, or any other form where the code is actually being used. You
// may not put the plain javascript up on your site for download or
// include it in your javascript libraries for download. 
// If you wish to share this code with others, please just point them
// to the URL instead.
// Please DO NOT link directly to my .js files from your site. Copy
// the files to your server and use them there. Thank you.
// ===================================================================

// ------------------------------------------------------------------
// These functions use the same 'format' strings as the 
// java.text.SimpleDateFormat class, with minor exceptions.
// The format string consists of the following abbreviations:
// 
// Field        | Full Form          | Short Form
// -------------+--------------------+-----------------------
// Year         | yyyy (4 digits)    | yy (2 digits), y (2 or 4 digits)
// Month        | MMM (name or abbr.)| MM (2 digits), M (1 or 2 digits)
// Day of Month | dd (2 digits)      | d (1 or 2 digits)
// Day of Week  | EE (name)          | E (abbr)
// Hour (1-12)  | hh (2 digits)      | h (1 or 2 digits)
// Hour (0-23)  | HH (2 digits)      | H (1 or 2 digits)
// Hour (0-11)  | KK (2 digits)      | K (1 or 2 digits)
// Hour (1-24)  | kk (2 digits)      | k (1 or 2 digits)
// Minute       | mm (2 digits)      | m (1 or 2 digits)
// Second       | ss (2 digits)      | s (1 or 2 digits)
// AM/PM        | a                  |
//
// NOTE THE DIFFERENCE BETWEEN MM and mm! Month=MM, not mm!
// Examples:
//  "MMM d, y" matches: January 01, 2000
//                      Dec 1, 1900
//                      Nov 20, 00
//  "M/d/yy"   matches: 01/20/00
//                      9/2/00
//  "MMM dd, yyyy hh:mm:ssa" matches: "January 01, 2000 12:30:45AM"
// ------------------------------------------------------------------

var MONTH_NAMES=new Array('Janeiro','Febereiro','Março','Abril','Maio','Junho','Julho','Agosto','Setembro','Outubro','Novembro','Dezembro','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DAY_NAMES=new Array('Domingo','Segunda','Terça','Quarta','Quinta','Sexta','Sabado','Dom','Seg','Ter','Qua','Qui','Sex','Sab');

var DAY_NAMES = new Array ("Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado")
var	MONTH_NAMES = new Array ("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre")

function LZ(x) {return(x<0||x>9?"":"0")+x}

// ------------------------------------------------------------------
// isDate ( date_string, format_string )
// Returns true if date string matches format of format string and
// is a valid date. Else returns false.
// It is recommended that you trim whitespace around the value before
// passing it to this function, as whitespace is NOT ignored!
// ------------------------------------------------------------------
function isdate(val,format) {
	var date=getDateFromFormat(val,format);
	if (date==0) { return false; }
	return true;
	}

// -------------------------------------------------------------------
// compareDates(date1,date1format,date2,date2format)
//   Compare two date strings to see which is greater.
//   Returns:
//   1 if date1 is greater than date2
//   0 if date2 is greater than date1 of if they are the same
//  -1 if either of the dates is in an invalid format
// -------------------------------------------------------------------
function compareDates(date1,dateformat1,date2,dateformat2) {
	var d1=getDateFromFormat(date1,dateformat1);
	var d2=getDateFromFormat(date2,dateformat2);
	if (d1==0 || d2==0) {
		return -1;
		}
	else if (d1 > d2) {
		return 1;
		}
	return 0;
	}

// ------------------------------------------------------------------
// formatDate (date_object, format)
// Returns a date in the output format specified.
// The format string uses the same abbreviations as in getDateFromFormat()
// ------------------------------------------------------------------
function formatDate(date,format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var E=date.getDay();
	var H=date.getHours();
	var m=date.getMinutes();
	var s=date.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();
	if (y.length < 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MONTH_NAMES[M-1];
	value["D"]=d;
	value["DD"]=LZ(d);
	value["E"]=DAY_NAMES[E+7];
	value["EE"]=DAY_NAMES[E];
	value["H"]=H;
	value["HH"]=LZ(H);
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		if (value[token] != null) { result=result + value[token]; }
		else { result=result + token; }
		}
	return result;
	}
	
// ------------------------------------------------------------------
// Utility functions for parsing in getDateFromFormat()
// ------------------------------------------------------------------
function _isInteger(val) {
	var digits="1234567890";
	for (var i=0; i < val.length; i++) {
		if (digits.indexOf(val.charAt(i))==-1) { return false; }
		}
	return true;
	}
function _getInt(str,i,minlength,maxlength) {
	for (var x=maxlength; x>=minlength; x--) {
		var token=str.substring(i,i+x);
		if (token.length < minlength) { return null; }
		if (_isInteger(token)) { return token; }
		}
	return null;
	}
	
// ------------------------------------------------------------------
// getDateFromFormat( date_string , format_string )
//
// This function takes a date string and a format string. It matches
// If the date string matches the format string, it returns the 
// getTime() of the date. If it does not match, it returns 0.
// ------------------------------------------------------------------
function getDateFromFormat(val,format) {
	val=val+"";
	format=format+"";
	var i_val=0;
	var i_format=0;
	var c="";
	var token="";
	var token2="";
	var x,y;
	var now=new Date();
	var year=now.getYear();
	var month=now.getMonth()+1;
	var date=1;
	var hh=now.getHours();
	var mm=now.getMinutes();
	var ss=now.getSeconds();
	var ampm="";
	
	while (i_format < format.length) {
		// Get next token from format string
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		// Extract contents of value based on format token
		if (token=="yyyy" || token=="yy" || token=="y") {
			if (token=="yyyy") { x=4;y=4; }
			if (token=="yy")   { x=2;y=2; }
			if (token=="y")    { x=2;y=4; }
			year=_getInt(val,i_val,x,y);
			if (year==null) { return 0; }
			i_val += year.length;
			if (year.length==2) {
				if (year > 70) { year=1900+(year-0); }
				else { year=2000+(year-0); }
				}
			}
		else if (token=="MMM"){
			month=0;
			for (var i=0; i<MONTH_NAMES.length; i++) {
				var month_name=MONTH_NAMES[i];
				if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
					month=i+1;
					if (month>12) { month -= 12; }
					i_val += month_name.length;
					break;
					}
				}
			if ((month < 1)||(month>12)){return 0;}
			}
		else if (token=="EE"||token=="E"){
			for (var i=0; i<DAY_NAMES.length; i++) {
				var day_name=DAY_NAMES[i];
				if (val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()) {
					i_val += day_name.length;
					break;
					}
				}
			}
		else if (token=="MM"||token=="M") {
			month=_getInt(val,i_val,token.length,2);
			if(month==null||(month<1)||(month>12)){return 0;}
			i_val+=month.length;}
		else if (token=="dd"||token=="d") {
			date=_getInt(val,i_val,token.length,2);
			if(date==null||(date<1)||(date>31)){return 0;}
			i_val+=date.length;}
		else if (token=="hh"||token=="h") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>12)){return 0;}
			i_val+=hh.length;}
		else if (token=="HH"||token=="H") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>23)){return 0;}
			i_val+=hh.length;}
		else if (token=="KK"||token=="K") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>11)){return 0;}
			i_val+=hh.length;}
		else if (token=="kk"||token=="k") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>24)){return 0;}
			i_val+=hh.length;hh--;}
		else if (token=="mm"||token=="m") {
			mm=_getInt(val,i_val,token.length,2);
			if(mm==null||(mm<0)||(mm>59)){return 0;}
			i_val+=mm.length;}
		else if (token=="ss"||token=="s") {
			ss=_getInt(val,i_val,token.length,2);
			if(ss==null||(ss<0)||(ss>59)){return 0;}
			i_val+=ss.length;}
		else if (token=="a") {
			if (val.substring(i_val,i_val+2).toLowerCase()=="am") {ampm="AM";}
			else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") {ampm="PM";}
			else {return 0;}
			i_val+=2;}
		else {
			if (val.substring(i_val,i_val+token.length)!=token) {return 0;}
			else {i_val+=token.length;}
			}
		}
	// If there are any trailing characters left in the value, it doesn't match
	if (i_val != val.length) { return 0; }
	// Is date valid for month?
	if (month==2) {
		// Check for leap year
		if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year
			if (date > 29){ return false; }
			}
		else { if (date > 28) { return false; } }
		}
	if ((month==4)||(month==6)||(month==9)||(month==11)) {
		if (date > 30) { return false; }
		}
	// Correct hours value
	if (hh<12 && ampm=="PM") { hh=hh-0+12; }
	else if (hh>11 && ampm=="AM") { hh-=12; }
	var newdate=new Date(year,month-1,date,hh,mm,ss);
	return newdate.getTime();
}

// Returns true if character c is a digit 
// (0 .. 9).

function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

// decimal point character differs by language and culture
var decimalPointDelimiter = "."

// isFloat (STRING s [, BOOLEAN emptyOK])
// 
// True if string s is an unsigned floating point (real) number. 
//
// Also returns true for unsigned integers. If you wish
// to distinguish between integers and floating point numbers,
// first call isInteger, then call isFloat.
//
// Does not accept exponential notation.
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.

function isFloat (s)

{
    var i;
    var seenDecimalPoint = false;

    if (isEmpty(s)) 
       if (isFloat.arguments.length == 1) return defaultEmptyOK;
       else return (isFloat.arguments[1] == true);

    if (s == decimalPointDelimiter) return false;

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);

        if ((c == decimalPointDelimiter) && !seenDecimalPoint) seenDecimalPoint = true;
        else if (!isDigit(c)) return false;
    }

    // All characters are numbers.
    return true;
}

function autoField( maxChar,curVal,nextField )
{
     if ( curVal.length >= maxChar )
          nextField.focus();
} // end of autofield

function autotab( original, destination )
{

    if ( original.getAttribute && original.value.length == original.getAttribute("maxlength") )
        destination.focus()

destination.select();

}

// Deija o texto em maiuscula ao sair do campo.
function UpperCaseField( original )
{
  original.value = original.value.toUpperCase();
} // UpperCaseField

// Deija o texto em maiuscula ao sair do campo.
function LowerCaseField( original )
{
  original.value = original.value.toLowerCase();
} // LowerCaseField

function SaltaCampo (campo, prox, tammax, teclapres)
{
   var tecla = teclapres.keyCode;
   vr = campo.value;
   tam = vr.length;
   if (tecla != 0 && tecla != 10 && tecla != 24)
      if (tam == tammax)
          prox.focus();
}

function xautotab(thisval,fname, flen){
 
 var fieldname = eval("document.forms[0]." + fname);

 if(thisval != 9 && thisval != 16){

 if(fieldname.value.length + 1 <= flen){
  fieldname.focus();
 }else{
 
  for(x=0; x<document.forms[0].elements.length; x++){
        if(fieldname.name == document.forms[0].elements[x].name){
                var nextfield = x + 1;
        }
  }

          document.forms[0].elements[nextfield].focus();

 }
 }
}

function SelectOpt( select, property, data )
{
// O parametro select, é a referencia ao objeto Select.
// O parametro property, pode ser tanto "value", quanto "text".
// O parametro data, é o dado a ser procurado.

// Combertimos a string o dado que foi passado.
var datacompar = new String( data );

// Recorremos o Select para verificar se alguma opção tem que ser selecionada.
for (var i = 0; i < select.options.length; i++)
{
    if ( select.options[i][property].toUpperCase().indexOf( datacompar.toUpperCase() ) == 0 )
    {
        select.options[i].selected = true;
        break;
    }
}

}

/*
Funcion para imprimir parte de una página
El parametro nombre DEBE ser un array, y contener el nombre del DIV a imprimir.
*/
function ImprimirSeleccion( nombre )
{

	var especificaciones="top=0, left=0, toolbar=no, location=no, status=no,menubar=no,scrollbars=no, resizable=no, titlebar=no, directories=no, width=1, height=1" 

  ventimp = window.open('x',null,especificaciones) 
  ventimp.blur();
  for ( i =0; i<nombre.length;i++ )
  {
    var ficha = document.getElementById(nombre[i]);
    ventimp.document.write( ficha.innerHTML );
  }
  ventimp.document.close();
  ventimp.blur();
  ventimp.print();
  ventimp.blur();
  ventimp.close();
} 

function limpa_string(S){
	// Deixa so' os digitos no numero
	var Digitos = "0123456789";
	var temp = "";
	var digito = "";

	for (var i=0; i<S.length; i++)	{
		digito = S.charAt(i);
		if (Digitos.indexOf(digito)>=0)	{
			temp=temp+digito	}
	} //for

	return temp
}
// fim da funcao


function valida_CPF(s)	{
	var i;
	s = limpa_string(s);
	var c = s.substr(0,9);
	var dv = s.substr(9,2);
	var d1 = 0;
	for (i = 0; i < 9; i++)
	{
		d1 += c.charAt(i)*(10-i);
	}
        if (d1 == 0) return false;
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1)
	{
		return false;
	}

	d1 *= 2;
	for (i = 0; i < 9; i++)
	{
		d1 += c.charAt(i)*(11-i);
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1)
	{
		return false;
	}
        return true;
}

function valida_CGC(s)
{
	var i;
	s = limpa_string(s);
	var c = s.substr(0,12);
	var dv = s.substr(12,2);
	var d1 = 0;
	for (i = 0; i < 12; i++)
	{
		d1 += c.charAt(11-i)*(2+(i % 8));
	}
        if (d1 == 0) return false;
        d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(0) != d1)
	{
		return false;
	}

	d1 *= 2;
	for (i = 0; i < 12; i++)
	{
		d1 += c.charAt(11-i)*(2+((i+1) % 8));
	}
	d1 = 11 - (d1 % 11);
	if (d1 > 9) d1 = 0;
	if (dv.charAt(1) != d1)
	{
		return false;
	}
	return true;
}

function SoloNros(event)
{
  var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; 

	if ( keyCode == 8 || keyCode == 9 ) 
		return true; 	

	if (keyCode < 45 || keyCode > 57 && ( keyCode != 8 || keyCode != 9 )) 
		return false; 	
	
	return true;	
}

function FormatearNumero(Campo, Decimales, SeparadorMiles)
{
	var numero = new oNumero(Campo.value)
	Campo.value=(numero.formato(Decimales, SeparadorMiles))

}

function textCounter(field, countfield, maxlimit) 
{
	if (field.value.length > maxlimit) // if too long...trim it!
		field.value = field.value.substring(0, maxlimit);
	else 
		countfield.value = maxlimit - field.value.length;
}

function oNumero(numero)
{
	//Propiedades 
	this.valor = numero || 0
	this.dec = -1;
	//Métodos 
	this.formato = numFormat;
	this.ponValor = ponValor;

	//Definición de los métodos 
	function ponValor(cad)
	{
		if (cad =='-' || cad=='+') return
		if (cad.length ==0) return
		if (cad.indexOf('.') >=0)
				this.valor = parseFloat(cad);
		else 
				this.valor = parseInt(cad);
	} 
	
	function numFormat(dec, miles)
	{
		var num = this.valor, signo=3, expr;
		var cad = ""+this.valor;
		var ceros = "", pos, pdec, i;
		for (i=0; i < dec; i++)
		ceros += '0';
		pos = cad.indexOf('.')
		if (pos < 0)
				cad = cad+"."+ceros;
		else
		{
				pdec = cad.length - pos -1;
				if (pdec <= dec)
				{
						for (i=0; i< (dec-pdec); i++)
								cad += '0';
				}
				else
				{
						num = num*Math.pow(10, dec);
						num = Math.round(num);
						num = num/Math.pow(10, dec);
						cad = new String(num);
				}
		}
		
		pos = cad.indexOf('.')
		
		if (pos < 0) pos = cad.lentgh
		
		if (cad.substr(0,1)=='-' || cad.substr(0,1) == '+') 
					 signo = 4;
		if (miles && pos > signo)
			do{
					expr = /([+-]?\d)(\d{3}[\.\,]\d*)/
					cad.match(expr)
					cad=cad.replace(expr, RegExp.$1+','+RegExp.$2)
					}
		while (cad.indexOf(',') > signo)
				if (dec<0) cad = cad.replace(/\./,'')
						return cad;
	}			
}//Fin del objeto oNumero:


function bisiesto(fecha){
    var bisiesto;
    fec_nac = fecha.split("/");

    var dia = fec_nac[0];
    var mes = fec_nac[1];
    var anio = fec_nac[2];
    
    var ndia = Number(dia);
    var nmes = Number(mes);
    var nanio = Number(anio);
    
    if (nanio % 4 !=0 ){
        bisiesto=false;
    }
    else{
        if (nanio %400 == 0){
            bisiesto=true;
        }
        else{
            if (nanio %100 == 0){
                bisiesto=false;
            }
            else{
                bisiesto=true;
            }
        }
    }
    return bisiesto;
}

function comprobarfecha(fecha2){

    fec_nac = fecha2.split("/");

    var dia = fec_nac[0];
    var mes = fec_nac[1];
    var anio = fec_nac[2];

    var ndia = Number(dia);
    var nmes = Number(mes);
    var nanio = Number(anio);
    

    var fecha = new Date();

    var valida;
    if (ndia<0 || ndia>31 || nmes<0 || nmes >12){
        valida=false;
    }
    else{
        if (((mes=="04" || mes=="06" || mes=="09" || mes=="11") && ndia > 30) || (mes =="02" && ndia > 29)){
            valida=false;
        }
        else{
            if ( mes=="02" && ndia>28 && !bisiesto(fecha) ){
                valida=false;
            }
            else{
                if ( ( nanio < fecha.getFullYear()-110 ) || ( nanio > fecha.getFullYear() ) ){
                    valida = false;
                }
                else{
                    valida=true;
                }
            }
        }
    }
    return valida;
}

function FechaValida(fecha) {
    if ((fecha.length != 10 ) || (!comprobarfecha(fecha))){
        //alert("Introduce correctamente la fecha.");
        return false;
    }
		return true;
}

function Maximizar()
{
  self.moveTo(0, 0);    
  self.resizeTo(screen.availWidth, screen.availHeight);    
}

function CargaDocumento(url, Contenedor) 
{   
		Destino = Contenedor;
		
		//document.getElementById(Contenedor).innerHTML = "<div style='width:100%;' align=center><br /><br /><br /><img src='imagenes/loading.gif' border='0' /></div>";
		if (Destino != '')
			document.getElementById(Contenedor).innerHTML = "";
			
		if (window.XMLHttpRequest) 
		{
				peticion = new XMLHttpRequest();
				peticion.onreadystatechange = procesaPeticion;
				peticion.open("GET", url, true);
				peticion.send(null);    
		} 
		else if (window.ActiveXObject) 
		{
				isIE = true;
				try {
					peticion = new ActiveXObject("Msxml2.XMLHTTP");
					} catch (e) {
						try {
							peticion = new ActiveXObject("Microsoft.XMLHTTP");
						} catch (E) {
							peticion = false;
						}
				}
				if (peticion) {
						peticion.onreadystatechange = procesaPeticion;
						peticion.open("GET", url, true);
						peticion.send();
				}
		}
}

function procesaPeticion() {
		if (peticion.readyState == 4) 
		{
				if (peticion.status == 200) 
				{
					muestraDocumento();
				} 
				else 
				{
					if (Destino != '')
						document.getElementById(Destino).innerHTML = "Problemas para cargar el documento solicitado:" + peticion.statusText;
				}
		}
}

function muestraDocumento()
{
	var doc = peticion.responseText;
	if (Destino != '')
		document.getElementById(Destino).innerHTML = doc;
}

/* 
	ocultarFila(1,false)
	ocultarFila(1,true)
*/
function ocultarFila(tabla, num,ver) 
{
  dis= ver ? '' : 'none';
  tab=document.getElementById(tabla);
  tab.getElementsByTagName('tr')[num].style.display=dis;
}

/* 
ocultarColumna(tabla, 1,false) 
ocultarColumna(tabla, 1,true) 
*/
function ocultarColumna(tabla,num,ver) 
{
  dis= ver ? '' : 'none';
  fila=document.getElementById(tabla).getElementsByTagName('tr');
  for(i=0;i<fila.length;i++)
    fila[i].getElementsByTagName('td')[num].style.display=dis;
}


/*
<tr id="row2" onClick="cambiarDisplay('row2')">
*/

function cambiarDisplay(id) {
  if (!document.getElementById) return false;
  fila = document.getElementById(id);
  if (fila.style.display != "none") {
    fila.style.display = "none"; //ocultar fila
  } else {
    fila.style.display = ""; //mostrar fila
  }
}

function PonerFecha(Destino)
{
	date = new Date
	document.getElementById(Destino).innerHTML = formatDate(date,"HH:mm") + " | " + formatDate(date,"EE, DD de MMM del yyyy")
}

function changeInputType(
  oldElm, // a reference to the input element
  iType, // value of the type property: 'text' or 'password'
  iValue, // the default value, set to 'password' in the demo
  blankValue, // true if the value should be empty, false otherwise
  noFocus) {  // set to true if the element should not be given focus
 
  if(!oldElm || !oldElm.parentNode || (iType.length<4) || 
    !document.getElementById || !document.createElement) return;
  var newElm = document.createElement('input');
  newElm.type = iType;
  if(oldElm.name) newElm.name = oldElm.name;
  if(oldElm.id) newElm.id = oldElm.id;
  if(oldElm.className) newElm.className = oldElm.className;
  if(oldElm.size) newElm.size = oldElm.size;
  if(oldElm.tabIndex) newElm.tabIndex = oldElm.tabIndex;
  if(oldElm.accessKey) newElm.accessKey = oldElm.accessKey;
  newElm.onfocus = function(){return function(){
    if(this.hasFocus) return;
    var newElm = changeInputType(this,'password',iValue,
      (this.value.toLowerCase()==iValue.toLowerCase())?true:false);
    if(newElm) newElm.hasFocus=true;
  }}();
  newElm.onblur = function(){return function(){
    if(this.hasFocus)
    if(this.value=='' || (this.value.toLowerCase()==iValue.toLowerCase())) {
      changeInputType(this,'text',iValue,false,true);
    }
  }}();
 // hasFocus is to prevent a loop where onfocus is triggered over and over again
  newElm.hasFocus=false;
  oldElm.parentNode.replaceChild(newElm,oldElm);
  if(!blankValue) newElm.value = iValue;
  if(!noFocus || typeof(noFocus)=='undefined') {
    window.tempElm = newElm;
    setTimeout("tempElm.hasFocus=true;tempElm.focus();",1);
  }
  return newElm;
}

function CargarPagina(Id)
{
	if (Id == 1)
		document.location.href='index.php';
	else if (Id == 2)
		document.location.href='foros.php';
	else if (Id == 3)
		document.location.href='noticias.php';
	else if (Id == 4)
		document.location.href='index.php';
	else if (Id == 5)
		document.location.href='registro.php?Nuevo=1';
	else if (Id == 6)
		document.location.href='contacto.php';
}

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_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_findObj(n, d) { //v4.01
  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 && d.getElementById) x=d.getElementById(n); return x;
}

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];}
}

function CargarForo(Id)
{
	document.location.href='foro.php?Id=' + Id ;
}

function AbrirVentana(Ventana, e)
{
	document.getElementById(Ventana).style.display="";
}

function CerrarVentana(Ventana)
{
	document.getElementById(Ventana).style.display="none";
}

function MostrarVentana(Ventana)
{
	AbrirVentana('Ventana');
}

var Banner_Superior = 0;
function rotador_superior()
{
	var ahora = new Date()
	var segundos = ahora.getSeconds()

	var ad = segundos % totalbanners_superior;
	seleccionado = banners_superior_src[Banner_Superior];
	Banner_Superior++;
	
	if(Banner_Superior>totalbanners_superior-1)
		Banner_Superior = 0;
		
	document.getElementById('banner_superior_img').innerHTML=seleccionado;
}


var Banner_Izquierda = 0;
function rotador_izquierda()
{
	var ahora = new Date()
	var segundos = ahora.getSeconds()

	var ad = segundos % totalbanners_izquierda;
	seleccionado = banners_izquierda_src[Banner_Izquierda];
	
	Banner_Izquierda++;
	
	if(Banner_Izquierda>totalbanners_izquierda-1)
		Banner_Izquierda = 0;
	
	
	document.getElementById('publicidad_izquierda').innerHTML=seleccionado;
}

function rotador_derecha()
{
	var Altura = 0;
	var seleccionado = '';
	
	while (Altura <= Alto_Der)
	{

		if(Altura <= Alto_Der && totalbanners_derecha_pos == totalbanners_derecha )
		{
			totalbanners_derecha_pos = 0;
		}

		for ( i = totalbanners_derecha_pos; i < totalbanners_derecha; i++)
		{
			MyAltura = Altura
			Altura = Altura + banners_derecha_alto[i];

			if( Altura <= Alto_Der)
				seleccionado = seleccionado + banners_derecha_src[i];
	
			if( totalbanners_derecha_pos == i)
				totalbanners_derecha_pos = 0;
/*
			if(Altura > Alto_Der && totalbanners_derecha_pos < totalbanners_derecha )
				totalbanners_derecha_pos = ++i;
			if(Altura > Alto_Der)
				Altura = MyAltura;
	*/		
				
			if(Altura > Alto_Der)
			{
				totalbanners_derecha_pos = i;
				break;
			}
		}
	}
	document.getElementById('publicidad_derecha').innerHTML=seleccionado;
	
}

function Rotador()
{
	rotador_derecha();
	setInterval('rotador_derecha()',10000);

	rotador_superior();
	setInterval('rotador_superior()',20000);

	rotador_izquierda();
	setInterval('rotador_izquierda()',20000);
}

function CargarClick(Id,www)
{
	CargaDocumento('click.php?Id='+Id,'');
	if(www!='#')
		window.open(www);
}

