/**
 * Javascript no-obstructivo
 */

/**
 * Carga scripts al inicio
 */
window.onload = function(){

	// funciones que acceden a elementos
	if(document.getElementById && document.getElementsByTagName){
		mteClicks();
		}
	
	// control de submits
	if(document.forms && eval("typeof window.mteSubmits") == "function"){
		mteSubmits();
		}

	// funciones llamadas al cambiar un input
	mteChanges();

	}

/**
 * Controla los clics en las paginas
 */
function mteClicks(){
	
	// variables
	var links = document.getElementsByTagName("a");

	// se recorren
	for(var i = 0; i < links.length; i++){
		
		var enlace = links[i];
		
		var linkFunction = lnkFunctionName(enlace);
		if(linkFunction == "")continue;
		enlace.onclick = function(){
			var linkFunction = lnkFunctionName(this);
			linkFunction = (linkFunction.indexOf(')') > -1)?linkFunction:linkFunction +'(\''+ this +'\')';
			eval(linkFunction);
			return false;
			}
		}
	}

/**
 * Sends submits
 */
function mteSubmits(){
	var formus = document.getElementsByTagName("form");
	for(var i = 0; i < formus.length; i++){
		var formu = formus[i];
		formu.onsubmit = function(){
                        // Calls the function which name is equal to element's name
			if(this.name && this.name != ""){
				var vale = eval("typeof window." + this.name);
				if(vale == "function"){
					eval(this.name + "();");	// removes () from form
					return false;
				}
				else{
					// calls generic valdite function
					mteFormsValidate(this);
					return false;
				}
			}
		}
	}
}


/**
 * Sends changes
 */
function mteChanges(){
	var allFields = document.getElementsByTagName("input");

	for(var i = 0; i < allFields.length; i++){
		var select = allFields[i];
		select.onchange = function(){
			var functionName = lnkFunctionName(this);
			if(functionName != ""){
				functionName = (functionName.indexOf('(') > 0)?functionName:functionName +'("'+ this.name +'")';
           	eval(functionName);
				return;
				}
			}
		}
	}


/**
 * Provee a JS de la preciada funci�n trim
 *
 * @param string str
 * @return string
 */
function trim(str){
	if(!str)return '';
	return str.replace(/^\s*|\s*$/g, '');
	}

/**
 * Devuelve el nombre de la función de
 * un enlace
 * 
 * @param {Object} obj
 */
function lnkFunctionName(obj){

	var tmp = "";
	
	// control
	if(!obj)return tmp;
	
	// se obtiene algún posible nombre
	if(obj.className && obj.className != ""){
		var corto = (obj.className.indexOf("(") > -1)?obj.className.substring(0, obj.className.indexOf("(")):obj.className;
		if(corto.indexOf(' ') == -1 && corto.indexOf('0') != 0){
			tmp = (eval("typeof window."+corto) == "function")?obj.className:tmp;
			}
		}
	if(obj.name && obj.name != ""){
		corto = (obj.name.indexOf("(") > -1)?obj.name.substring(0, obj.name.indexOf("(")):obj.name;
		if(corto.indexOf(' ') == -1 && corto.indexOf('[') == -1){
			tmp = (eval("typeof window."+corto) == "function")?obj.name:tmp;
			}
		}
	if(obj.id && obj.id != ""){
		corto = (obj.id.indexOf("(") > -1)?obj.id.substring(0, obj.id.indexOf("(")):obj.id;
		tmp = (eval("typeof window."+corto) == "function")?obj.id:tmp;
		}
	return(tmp);	
	}


/**
 * Encuentra el padre de un elemento
 * 
 * @param obj elemento
 * @param string tag
 * @return obj
 */
function encontrar_padre(elemento, tag){
	
	var tmp = elemento;
	var padre;
	while(tmp.parentNode){
		if(tmp.parentNode.nodeName == tag){
			padre = tmp.parentNode;
			break;
			}
		else{
			tmp = tmp.parentNode;
			}
		}
	return padre;
	}

/**
 * Muestra / oculta el formulario de contacto
 */
function pgCanalesContactoLink(){
	var frm = document.getElementById('pgCanalesContactoForm');
	if(frm.className == 'pgFichaForm pgInv'){
		frm.className = 'pgFichaForm';
	}
	else{
		frm.className = 'pgFichaForm pgInv';
	}
}

/**
 * Cierra el formulario de contacto
 */
function pgCanalesContactoCerrar(){
	var frm = document.getElementById('pgCanalesContactoForm');
	frm.className = 'pgFichaForm pgInv';
}
