
var formObjectFocused = false;

function submitForm(formName){
	if(validate()){
		var form = document.getElementById(formName);
		form.submit();
	}
}

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 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 indexA = value.indexOf("@");
			var indexB = value.indexOf(".", indexA);
			if(indexA > -1 && indexB > -1){
				var blackList = "@mailinator.com@mixmail.com@guerrillamail.org@mint.us.to@yopmail.com@spamcorptastic.com@bofthew.com@pjjkp.com";
				var domain = value.substr(indexA+1);
				if(blackList.indexOf(domain) > -1){
					showError(formObjectName, "Su email se considera no seguro. Por favor, use cuentas de correo como Gmail, Hotmail, Yahoo, etc...");
					setFocus(formObject);				
					ok=false;
				}else{
					//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, "Importe incorrecto");
			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 < 0){
				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;
		callAjax(deleteAttachCallback, paramsGET);
	}
}

function deleteAttachCallback(xmlhttp){
	var data = xmlhttp.responseXML.getElementsByTagName("data")[0];
	var attributeName = data.getAttribute("attributeName");		
	attributeName = ucfirst(attributeName);
	eval("refresh"+attributeName+"()");
}

//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){
	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];
			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+"\" class=\"corner iradius5 ishadow25\" />";
			innerHTMLCode+="</a><br/>";
			innerHTMLCode+="<a href=\"javascript:deleteAttachAJAX("+id+", "+isNew+")\" class=\"formLink\"/>Eliminar</a>";
			
			oCell.innerHTML = innerHTMLCode;
		}
		self.setTimeout('refreshCorners()', 500);	
	}
}

//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.bienvenidots.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, elementHTMLId, tagName, myType){
	var refreshed = false;
	if(tagName == null) tagName = "image";
	var appletSrc = document.getElementById(elementHTMLId+"AppletSrc");
	if(!appletSrc){
		appletSrc = document.getElementById("appletSrc");	
	}
	elementHTMLId = elementHTMLId+"Content";	
	var element = document.getElementById(elementHTMLId);
	if(element){
		var data = xmlhttp.responseXML.getElementsByTagName("data")[0];
		var isNew = data.getAttribute("isNew");
		if(isNew=="") isNew = 0;
		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){
				refreshed = true;			
				var innerHTMLCode ='<table border="0" cellspacing="0" cellspadding="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+'" class=\"corner iradius5 ishadow25\"/>';
					innerHTMLCode+='</a><br/>';
					if(type==1){
						innerHTMLCode+= '<span class="formText" id="linkLabel">'+name+'</span><br/>';
					}
				}
				
				innerHTMLCode+='<br/>';
				innerHTMLCode+='<a href="javascript:deleteAttachAJAX('+id+', '+isNew+')" class="formLink"/>Eliminar</a>';	
				innerHTMLCode+='</td></tr>';
				innerHTMLCode+='</table>';
				
				//alert(element.innerHTML);
				appletSrc.value = element.innerHTML;
				element.innerHTML = innerHTMLCode;
				
				self.setTimeout('refreshCorners()', 500);
			}
		}
		if(!refreshed){
			if(appletSrc.value!=""){
				element.innerHTML = appletSrc.value;
			}
		}		
	}
}





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=\"/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" cellspacing="0" cellspadding="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 {
				if(preview == null){
					innerHTMLCode+="<img src=\""+fileSrc+"\" ";
					//if(type==2) innerHTMLCode+="class= \"corner iradius5 ishadow25\" ";
					innerHTMLCode+="/>";
				}else{
					innerHTMLCode+='<a target="_blank" href="'+fileSrc+'">';
					innerHTMLCode+="<img src=\""+preview+"\" ";
					//if(type==2) innerHTMLCode+="class= \"corner iradius5 ishadow25\" ";
					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></tr>';
			innerHTMLCode+='</table>';

			thumbnail.innerHTML = innerHTMLCode;
			
			//self.setTimeout('refreshCorners()', 250);	
		}

		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+"GridTable";
	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+"\" ";
			if(type==2) innerHTMLCode+="class= \"corner iradius5 ishadow25\" ";
			innerHTMLCode+="/>";
			innerHTMLCode+="</a><br/>";
			innerHTMLCode+="<a href=\"javascript:deleteAttachAJAX("+id+", '"+attributeName+"', "+isNew+")\" class=\"formLink\"/>Eliminar</a>";
			
			oCell.innerHTML = innerHTMLCode;
		}
		if(type==2){
			self.setTimeout('refreshCorners()', 500);
		}
	}
	
	var thumbnail = document.getElementById(attributeName+"Thumbnail");
	thumbnail.innerHTML = "";
}

function typeToString(value){
	if(value == 2){
		return "image";
	}else if(value == 1){
		return "document";		
	}else{
		return "";
	}
}

function inputYouTubeFilled(formObjectName){
	var formObject = document.getElementById(formObjectName+"Empty");
	if(formObject){
		formObject.value = 0;
	}
}

function parseNIF(nif){
	nif.toUpperCase();
	nif.replace("[^A-Z0-9]", "");
	return nif;
}

function checkNIForNIE(nif){
	nif = parseNIF(nif);
	var letra0 = nif.substring(nif.length-1);
	nif = nif.substring(0,nif.length-1);
	var letra1 = "TRWAGMYFPDXBNJZSQVHLCKEO".substr(nif % 23, 1);
	
	return (letra0 == letra1);
}
