/********************* COUNTRIES DEFINITIONS ************************/
var provinces = new Array();
//Fill PROVINCE values
provinces[ 0 ] = new Array('0', 'A CORUÑA');
provinces[ 1 ] = new Array('1', 'ALAVA');
provinces[ 2 ] = new Array('2', 'ALBACETE');
provinces[ 3 ] = new Array('3', 'ALICANTE');
provinces[ 4 ] = new Array('4', 'ALMERIA');
provinces[ 5 ] = new Array('5', 'ASTURIAS');
provinces[ 6 ] = new Array('6', 'AVILA');
provinces[ 7 ] = new Array('7', 'BADAJOZ');
provinces[ 8 ] = new Array('8', 'BARCELONA');
provinces[ 9 ] = new Array('9', 'BURGOS');
provinces[ 10 ] = new Array('10', 'CACERES');
provinces[ 11 ] = new Array('11', 'CADIZ');
provinces[ 12 ] = new Array('12', 'CANTABRIA');
provinces[ 13 ] = new Array('13', 'CASTELLON DE LA PLANA');
provinces[ 14 ] = new Array('14', 'CEUTA');
provinces[ 15 ] = new Array('15', 'CIUDAD REAL');
provinces[ 16 ] = new Array('16', 'CORDOBA');
provinces[ 17 ] = new Array('17', 'CUENCA');
provinces[ 18 ] = new Array('18', 'GIRONA');
provinces[ 19 ] = new Array('19', 'GRANADA');
provinces[ 20 ] = new Array('20', 'GUADALAJARA');
provinces[ 21 ] = new Array('21', 'GUIPUZCOA');
provinces[ 22 ] = new Array('22', 'HUELVA');
provinces[ 23 ] = new Array('23', 'HUESCA');
provinces[ 24 ] = new Array('24', 'ILLES BALEARS');
provinces[ 25 ] = new Array('25', 'JAEN');
provinces[ 26 ] = new Array('26', 'LA RIOJA');
provinces[ 27 ] = new Array('27', 'LAS PALMAS');
provinces[ 28 ] = new Array('28', 'LEON');
provinces[ 29 ] = new Array('29', 'LLEIDA');
provinces[ 30 ] = new Array('30', 'LUGO');
provinces[ 31 ] = new Array('31', 'MADRID');
provinces[ 32 ] = new Array('32', 'MALAGA');
provinces[ 33 ] = new Array('33', 'MELILLA');
provinces[ 34 ] = new Array('34', 'MURCIA');
provinces[ 35 ] = new Array('35', 'NAVARRA');
provinces[ 36 ] = new Array('36', 'ORENSE');
provinces[ 37 ] = new Array('37', 'PALENCIA');
provinces[ 38 ] = new Array('38', 'PONTEVEDRA');
provinces[ 39 ] = new Array('39', 'SALAMANCA');
provinces[ 40 ] = new Array('40', 'STA. CRUZ DE TENERIFE');
provinces[ 41 ] = new Array('41', 'SEGOVIA');
provinces[ 42 ] = new Array('42', 'SEVILLA');
provinces[ 43 ] = new Array('43', 'SORIA');
provinces[ 44 ] = new Array('44', 'TARRAGONA');
provinces[ 45 ] = new Array('45', 'TERUEL');
provinces[ 46 ] = new Array('46', 'TOLEDO');
provinces[ 47 ] = new Array('47', 'VALENCIA');
provinces[ 48 ] = new Array('48', 'VALLADOLID');
provinces[ 49 ] = new Array('49', 'VIZCAYA');
provinces[ 50 ] = new Array('50', 'ZAMORA');
provinces[ 51 ] = new Array('51', 'ZARAGOZA');

var countries = new Array();
//Fill COUNTRY values
countries[ 0 ] = new Array('af', 'Afganistán');
countries[ 1 ] = new Array('al', 'Albania');
countries[ 2 ] = new Array('de', 'Alemania');
countries[ 3 ] = new Array('ad', 'Andorra');
countries[ 4 ] = new Array('ao', 'Angola');
countries[ 5 ] = new Array('ai', 'Anguila');
countries[ 6 ] = new Array('aq', 'Antártida');
countries[ 7 ] = new Array('ag', 'Antigua y Barbuda');
countries[ 8 ] = new Array('an', 'Antillas Holandesas');
countries[ 9 ] = new Array('sa', 'Arabia Saudí');
countries[ 10 ] = new Array('dz', 'Argelia');
countries[ 11 ] = new Array('ar', 'Argentina');
countries[ 12 ] = new Array('am', 'Armenia');
countries[ 13 ] = new Array('aw', 'Aruba');
countries[ 14 ] = new Array('au', 'Australia');
countries[ 15 ] = new Array('at', 'Austria');
countries[ 16 ] = new Array('az', 'Azerbaiyán');
countries[ 17 ] = new Array('bs', 'Bahamas');
countries[ 18 ] = new Array('bh', 'Bahréin');
countries[ 19 ] = new Array('bd', 'Bangladesh');
countries[ 20 ] = new Array('bb', 'Barbados');
countries[ 21 ] = new Array('be', 'Bélgica');
countries[ 22 ] = new Array('bz', 'Belice');
countries[ 23 ] = new Array('bj', 'Benín');
countries[ 24 ] = new Array('bm', 'Bermuda');
countries[ 25 ] = new Array('by', 'Bielorrusia');
countries[ 26 ] = new Array('bo', 'Bolivia');
countries[ 27 ] = new Array('ba', 'Bosnia-Herzegovina');
countries[ 28 ] = new Array('bw', 'Botsuana');
countries[ 29 ] = new Array('br', 'Brasil');
countries[ 30 ] = new Array('bn', 'Brunei');
countries[ 31 ] = new Array('bg', 'Bulgaria');
countries[ 32 ] = new Array('bf', 'Burkina Faso');
countries[ 33 ] = new Array('bi', 'Burundi');
countries[ 34 ] = new Array('bt', 'Bután');
countries[ 35 ] = new Array('cv', 'Cabo Verde');
countries[ 36 ] = new Array('kh', 'Camboya');
countries[ 37 ] = new Array('cm', 'Camerún');
countries[ 38 ] = new Array('ca', 'Canadá');
countries[ 39 ] = new Array('td', 'Chad');
countries[ 40 ] = new Array('cl', 'Chile');
countries[ 41 ] = new Array('cn', 'China');
countries[ 42 ] = new Array('cy', 'Chipre');
countries[ 43 ] = new Array('va', 'Ciudad del Vaticano');
countries[ 44 ] = new Array('co', 'Colombia');
countries[ 45 ] = new Array('km', 'Comores');
countries[ 46 ] = new Array('cg', 'Congo');
countries[ 47 ] = new Array('kp', 'Corea del Norte');
countries[ 48 ] = new Array('kr', 'Corea del Sur');
countries[ 49 ] = new Array('ci', 'Costa de Marfil');
countries[ 50 ] = new Array('cr', 'Costa Rica');
countries[ 51 ] = new Array('hr', 'Croacia');
countries[ 52 ] = new Array('cu', 'Cuba');
countries[ 53 ] = new Array('dk', 'Dinamarca');
countries[ 54 ] = new Array('dm', 'Dominica');
countries[ 55 ] = new Array('ec', 'Ecuador');
countries[ 56 ] = new Array('us', 'EE. UU.');
countries[ 57 ] = new Array('eg', 'Egipto');
countries[ 58 ] = new Array('sv', 'El Salvador');
countries[ 59 ] = new Array('ae', 'Emiratos Árabes Unidos');
countries[ 60 ] = new Array('er', 'Eritrea');
countries[ 61 ] = new Array('sk', 'Eslovaquia');
countries[ 62 ] = new Array('si', 'Eslovenia');
countries[ 63 ] = new Array('es', 'España');
countries[ 64 ] = new Array('fm', 'Estados Federados de Micronesi');
countries[ 65 ] = new Array('ee', 'Estonia');
countries[ 66 ] = new Array('et', 'Etiopía');
countries[ 67 ] = new Array('fj', 'Fiji');
countries[ 68 ] = new Array('ph', 'Filipinas');
countries[ 69 ] = new Array('fi', 'Finlandia');
countries[ 70 ] = new Array('fr', 'Francia');
countries[ 71 ] = new Array('ga', 'Gabón');
countries[ 72 ] = new Array('gm', 'Gambia');
countries[ 73 ] = new Array('ge', 'Georgia');
countries[ 74 ] = new Array('gh', 'Ghana');
countries[ 75 ] = new Array('gi', 'Gibraltar');
countries[ 76 ] = new Array('gd', 'Granada');
countries[ 77 ] = new Array('gr', 'Grecia');
countries[ 78 ] = new Array('gl', 'Groenlandia');
countries[ 79 ] = new Array('gp', 'Guadalupe');
countries[ 80 ] = new Array('gu', 'Guam');
countries[ 81 ] = new Array('gt', 'Guatemala');
countries[ 82 ] = new Array('gf', 'Guayana Francesa');
countries[ 83 ] = new Array('gn', 'Guinea');
countries[ 84 ] = new Array('gq', 'Guinea Ecuatorial');
countries[ 85 ] = new Array('gw', 'Guinea-Bissau');
countries[ 86 ] = new Array('gy', 'Guyana');
countries[ 87 ] = new Array('ht', 'Haití');
countries[ 88 ] = new Array('hn', 'Honduras');
countries[ 89 ] = new Array('hk', 'Hong Kong');
countries[ 90 ] = new Array('hu', 'Hungría');
countries[ 91 ] = new Array('in', 'India');
countries[ 92 ] = new Array('id', 'Indonesia');
countries[ 93 ] = new Array('iq', 'Irak');
countries[ 94 ] = new Array('ir', 'Irán');
countries[ 95 ] = new Array('ie', 'Irlanda');
countries[ 96 ] = new Array('bv', 'Isla Buvet');
countries[ 97 ] = new Array('cx', 'Isla Navidad');
countries[ 98 ] = new Array('nf', 'Isla Norfolk');
countries[ 99 ] = new Array('pn', 'Isla Pitcairn');
countries[ 100 ] = new Array('is', 'Islandia');
countries[ 101 ] = new Array('ky', 'Islas Caimán');
countries[ 102 ] = new Array('cc', 'Islas Cocos');
countries[ 103 ] = new Array('ck', 'Islas Cook');
countries[ 104 ] = new Array('fk', 'Islas Falkland');
countries[ 105 ] = new Array('fo', 'Islas Feroe');
countries[ 106 ] = new Array('gs', 'Islas Georgia y Sándwich del S');
countries[ 107 ] = new Array('hm', 'Islas Heard y McDonald');
countries[ 108 ] = new Array('mp', 'Islas Marianas Septentrionales');
countries[ 109 ] = new Array('mh', 'Islas Marshall');
countries[ 110 ] = new Array('um', 'Islas Menores de Estados Unido');
countries[ 111 ] = new Array('sj', 'Islas Svalbard y Jan Mayen');
countries[ 112 ] = new Array('tc', 'Islas Turcas y Caicos');
countries[ 113 ] = new Array('vi', 'Islas Vírgenes');
countries[ 114 ] = new Array('vg', 'Islas Vírgenes Británicas');
countries[ 115 ] = new Array('wf', 'Islas Wallis y Futuna');
countries[ 116 ] = new Array('il', 'Israel');
countries[ 117 ] = new Array('it', 'Italia');
countries[ 118 ] = new Array('jm', 'Jamaica');
countries[ 119 ] = new Array('jp', 'Japón');
countries[ 120 ] = new Array('jo', 'Jordania');
countries[ 121 ] = new Array('kz', 'Kazajstán');
countries[ 122 ] = new Array('ke', 'Kenya');
countries[ 123 ] = new Array('kg', 'Kirguistán');
countries[ 124 ] = new Array('ki', 'Kiribati');
countries[ 125 ] = new Array('kw', 'Kuwait');
countries[ 126 ] = new Array('la', 'Laos');
countries[ 127 ] = new Array('ls', 'Lesotho');
countries[ 128 ] = new Array('lv', 'Letonia');
countries[ 129 ] = new Array('lb', 'Líbano');
countries[ 130 ] = new Array('lr', 'Liberia');
countries[ 131 ] = new Array('ly', 'Libia');
countries[ 132 ] = new Array('li', 'Liechtenstein');
countries[ 133 ] = new Array('lt', 'Lituania');
countries[ 134 ] = new Array('lu', 'Luxemburgo');
countries[ 135 ] = new Array('mo', 'Macao');
countries[ 136 ] = new Array('mk', 'Macedonia');
countries[ 137 ] = new Array('mg', 'Madagascar');
countries[ 138 ] = new Array('my', 'Malasia');
countries[ 139 ] = new Array('mw', 'Malawi');
countries[ 140 ] = new Array('mv', 'Maldivas');
countries[ 141 ] = new Array('ml', 'Malí');
countries[ 142 ] = new Array('mt', 'Malta');
countries[ 143 ] = new Array('yt', 'Maore');
countries[ 144 ] = new Array('ma', 'Marruecos');
countries[ 145 ] = new Array('mq', 'Martinica');
countries[ 146 ] = new Array('mu', 'Mauricio');
countries[ 147 ] = new Array('mr', 'Mauritania');
countries[ 148 ] = new Array('mx', 'México');
countries[ 149 ] = new Array('md', 'Moldova');
countries[ 150 ] = new Array('mc', 'Mónaco');
countries[ 151 ] = new Array('mn', 'Mongolia');
countries[ 152 ] = new Array('ms', 'Montserrat');
countries[ 153 ] = new Array('mz', 'Mozambique');
countries[ 154 ] = new Array('mm', 'Myanmar');
countries[ 155 ] = new Array('na', 'Namibia');
countries[ 156 ] = new Array('nr', 'Nauru');
countries[ 157 ] = new Array('np', 'Nepal');
countries[ 158 ] = new Array('ni', 'Nicaragua');
countries[ 159 ] = new Array('ne', 'Níger');
countries[ 160 ] = new Array('ng', 'Nigeria');
countries[ 161 ] = new Array('nu', 'Niue');
countries[ 162 ] = new Array('no', 'Noruega');
countries[ 163 ] = new Array('nc', 'Nueva Caledonia');
countries[ 164 ] = new Array('nz', 'Nueva Zelanda');
countries[ 165 ] = new Array('om', 'Omán');
countries[ 166 ] = new Array('nl', 'Países Bajos');
countries[ 167 ] = new Array('pk', 'Pakistán');
countries[ 168 ] = new Array('pw', 'Paláu');
countries[ 169 ] = new Array('pa', 'Panamá');
countries[ 170 ] = new Array('pg', 'Papúa Nueva Guinea');
countries[ 171 ] = new Array('py', 'Paraguay');
countries[ 172 ] = new Array('pe', 'Perú');
countries[ 173 ] = new Array('pf', 'Polinesia Francesa');
countries[ 174 ] = new Array('pl', 'Polonia');
countries[ 175 ] = new Array('pt', 'Portugal');
countries[ 176 ] = new Array('pr', 'Puerto Rico');
countries[ 177 ] = new Array('qa', 'Qatar');
countries[ 178 ] = new Array('uk', 'Reino Unido');
countries[ 179 ] = new Array('cf', 'República Centroafricana');
countries[ 180 ] = new Array('cz', 'República Checa');
countries[ 181 ] = new Array('do', 'República Dominicana');
countries[ 182 ] = new Array('re', 'Reunión');
countries[ 183 ] = new Array('rw', 'Ruanda');
countries[ 184 ] = new Array('ro', 'Rumania');
countries[ 185 ] = new Array('ru', 'Rusia');
countries[ 186 ] = new Array('eh', 'Sáhara Occidental');
countries[ 187 ] = new Array('ws', 'Samoa');
countries[ 188 ] = new Array('as', 'Samoa Americana');
countries[ 189 ] = new Array('kn', 'San Cristóbal y Nieves');
countries[ 190 ] = new Array('sm', 'San Marino');
countries[ 191 ] = new Array('pm', 'San Pedro y Miquelon');
countries[ 192 ] = new Array('vc', 'San Vicente y las Granadinas');
countries[ 193 ] = new Array('sh', 'Santa Elena');
countries[ 194 ] = new Array('lc', 'Santa Lucía');
countries[ 195 ] = new Array('st', 'Santo Tomé y Príncipe');
countries[ 196 ] = new Array('sn', 'Senegal');
countries[ 197 ] = new Array('sc', 'Seychelles');
countries[ 198 ] = new Array('sl', 'Sierra Leona');
countries[ 199 ] = new Array('sg', 'Singapur');
countries[ 200 ] = new Array('sy', 'Siria');
countries[ 201 ] = new Array('so', 'Somalia');
countries[ 202 ] = new Array('lk', 'Sri Lanka');
countries[ 203 ] = new Array('sz', 'Suazilandia');
countries[ 204 ] = new Array('za', 'Sudáfrica');
countries[ 205 ] = new Array('sd', 'Sudán');
countries[ 206 ] = new Array('se', 'Suecia');
countries[ 207 ] = new Array('ch', 'Suiza');
countries[ 208 ] = new Array('sr', 'Surinam');
countries[ 209 ] = new Array('th', 'Tailandia');
countries[ 210 ] = new Array('tw', 'Taiwán');
countries[ 211 ] = new Array('tz', 'Tanzania');
countries[ 212 ] = new Array('tj', 'Tayikistán');
countries[ 213 ] = new Array('io', 'Territorios británicos del océ');
countries[ 214 ] = new Array('tf', 'Territorios Franceses Meridion');
countries[ 215 ] = new Array('tp', 'Timor Oriental');
countries[ 216 ] = new Array('tg', 'Togo');
countries[ 217 ] = new Array('tk', 'Tokelau');
countries[ 218 ] = new Array('to', 'Tonga');
countries[ 219 ] = new Array('tt', 'Trinidad y Tobago');
countries[ 220 ] = new Array('tn', 'Túnez');
countries[ 221 ] = new Array('tm', 'Turkmenistán');
countries[ 222 ] = new Array('tr', 'Turquía');
countries[ 223 ] = new Array('tv', 'Tuvalu');
countries[ 224 ] = new Array('ua', 'Ucrania');
countries[ 225 ] = new Array('ug', 'Uganda');
countries[ 226 ] = new Array('uy', 'Uruguay');
countries[ 227 ] = new Array('uz', 'Uzbekistán');
countries[ 228 ] = new Array('vu', 'Vanuatu');
countries[ 229 ] = new Array('ve', 'Venezuela');
countries[ 230 ] = new Array('vn', 'Vietnam');
countries[ 231 ] = new Array('ye', 'Yemen');
countries[ 232 ] = new Array('dj', 'Yibuti');
countries[ 233 ] = new Array('yu', 'Yugoslavia (antigua)');
countries[ 234 ] = new Array('zr', 'Zaire');
countries[ 235 ] = new Array('zm', 'Zambia');
countries[ 236 ] = new Array('zw', 'Zimbabue');

/**************** WINDOWS ************************/
function openPopup ( url, width, height ){
	window.open( url, "_blank", "width=" +width + ",height=" + height + ",location=no,menubar=no,resizable=yes,statusbar=no,toolbar=no,scrollbars=yes");
	return false;
}

function targetopener(mylink, closeme, closeonly){
	if ( !(window.focus && window.opener) ) {
		return true;
	}
	window.opener.focus();
	if (! closeonly) {
		window.opener.location.href=mylink;
	}
	if (closeme) {
		window.close();
	}
	return false;
}

function enlargeImage(url){
	return openPopup(url, '400', '600');
}

/************** HTML SELECT OPERATIONS **********/
function fillSelect( oSelect, aData ) {
	clearSelect( oSelect );
	if ( aData == null || aData.length == 0 ) {		
		var newOption = document.createElement( "option" );
		newOption.value = "empty";
		newOption.text  = "-- Seleccione --";
		oSelect.options.add( newOption, 1 );
	} else {
		for( var i = 0; i < aData.length; i++ ) {
			//Get data from aData array object
			var optionData  = aData[ i ];
			if ( typeof( optionData ) != "object" ) {
				var errMsg = "Parameter 'aData' type is not object (" + typeof( optionData ) + ")";
				alert( errMsg );
			}
			var newOption = document.createElement( "option" );
			newOption.value = optionData[ 0 ];
			newOption.text  = optionData[ 1 ];
			oSelect.options.add( newOption, i + 1 );
		}//for
	}//if-else
};

function clearSelect( oSelect ){
	//First we clear select
	for ( var i = oSelect.options.length; i >= 0 ; i-- ) {
		oSelect.options[ i ] = null;
	}//for	
}

function selectAll( oSelect ){
	for ( var i = 0; i< oSelect.options.length; i++ ) {
		oSelect.options[ i ].selected= true;
	}//for	
}

function setValueSelected( oSelect, sValue ) {
	var found = false;
	var i = 0;	
	while( !found && i < oSelect.options.length ) {
		if ( oSelect.options[ i ].value == sValue ) {
			oSelect.options[ i ].selected = true;
			found = true;
		}
		i++;
	}//while
	return found;	
}

/**
 * Gets the option currently Value selected
 */
function getValueSelected ( oSelect ){
	var i = 0;
	var found = false;	
	var result = null;
	while( !found && i < oSelect.options.length ) {
		if ( oSelect.options[ i ].selected ) {
			result = oSelect.options[ i ].value;
			found = true;
		}
		i++;
	}//while
	return result;
}

/**
 * Gets the options currently Text selected
 */
function getTextsSelected ( oSelect ){
	var i = 0;
	var result = new Array();
	while( i < oSelect.options.length ) {
		if ( oSelect.options[ i ].selected ) {
			result.push( oSelect.options[ i ].text );
		}
		i++;
	}//while
	return result;
}

/**
 * Gets the options currently Value selected
 */
function getValuesSelected ( oSelect ){
	var i = 0;
	var result = new Array();
	while( i < oSelect.options.length ) {
		if ( oSelect.options[ i ].selected ) {
			result.push( oSelect.options[ i ].value );
		}
		i++;
	}//while
	return result;
}

/**
 * Returns true if Exists value in the oSelect 
 */
function selectContains ( oSelect, value ){
	var i = 0;
	var found = false;	
	while( !found && i < oSelect.options.length ) {
		if ( oSelect.options[ i ].value == value ) {
			found = true;
		}
		i++;
	}//while
	return found;
}

/**
 * Add value in the oSelect 
 */
function selectAdd ( oSelect, value, text ){
	if ( value != null ) {		
		var newOption = document.createElement( "option" );
		newOption.value = value;
		if ( text != null ){
			newOption.text  = text;
		} else {
			newOption.text  = value;
		}
		oSelect.options.add( newOption, oSelect.options.length );
	}
}

/**
 * Remove value in the oSelect 
 */
function selectRemove ( oSelect, value ){
	if ( value != null ) {		
		var i = 0;
		var found = false;	
		while( !found && i < oSelect.options.length ) {
			if ( oSelect.options[ i ].value == value ) {
				oSelect.options[ i ] = null;
				found = true;
			}
			i++;
		}//while
	}
}



Array.prototype.indexOf=function(o){
    for(var i=0;i<this.length;i++){
		if( this[ i ]==o || 
            ( typeof( this[ i ].equals ) == 'function' && this[ i ].equals( o ) ) ) {        
          return i;
        }
    }
    return-1;
};
Array.prototype.lastIndexOf=function(o){
    var index = -1;
    for(var i=this.length-1;i>=0;i--){
        if( this[ i ]==o || 
            ( typeof( this[ i ].equals ) == 'function' && this[ i ].equals( o ) ) ) {
          index = i;
        }
    }
    return index;
};
Array.prototype.contains=function(o){
    return this.indexOf(o)!= -1;
};
Array.prototype.copy=function(o){
    return this.concat();
};
Array.prototype.clone=function(o){
	return this.concat();
};
Array.prototype.insertAt=function(o,i){
 //TODO: Review this. Not inserted in position > length array
 this.splice(i,0,o);
};

Array.prototype.insertBefore=function(o,o2){
    var i=this.indexOf(o2);
    if(i== -1)
    this.push(o);
    else this.splice(i,0,o);
};
Array.prototype.removeAll = function(){
	this.splice( 0, this.length );
}
Array.prototype.removeAt=function(i){
    return this.splice(i,1)[0];
};
Array.prototype.replace=function(o1,o2){
    var i = this.indexOf(o1);
    if(i != -1) {
    	return this.splice(i,1,o2);
    }
};
Array.prototype.remove=function(o){
    var i=this.indexOf(o);
    if(i!= -1)
      return this.splice(i,1)[0];
};

//TODO: Create Hashtable Object
Array.prototype.removeKey=function( key ){
	var o = this[key];
    return ( delete this[key] )? o:null;
};
Array.prototype.keys = function(){
	var keys = new Array();
	for ( var i in this ){
		switch ( typeof( this[i] ) ){
			case 'object':
			case 'string':
			case 'number':
				keys.push( i );
				break;
			default:
				//nothing
				break;
		}//switch
	}
	return keys;
}

Array.prototype.removeAllKeys = function(){
	var keys = new Array();
	for ( var i in this ){
		switch ( typeof( this[i] ) ){
			case 'object':
			case 'string':
			case 'number':
				this[i] = null;
				delete this[i];
				break;
			default:
				//nothing
				break;
		}//switch
	}
	return keys;
}

Array.prototype.dispose = function(){
	for ( var i in this ){
		switch( typeof( this[i] ) ){
			case 'object':
			case 'string':
			case 'number':
				this[i] = null;
				delete this[i];
				break;
			default:
				break;
		}
	}
}

Array.prototype.subArray=function(i,n){
    return this.slice(i,n);// note that slice is not sPlice :D
};
Array.prototype.extractArray=function(i,n){
    return this.splice(i,n);// note that slice is not sPlice :D
};

String.prototype.trim = function() {
    return this.replace( /(^\s+)|\s+$/g,"" );
};

/************************************ DATES *********************************/

var month = new Array("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre");

function padout(number) { 
	return (number < 10) ? '0' + number : number; 
}

function parseDate ( oDate ){
	return oDate.getDate() + " de " + month[oDate.getMonth()] + " de " + oDate.getFullYear();
}

//Funcion para determinar si un año es bisiesto
function anyoBisiesto(anyo){
	if (anyo < 100)
    	var fin = anyo + 1900;
    else
        var fin = anyo ;
    if (fin % 4 != 0)
        return false;
    else{
        if (fin % 100 == 0){
	        if (fin % 400 == 0){
    	        return true;
            }else{
                return false;
            }
       	}else{
        	return true;
        }
   }
}

function isValidDate( day, month, year ){
	var valid = true;
	var dayFeb;
	if(anyoBisiesto(year)){
		dayFeb = 29;
	}else{
		dayFeb = 28;
  	}
	var today = new Date();
	
	if ( day.length != 2 || month.length != 2 || year.length != 4 ) {
		alert("La longitud de los campos de la Fecha de nacimiento no es correcta (Formato dd/mm/aaaa)");
		valid = false;
	} else if ( day <1 || day > 31 ) {
		alert("El día de la Fecha de nacimiento debe estar comprendido entre 1 y 31");
		valid = false;
	} else if (  month <1 || month > 12 ) {
		alert("El mes de la Fecha de nacimiento debe estar comprendido entre 1 y 12");
		valid = false;
	} else if ( month == 2 && ( day < 1 || day > dayFeb) ) {
		alert("El día introducido no es válido para el mes");
		valid = false;
	} else if ( ( (month==1) || (month==3) || (month==5) || (month==7) || (month==8) ||
             (month==10) || (month==12) ) && ( (day<1) || (day>31) ) ){
		alert("El dia introducido no es válido para el mes");
		valid = false;
	} else if (((month==4) || (month==6) || (month==9) || (month==11)) && ((day<1) || (day>30))){
		alert("El dia introducido no es válido para el mes");
        valid = false;
	} else if ( year < 1900 ){
		alert("El año de la Fecha de nacimiento debe ser igual o mayor a 1900");
		valid = false;
	} else if ( year > today.getFullYear() ) {
		alert("El campo Fecha de nacimiento no puede ser superior a la actual");
		valid = false;
	} else if ( (year == today.getFullYear()) && (month > (today.getMonth()+1) ) ){
	  	alert("El campo Fecha de nacimiento no puede ser superior a la actual");
	  	valid = false;
	} else if ( year == today.getFullYear() && month == (today.getMonth()+1) && day > today.getDay() ){
	  	alert("El campo Fecha de nacimiento no puede ser superior a la actual");
	  	valid = false;
	}	
	return valid;
}

// this is the actual date status handler.  Note that it receives the
// date object as well as separate values of year, month and date, for
// your confort.
// IMPORTANT: Needs a string variable named "flyDays"
function dateStatusHandler( oDate ){
	var disabledBP = true; 
	if ( oDate != null && flyDays != null){
		var dayOfWeek = oDate.getDay();
		if ( flyDays.indexOf("TODOS") != -1 ){
			disabledBP = false;
		} else if ( flyDays.indexOf( dayOfWeek ) != -1 ){
			disabledBP = false;
		}	
	}
	return disabledBP;
};

//FOR IE6.0 SELECT OPTION DISABLED EMULATION
window.onload = function() {
	if (document.getElementsByTagName) {
		var s = document.getElementsByTagName("select");

		if (s.length > 0) {
			window.select_current = new Array();

			for (var i=0, select; select = s[i]; i++) {
				select.onfocus = function(){ window.select_current[this.id] = this.selectedIndex; }
				emulateSelectDisabled(select);
			}
		}
	}
}

function emulateSelectDisabled( oSelect ) {
	for (var i=0, option; option = oSelect.options[i]; i++) {
		if (option.disabled) {
			option.style.color = "graytext";
		}
		else {
			option.style.color = "menutext";
		}
	}
}

