
var formObjectFocused = false;

function submitForm(formName){
	if(validate()){
		var form = document.getElementById(formName);
		form.submit();
	}
}

function cancelForm(){
	history.go(-1);
}

function ltrim ( str, charlist ) {
    charlist = !charlist ? ' \xA0' : (charlist+'').replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
    var re = new RegExp('^[' + charlist + ']+', 'g');
    return (str+'').replace(re, '');
}

function isEmptyField(formObjectName){
	var empty = false;
	var formObject = document.getElementById(formObjectName);
	clearError(formObjectName);
	if(formObject && !formObject.disabled){
		formObject.value = ltrim(formObject.value);
		if(formObject.value==""){
			empty=true;
			showError(formObjectName, "Este campo es obligatorio.");
			setFocus(formObject);
		}
	}
	return empty;
}

function isEmptyDate(formObjectName){
	var empty = false;
	var day = document.getElementById(formObjectName+"Day");
	var month = document.getElementById(formObjectName+"Month");
	var year = document.getElementById(formObjectName+"Year");
	clearError(formObjectName);
	if(day.value=="" || month.value=="" || year.value==""){
		empty=true;
		showError(formObjectName, "Este campo es obligatorio.");
		setFocus(day);		
	}
	return empty;
}

function isEmptyRadioButton(formObjectName){
	//Jorgito: Se utiliza getElementsByName y no ById !!
	//TODO: repasar el setFocus del error
	var empty = true;
	var formObject = document.getElementsByName(formObjectName);
	clearError(formObjectName);
	if(formObject && !formObject.disabled){
		var num = formObject.length;
		var i = 0;
		var checked = false;
		while ((i < num) && !checked){
			if (formObject[i].checked == true){	
				empty = false;
				checked = true;
			}else{
				i++;
			}
		}
	}
	if (empty === true ) {
		showError(formObjectName, "Este campo es obligatorio.");
		setFocus(formObject[0]);
	}
	return empty;	
}

function isEmptyURL(formObjectName){
	var empty = false;
	var formObject = document.getElementById(formObjectName);
	clearError(formObjectName);
	if(formObject && !formObject.disabled){
		if(formObject.value=="" || formObject.value=="http://"){
			empty=true;
			showError(formObjectName, "Este campo es obligatorio.");
			setFocus(formObject);
		}
	}
	return empty;
}

function isEmptyFile(formObjectName){
	var empty = false;
	var element = document.getElementById(formObjectName+"Content");	
	clearError(formObjectName);
	if(element){
		if(element.style.display=="block"){
			empty=true;
			showError(formObjectName, "Este campo es obligatorio.");
		}
	}
	return empty;
}


function isEmptySelectNtoN(formObjectName){
	var numRows = document.getElementById(formObjectName+"_numRows").value;
	var empty = true;
	clearError(formObjectName);
	for (var i=0; i<numRows; i++){
		var id = formObjectName+i;
		var select = document.getElementById(id);
		if(empty && select){
			empty = isEmptyField(id) && empty;
		}
	}
	if(empty) showError(formObjectName, "Este campo es obligatorio.");
	return empty;
}

function isEmptyYouTube(formObjectName){
	clearError(formObjectName);
	var isEmpty = document.getElementById(formObjectName+"Empty").value;
	var empty = (isEmpty=="1");
	if(empty) showError(formObjectName, "Este campo es obligatorio.");
	return empty;
}

function setFocus(formObject){
	if(!formObjectFocused){
		formObject.focus();	
		formObjectFocused = true;
	}
}

function showError(formObjectName, text){
	var formObject = document.getElementById(formObjectName+"Error");
	if(formObject) formObject.innerHTML=text;
	var formObject = document.getElementById(formObjectName+"Label");
	if(formObject){
		var className = formObject.className;
		if(text==""){
			if(className.indexOf("Error")>0){
				formObject.className = className.split("Error")[0];
			}
		}else{
			if(className.indexOf("Error")==-1){
				formObject.className = className+"Error";
			}
		}
	}
}
		
function clearError(formObjectName){
	showError(formObjectName, "");
}

function checkTelephone(formObjectName){
	var ok = true;
	var formObject = document.getElementById(formObjectName);
	if(!formObject.disabled){
		var value = formObject.value;
		if(value!=""){
			formObject.value = clearSpaces(value);
			value = formObject.value;
			if(value.indexOf("+")==0){
				value = value.substr(1);
			}
			if(isNaN(value) || value.length<9){
				showError(formObjectName, "Tel&eacute;fono incorrecto.");
				setFocus(formObject);				
				ok=false;
			}else{
				clearError(formObjectName);
			}
		}
	}
	return ok;
}

function checkEmail(formObjectName){
	var ok = true;
	var formObject = document.getElementById(formObjectName);
	if(!formObject.disabled){	
		var value = formObject.value;
		if(value!=""){
			var a = value.indexOf("@");
			var p = value.indexOf(".", a);
			if(a>-1 && p>-1){
				//clearError(formObjectName);	
			}else{
				showError(formObjectName, "Email incorrecto.");
				setFocus(formObject);				
				ok=false;
			}
		}
	}
	return ok;
}

function checkPassword(formObjectName){
	var ok = true;
	var password1 = document.getElementById(formObjectName);
	var password2 = document.getElementById(formObjectName+"Bis");
	clearError(formObjectName+"Bis");
	if(password1.value != password2.value){
		ok=false;
		showError(formObjectName+"Bis", "Las dos contrase&ntilde;as no coinciden.");
		setFocus(password1);		
	}
	return ok;
}

function checkNumber(formObjectName){
	var ok = true;
	var formObject = document.getElementById(formObjectName);
	if(!formObject.disabled){
		var value = formObject.value;
		value = value.replace(",", ".");
		formObject.value = value;
		if(isNaN(value)){
			showError(formObjectName, "N&uacute;mero incorrecto.");
			setFocus(formObject);			
			ok=false;
		}else{
			clearError(formObjectName);
		}
	}
	return ok;
}

function checkMoney(formObjectName){
	var ok = true;
	var formObject = document.getElementById(formObjectName);
	if(!formObject.disabled){	
		var value = formObject.value;
		value = value.replace(",", ".");
		if(value.indexOf(".") >=0){
			valueSP = value.split(".");
			value = valueSP[0]+"."+valueSP[1].substr(0,2);
		}
		formObject.value = value;
		if(isNaN(value) || value < 0){
			showError(formObjectName, "##ERROR_MONEY##");
			setFocus(formObject);			
			ok=false;
		}else{
			clearError(formObjectName);
		}
	}
	return ok;
}

function checkIGTZ(formObjectName){
	var ok = checkNumber(formObjectName);
	if(ok){
		var formObject = document.getElementById(formObjectName);
		if(!formObject.disabled){
			var value = formObject.value;
			if(value.indexOf(".") >=0){
				valueSP = value.split(".");
				value = valueSP[0];
			}
			formObject.value = value;
			if(isNaN(value) || value < 1){
				showError(formObjectName, "El n&uacute;mero ha de ser mayor de cero.");
				setFocus(formObject);				
				ok=false;
			}else{
				clearError(formObjectName);
			}
		}
	}
	return ok;
}

function ucfirst( str ) {
    var f = str.charAt(0).toUpperCase();
    return f + str.substr(1, str.length-1);
}

function clearSpaces(string){
	while (string.indexOf(" ")>-1){
		string = string.replace(" ", "");
	}
	return string;
}

//PRE: UTC in seconds
function UTCtoString(UTC){
	var months = ["Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"];
	var date = new Date(UTC*1000);
	var d = date.getDate();
	var m = date.getMonth();
	var y = date.getFullYear();
	var string = d+" de "+months[m]+" del "+y;
	return string;
}

function callbackSelect(xmlhttp){
	var elements = xmlhttp.responseXML.getElementsByTagName("data");
	//Con los cambios de CHARSETs en IE hubo problemas con el XML. Por eso
	//compruebo antes la longitud
	if(elements.length > 0){
		var fieldId = elements[0].getAttribute("fieldId");
		var defaultValue = xmlhttp.responseXML.getElementsByTagName("data")[0].getAttribute("defaultValue");
		var selectElement = document.getElementById(fieldId);
		var options = xmlhttp.responseXML.getElementsByTagName("option");
		if(options.length==0){
			/* Comento sta linia para conseguir que si un SELECT es obligatorio
			 * pero al refrescarse no tiene valores, no se valide y no se pueda continuar. 
			 */
			//selectElement.disabled = false;
		}else{
			for(i=0; i< options.length; i++){
				var id = options[i].getAttribute("id");
				var label = decodeURI(options[i].getAttribute("label"));
				var currentId = selectElement.options.length;
				selectElement.options[currentId] = new Option(label, id);
				if(defaultValue==id) {
					selectElement.selectedIndex = currentId;
				}else{
					if(options.length == 1){
						selectElement.selectedIndex = currentId;
						if(selectElement.onchange) selectElement.onchange();
					}
				}
			}
			selectElement.disabled = false;
		}
	}
}

function getSelectText(id){
	var select = document.getElementById(id);
	var option = select.options[select.selectedIndex];
	return option.text;
}



//Para Attachments

function deleteAttachAJAX(id, attributeName, isNew){
	if(confirm("Realmente lo desea eliminar?")){
		var paramsGET = "?func=deleteAttach&id="+id+"&attributeName="+attributeName+"&isNew="+isNew;
		var urlServlet = "/common/engine/resources/servlet.php";
		callAjax(deleteAttachCallback, paramsGET, urlServlet);
	}
}

function deleteAttachCallback(xmlhttp){
	var data = xmlhttp.responseXML.getElementsByTagName("data")[0];
	var attributeName = data.getAttribute("attributeName");		
	attributeName = ucfirst(attributeName);
	//SILVIA 2-2-2009: apaņo para applets, que el attributeName es "Null"
	if(attributeName!="Null"){
		eval("refresh"+attributeName+"()");
	}else{
		//SILVIA 2-2-2009: esta funcion tiene que existir en el formulario correspondiente
		refreshAttachmentsCallback(xmlhttp);
	}
}

//Borra las filas de una tabla
function emptyTable(tableName){
	var table = document.getElementById(tableName);
	while(table.rows.length > 0){
		table.deleteRow(0);
	}
}

//tagName corresponde a lo que se genere en el engineServlet: image - documento
function refreshAttachGridTable(xmlhttp, tagName, attributeName){
	var cols = 4;
	var currentCol = 0;
	var tableName = "attachGridTable";
	var table = document.getElementById(tableName);
	if(table){
		emptyTable(tableName);
		var oRow = null;
		var data = xmlhttp.responseXML.getElementsByTagName("data")[0];
		var isNew = data.getAttribute("isNew");		
		var attachments = xmlhttp.responseXML.getElementsByTagName(tagName);
		for(i=0; i< attachments.length; i++){
			var attach = attachments[i];
			if(attach.getAttribute("attributeName")==attributeName){
				var id = attach.getAttribute("id");
				var type = attach.getAttribute("type");		
				var name = attach.getAttribute("name");
				var preview = attach.getAttribute("preview");
				var fileSrc = attach.getAttribute("fileSrc");	
				
				currentCol++;
				if(currentCol>=cols || oRow==null){
					var oRow = table.insertRow(table.rows.length);
					currentCol = 0;
				}
	
				var oCell = oRow.insertCell(oRow.cells.length);
				oCell.align = "center";				
				
				var innerHTMLCode ="<a target=\"_blank\" href=\""+fileSrc+"\">";
				innerHTMLCode+="<img src=\""+preview+"\"/>";
				innerHTMLCode+="</a><br/>";
				innerHTMLCode+="<a href=\"javascript:deleteAttachAJAX("+id+", "+isNew+")\" class=\"formLink\"/>Eliminar</a>";
				
				oCell.innerHTML = innerHTMLCode;
			}
		}
	}
}

//De momento no usamos: elementHTMLId
function refreshAttachListTable(xmlhttp, elementHTMLId, tagName, myType){
	var tableName = "attachlistTable";
	var table = document.getElementById(tableName);
	if(table){	
		emptyTable(tableName);
		var classA = true;
		var attachments = xmlhttp.responseXML.getElementsByTagName(tagName);
		for(i=0; i< attachments.length; i++){
			var attach = attachments[i];
			var id = attach.getAttribute("id");
			var type = attach.getAttribute("type");		
			var name = attach.getAttribute("name");
			var preview = attach.getAttribute("preview");
			var fileSrc = attach.getAttribute("fileSrc");	
			
			if(myType == null || myType == type){
				var oRow = table.insertRow(table.rows.length);
				oRow.id = "trattach"+id;
				if(classA) var className = "listsRowA";
				else var className = "listsRowB";
				oRow.className = className;

				var oCell = oRow.insertCell(oRow.cells.length);
				oCell.className = className;				
				oCell.innerHTML = "&nbsp;";
				
				var oCell = oRow.insertCell(oRow.cells.length);
				oCell.className = className;				
				oCell.innerHTML = "<img src=\""+preview+"\" border=\"0\">&nbsp;";
				
				var oCell = oRow.insertCell(oRow.cells.length);
				oCell.className = className;
				oCell.width = 250;
				oCell.innerHTML = "<span class=\""+className+"\">"+name+"</span>";
				
				var oCell = oRow.insertCell(oRow.cells.length);
				oCell.className = className;
				oCell.align = "center";
				oCell.innerHTML = "<a href=\"javascript:deleteAttachAJAX('"+id+"');\" title=\"Eliminar\"><img src=\"http://www.campingtreumal.com/gestion/images/ico_del.png\" border=\"0\"></a>";
				
				var oCell = oRow.insertCell(oRow.cells.length);
				oCell.className = className;				
				oCell.innerHTML = "&nbsp;";				
				
				classA=!classA;
			}
		}
	}
}

//tagName corresponde a lo que se genere en el engineServlet
function refreshAttachOne(xmlhttp, type, attributeName){
	var data = xmlhttp.responseXML.getElementsByTagName("data")[0];
	var isNew = data.getAttribute("isNew");
	if(isNew=="") isNew = 0;
	var tagName = typeToString(type);
	var element = document.getElementById(attributeName+"Content");
	element.style.display = "none";
	var someAttach = false;
	
	var thumbnail = document.getElementById(attributeName+"Thumbnail");
	if(thumbnail){
		var attachments = xmlhttp.responseXML.getElementsByTagName(tagName);
		for(i=0; i< attachments.length; i++){
			var attach = attachments[i];
			if(attach.getAttribute("attributeName")==attributeName){
				someAttach = true;
				var id = attach.getAttribute("id");
				var name = attach.getAttribute("name");
				var preview = attach.getAttribute("preview");
				var fileSrc = attach.getAttribute("fileSrc");
					
				var innerHTMLCode ='<table border="0" cellpacing="0" cellpadding="0" width="100%">';
				innerHTMLCode+='<tr>';
				innerHTMLCode+='<td align="center">';
			
				var fileExtension = fileSrc.split(".").pop().toUpperCase();
				if(type==1 && fileExtension == "SWF"){
					innerHTMLCode+='<embed width="250" height="250" quality="high" bgcolor="#e3e3e3" name="galeria" id="galeria" style="" src="'+fileSrc+'" type="application/x-shockwave-flash"/>';	
				}else {
					innerHTMLCode+='<a target="_blank" href="'+fileSrc+'">';
					innerHTMLCode+="<img src=\""+preview+"\" ";
					innerHTMLCode+="/>";
					innerHTMLCode+='</a><br/>';
					if(type==1){
						innerHTMLCode+= '<span class="formText" id="linkLabel">'+name+'</span><br/>';
					}
				}
				
				innerHTMLCode+='<br/>';
				innerHTMLCode+='<a href="javascript:deleteAttachAJAX('+id+', \''+attributeName+'\', '+isNew+')" class="formLink"/>Eliminar</a>';	
				innerHTMLCode+='</td>';
				innerHTMLCode+='</tr>';
				innerHTMLCode+='</table>';
	
				thumbnail.innerHTML = innerHTMLCode;
			}
		}

		if(!someAttach){
			var element = document.getElementById(attributeName+"Content");
			element.style.display = "block";
			thumbnail.innerHTML = "";
		}	
	}
}





function submitUpload(elementHTMLId, validateFunc){
	var valid = true;
	if(validateFunc){
		valid = validateFunc();
	}
	if(valid){
		var form = document.getElementById(elementHTMLId + "Form");
		form.submit();
		showWaitImage(elementHTMLId);	
	}
}

function showWaitImage(elementHTMLId){
	var thumbnail = document.getElementById(elementHTMLId+"Thumbnail");
	thumbnail.innerHTML = "<img src=\"/common/engine/resources/images/wait.gif\"/>";
}

function refreshInutOne(xmlhttp){
	var data = xmlhttp.responseXML.getElementsByTagName("data")[0];
	var isNew = data.getAttribute("isNew");
	var attributeName = data.getAttribute("attributeName");
	var type = data.getAttribute("type");
	if(isNew=="") isNew = 0;
	var tagName = typeToString(type);
	var element = document.getElementById(attributeName+"Content");
	//element.style.visibility = "hidden";
	element.style.display = "none";
	
	var thumbnail = document.getElementById(attributeName+"Thumbnail");
	if(thumbnail){
		var attachments = xmlhttp.responseXML.getElementsByTagName(tagName);		
		for(i=0; i< attachments.length; i++){
			var attach = attachments[i];		
			var id = attach.getAttribute("id");
			var name = attach.getAttribute("name");
			var preview = attach.getAttribute("preview");
			var fileSrc = attach.getAttribute("fileSrc");
				
			var innerHTMLCode ='<table border="0" cellpacing="0" cellpadding="0" width="100%">';
			innerHTMLCode+='<tr>';
			innerHTMLCode+='<td align="center">';
		
			var fileExtension = fileSrc.split(".").pop().toUpperCase();
			if(type==1 && fileExtension == "SWF"){
				innerHTMLCode+='<embed width="250" height="250" quality="high" bgcolor="#e3e3e3" name="galeria" id="galeria" style="" src="'+fileSrc+'" type="application/x-shockwave-flash"/>';	
			}else {
				innerHTMLCode+='<a target="_blank" href="'+fileSrc+'">';
				innerHTMLCode+="<img src=\""+preview+"\" ";
				innerHTMLCode+="/>";
				innerHTMLCode+='</a><br/>';
				if(type==1){
					innerHTMLCode+= '<span class="formText" id="linkLabel">'+name+'</span><br/>';
				}
			}
			
			innerHTMLCode+='<br/>';
			innerHTMLCode+='<a href="javascript:deleteAttachAJAX('+id+', \''+attributeName+'\', '+isNew+')" class="formLink"/>Eliminar</a>';	
			innerHTMLCode+='</td>';
			innerHTMLCode+='</tr>';
			innerHTMLCode+='</table>';

			thumbnail.innerHTML = innerHTMLCode;
		}

		if(attachments.length == 0){
			var element = document.getElementById(attributeName+"Content");
			//element.style.visibility = "visible";
			element.style.display = "block";
			thumbnail.innerHTML = "";
		}	
	}
}

function refreshInputGridTable(xmlhttp){
	var cols = 4;
	var currentCol = 0;
	
	var data = xmlhttp.responseXML.getElementsByTagName("data")[0];
	var type = data.getAttribute("type");
	var attributeName = data.getAttribute("attributeName");
	var tagName = typeToString(type);
	var tableName = attributeName+"attachGridTable";
	var table = document.getElementById(tableName);
	if(table){
		emptyTable(tableName);
		var oRow = null;
		var data = xmlhttp.responseXML.getElementsByTagName("data")[0];
		var isNew = data.getAttribute("isNew");		
		var attachments = xmlhttp.responseXML.getElementsByTagName(tagName);
		for(i=0; i< attachments.length; i++){
			var attach = attachments[i];
			var id = attach.getAttribute("id");	
			var name = attach.getAttribute("name");
			var preview = attach.getAttribute("preview");
			var fileSrc = attach.getAttribute("fileSrc");	
			
			currentCol++;
			if(currentCol>=cols || oRow==null){
				var oRow = table.insertRow(table.rows.length);
				currentCol = 0;
			}

			var oCell = oRow.insertCell(oRow.cells.length);
			oCell.align = "center";				
			
			var innerHTMLCode ="<a target=\"_blank\" href=\""+fileSrc+"\">";
			innerHTMLCode+="<img src=\""+preview+"\" ";
			innerHTMLCode+="/>";
			innerHTMLCode+="</a><br/>";
			innerHTMLCode+="<a href=\"javascript:deleteAttachAJAX("+id+", '"+attributeName+"', "+isNew+")\" class=\"formLink\"/>Eliminar</a>";
			
			oCell.innerHTML = innerHTMLCode;
		}
	}
	
	var thumbnail = document.getElementById(attributeName+"Thumbnail");
	thumbnail.innerHTML = "";
}

function typeToString(value){
	if(value == 2){
		return "image";
	}else if(value == 1){
		return "document";		
	}else if(value == 3){
		return "video";		
	}else{
		return "";
	}
}

function inputYouTubeFilled(formObjectName){
	var formObject = document.getElementById(formObjectName+"Empty");
	if(formObject){
		formObject.value = 0;
	}
}

