    ns6 = (document.getElementById)? true:false;
    ns4 = (document.layers)? true:false;
    ie4 = (document.all)? true:false;
    
    spI = new Image ();
    
    //	Genéricas ----------
    
    function ks0jxO0jnKUwE13410144019872 ( Url, Name, Options){newW=ksEXxh7mUclyA81457836786285(Url,Name,Options);}
    function ksEXxh7mUclyA81457836786285( windowURL, windowName, windowFeatures ){return window.open( windowURL, windowName, windowFeatures );}
    
    function openWsized (url, x, y) {
    	ks0jxO0jnKUwE13410144019872(url, 'ventanaM'+x+y, 'width='+x+' ,height='+y+',toolbar=1,location=0,directories=0,status=0,menuBar=0,scrollBars=0,resizable=0,screenX=0, screenY=0, titlebar=0, left=0, top=0')
    }
    
    function openWsizednoT (url, x, y) {
    	ks0jxO0jnKUwE13410144019872(url, 'ventanaM'+x+y, 'width='+x+' ,height='+y+',toolbar=0,location=0,directories=0,status=0,menuBar=0,scrollBars=0,resizable=0,screenX=0, screenY=0, titlebar=0, left=0, top=0')
    }
    
    function openWsizedScr (url, x, y) {
    	ks0jxO0jnKUwE13410144019872(url, 'ventanaM'+x+y, 'width='+x+' ,height='+y+',toolbar=1,location=0,directories=0,status=0,menuBar=0,scrollBars=1,resizable=0,screenX=0, screenY=0, titlebar=0, left=0, top=0')
    }
    
    function openWsizedScrnoT (url, x, y) {
    	ks0jxO0jnKUwE13410144019872(url, 'ventanaM'+x+y, 'width='+x+' ,height='+y+',toolbar=0,location=0,directories=0,status=0,menuBar=0,scrollBars=1,resizable=0,screenX=0, screenY=0, titlebar=0, left=0, top=0')
    }
    
    function di(id,name) {
      	if (document.images) document.images[id].src=eval(name+".src");
    }
    
    function MM_swapImgRestore() { //v2.0
      if (document.MM_swapImgData != null)
        for (var i=0; i<(document.MM_swapImgData.length-1); i+=2)
          document.MM_swapImgData[i].src = document.MM_swapImgData[i+1];
    }
    
    function MM_swapImage() { //v2.0
      var i,j=0,objStr,obj,swapArray=new Array,oldArray=document.MM_swapImgData;
      for (i=0; i < (MM_swapImage.arguments.length-2); i+=3) {
        objStr = MM_swapImage.arguments[(navigator.appName == 'Netscape')?i:i+1];
        if ((objStr.indexOf('document.layers[')==0 && document.layers==null) ||
            (objStr.indexOf('document.all[')   ==0 && document.all   ==null))
          objStr = 'document'+objStr.substring(objStr.lastIndexOf('.'),objStr.length);
        obj = eval(objStr);
        if (obj != null) {
          swapArray[j++] = obj;
          swapArray[j++] = (oldArray==null || oldArray[j-1]!=obj)?obj.src:oldArray[j];
          obj.src = MM_swapImage.arguments[i+2];
      } }
      document.MM_swapImgData = swapArray; //used for restore
    }
    
    function MM_openBrWindow(theURL,winName,features) { //v2.0
      window.open(theURL,winName,features);
    }
    
    var cad=document.URL;

    function abrir_flash(){
    	
    	if(cad.substr(cad.length-8)==".es.html"){
    		MM_openBrWindow("/situacion.es.ats","BensituacionW","scrollbars=no,width=450,height=518");
    	}
    	else{
    		MM_openBrWindow("/situacion.en.ats","BensituacionW","scrollbars=no,width=450,height=518");
    	}
    
    }
    
    function Comprueba(){
		if (document.altaModuloF._SUF_Sender.value.length > 0){
			document.altaModuloF.submit();
		}
		else{
			alert("Por favor, inserte una dirección de correo válida");
		}
	}
    
    function verWebcamRGB( idioma ){
        MM_openBrWindow('http://www.realgolfbendinat.com/webcam/index.'+idioma+'.html','webcam', 'scrollbars=no,width=679,height=623' );
    }
	
	
	/** Escribe mail **/
	function escribeMail( nom, dom ){
		document.write( '<a hr'+'ef="mai'+'lto:'+nom+'@'+dom+'"><img src="/img/ico/sobre.gif" width="24" height="23" border="0"></a>' );
 	}
	function escribeMailPlano( nom, dom ){
		document.write( '<a hr'+'ef="mai'+'lto:'+nom+'@'+dom+'">'+nom+'@'+dom+'</a>' );
 	}
 
/**
 * Actualiza nodo de carácteres disponibles.
 */   
function carsDisp( campo, id ){
    var nodo = document.getElementById(id);
    campo.value = campo.value.substr(0,5000);
    nodo.firstChild.nodeValue = 5000 - campo.value.length;
}
	
/*************************/
/* Validador de formularios*/
/*************************/


function FormValidator(idFormulario){
	
	/* nodo del formulario */
	this.nForm =  document.getElementById(idFormulario);
	
	/* array de objetos campo, con expresion regular y mensaje de error */
	this.arrFields = new Array();
	
	/* ARRAY DE CAMPOS QUE CUMPLEN LA VALIDACION */
	this.fieldsValidos = new Array();
	
	
	/* ARRAY DE CAMPOS QUE NO CUMPLEN LA VALIDACION */
	this.fieldsNoValidos = new Array();

	/* Expresiones regulares comunes */
	FormValidator.NOTEMPTY = /\w/;
	FormValidator.NUMERIC = /\d/;
	FormValidator.MAIL = /^[a-z][\w\.-]*@[\w\.-]+\.[a-z]{2,4}/i;
	FormValidator.NOZERO = /[^0]/;
	
	/* Cadena de error */
	
	this.cadenaError = '';

	
	this.arrCheckGroups = new Array();
	
	this.arrCheckDependencies = new Array();
	
	this.arrRadioDependencies = new Array();
	
    this.arrSelectDependencies = new Array();
	
}

FormValidator.prototype.setAction = function(action){
	
	this.nForm.setAttribute("action",action );
}


FormValidator.prototype.addField = function(nomCamp,regExp,mensError){
	
	this.arrFields.push({name: nomCamp, expr: regExp, mensError: mensError});
	
}


FormValidator.prototype.addRadioDependencies = function(nameRadio, value, inputName, regExp, mensError){

	this.arrRadioDependencies.push({nameRadio: nameRadio, value: value ,name: inputName, regExp: regExp, mensError: mensError });

}

FormValidator.prototype.addCheckDependencies = function(checkName, inputName, regExp, mensError){
	
	this.arrCheckDependencies.push({nameCheck: checkName, nameInput: inputName, regExp: regExp, mensError: mensError});
	
}


FormValidator.prototype.addSelectDependencies = function(nameSelect, valueOption, inputName, regExp, regExpNegada, mensError){
// RegExpNegada se utiliza para validar campos que NO deben hacer match con la expresion regular pasada
    this.arrSelectDependencies.push({nameSelect: nameSelect, value: valueOption ,name: inputName, regExp: regExp, regExpNegada: regExpNegada, mensError: mensError });

}


FormValidator.prototype.addCheckGroup = function(arrNamesCheck ,mensError, minCheck, maxCheck){
	
	this.arrCheckGroups.push({arrNames: arrNamesCheck, mensError: mensError , minimo: minCheck, maximo: maxCheck});
	
}



FormValidator.prototype.checkForm = function(){
	var radioButtons;
	
	this.resetValidation();
	

	// Validamos las dependencias de los radio Buttons
	if(this.arrRadioDependencies.length > 0){
		
		for (var i in this.arrRadioDependencies){
			
			//seleccionamos en el formulario el nodo Radio button
			radioButtons = this.nForm[this.arrRadioDependencies[i].nameRadio];
			
			// es un radio??
			for (var j=0; j<radioButtons.length; j++ ){
			
				if (radioButtons[j].checked == true ){
					
					if (this.arrRadioDependencies[i].value == radioButtons[j].value){
						this.validateField( {name: this.arrRadioDependencies[i].name, expr:  this.arrRadioDependencies[i].regExp, mensError:  this.arrRadioDependencies[i].mensError } );
					}			
				}
			}			
		}
	}
	
	// Validamos las dependencias de Selects
    if(this.arrSelectDependencies.length > 0){
        
        for (var i in this.arrSelectDependencies){
            
			// name del select 
			selectName = this.arrSelectDependencies[i].nameSelect;

			valorSeleccionado = this.nForm[selectName].options[this.nForm[selectName].selectedIndex].value;
			
            // Si el valor del option seleccionado es el que fuerza a validar un campo
            if (valorSeleccionado == this.arrSelectDependencies[i].value){
                this.validateField( {name: this.arrSelectDependencies[i].name, expr: this.arrSelectDependencies[i].regExp, regExpNegada: this.arrSelectDependencies[i].regExpNegada ,mensError: this.arrSelectDependencies[i].mensError});
            }
                        
        }
    }
	


	// Validamos los grupos de checkboxes
	if(this.arrCheckGroups.length > 0){
		
		for (var i in this.arrCheckGroups){
			numChecked = 0;
			
			// Buscamos los items que estan checkeados
			for (var j in this.arrCheckGroups[i].arrNames){
				
			
				if (this.nForm[this.arrCheckGroups[i].arrNames[j]].checked){
					numChecked += 1; 
				}
			
			}
			
			// Si hay menos checkeados que el minimo exigido
			if (numChecked < this.arrCheckGroups[i].minimo){
				
				this.fieldsNoValidos.push({name: this.arrCheckGroups[i].arrNames[0], expr: '', mensError: this.arrCheckGroups[i].mensError} );
				
			// Si se ha fijado un máximo
			}else if(this.arrCheckGroups[i].maximo != false){
				// Si hay más checkeados que el máximo permitido
				if(numCheked > this.arrCheckGroups[i].maximo ){
					this.fieldsNoValidos.push({name: this.arrCheckGroups[i].arrNames[0], expr: '', mensError: this.arrCheckGroups[i].mensError});
				}
			}
		}
	
	}
	
	if (this.arrCheckDependencies.length > 0){
		
		for(var i in this.arrCheckDependencies){
			if(this.nForm[this.arrCheckDependencies[i].nameCheck].checked == true){
				
				this.validateField({name: this.arrCheckDependencies[i].nameInput, expr: this.arrCheckDependencies[i].regExp, mensError: this.arrCheckDependencies[i].mensError });
			}
		}
		
		
	}
	
	
	if (this.arrFields.length > 0 ){
		// Resto de campos
		for(var i in this.arrFields){

			this.validateField(this.arrFields[i]);	
		}
	}

	
	
	//alert ('campos que no han validado: '+this.fieldsNoValidos.length );
		
	// Obtenemos los mensajes de error de los campos no validos
	if (this.fieldsNoValidos.length > 0 ){
		for (var j in this.fieldsNoValidos){
			this.cadenaError += this.fieldsNoValidos[j].mensError + "\n";
		}
		
		alert (this.cadenaError);
	}else{
		
		
		this.nForm.submit();	
		
	}
	
}

FormValidator.prototype.validateField = function(oField){
	
		
	
		var valor = '';
		var valorRadio = '';
		// Si es un radio
		
		if (this.nForm[oField.name].length>0 && this.nForm[oField.name][0].type == 'radio' ){
			
			for (l=0; l<this.nForm[oField.name].length; l++){
				if(this.nForm[oField.name][l].checked == true){
					var valor = this.nForm[oField.name][l].value;
				}
			}
	
		// Si es un select, su valor es el del option seleccionado
		}else if(this.nForm[oField.name].type == 'select-one'){
		
			valor = this.nForm[oField.name].options[this.nForm[oField.name].selectedIndex].value;
		// Si es de tipo texto, su valor viene en value
		}else{
			valor = this.nForm[oField.name].value;
		}
		
		// Obtenemos la expresion regular
		var regularExp = oField.expr;
		
		
		// Si tenemos en el objeto oField el parámetro que indica que la expresión regular ha de negarse,
		if(oField.regExpNegada == true){
			if (valor.match(regularExp) != null){
				
				this.fieldsNoValidos.push(oField);
			}
		}
		else{
			// Si el valor no concuerda con el patron, este campo no se ha introducido correctamente
			if (valor.match(regularExp) == null){
			
				this.fieldsNoValidos.push(oField);
			}else{
			
			this.fieldsValidos.push(oField);
			}	
		}
		
}

FormValidator.prototype.resetValidation = function(){
	this.cadenaError = '';
	this.fieldsNoValidos = new Array();
	this.fieldsValidos = new Array();
}
/***************************************
*****MODIFICACIONES AAMENGUAL*****
***************************************/
/*
function menuFotos(foto, localizacion){
	var ruta; //ruta de las fotos
	var arrFotos = new Array();;
	var contenedor = document.getElementById('oculto');

	contenedor.style.display = 'block';
	
	switch (localizacion){
		case 'andratx': ruta = '/ruso/img/vistas/';
						for( var i=0; i<13; i++){
							arrFotos[i] = 'andratx'+i;
						}
						break;
		case 'sacala': ruta = '/ruso/img/sacala/';
						for( var i=0; i<13; i++){
								arrFotos[i] = 'sacala'+i;
						}break;
		case 'portocolom': ruta = '/ruso/img/portocolom/';
							for( var i=0; i<13; i++){
								arrFotos[i] = 'portocolom'+i;
							}break;
	}

	contenedor.style.background = 'url('+ruta+foto+') center no-repeat yellow';
}*/

function mostrarVentana(id){
	var ventana = document.getElementById(id);
	ventana.style.display = 'block';
}

function ocultarVentana(id){
	var ventana = document.getElementById(id);	
	ventana.style.display = 'none';
}


