/**
 * Libreria utilidades
 * Metodos: 
 * 		_$(id) => document.getElementById(id)
 * 		Dom.byTag(tag, parent) => document.getElementsByTagName(tag) parent opcional
 * 		Dom.hasClass(tag, clase)
 * 		Dom.addClass(tag, clase)
 * 		Dom.removeClass(tag, clase)
 * 		Dom.toggleClass(tag, clase)
 * 		Dom.nextNode(nodoRef) => nodoRef.nextSibling() tipo elemento
 * 		Dom.prevNode(nodoRef) => nodoRef.previousSibling() tipo elemento
 * 		Dom.insertAfter(nuevoNodo, nodoRef)
 * 		Dom.create('tag',{pares propiedad valor}) segundo paramentro opcional
 */
var Dom={byId:function(id){return document.getElementById(id);},byTag:function(tag,elemento){if(!elemento)elemento=elemento||document;return elemento.getElementsByTagName(tag);},hasClass:function(n,c,d){return new RegExp('\\b'+c+(d?'[0-9]+':'')+'\\b','g').test(n.className);},addClass:function(n,c,b){var o=this.removeClass(n,c);n.className=b?c+(o!=''?(' '+o):''):(o!=''?(o+' '):'')+c;},removeClass:function(n,c){c=n.className.replace(new RegExp("(^|\\s+)"+c+"(\\s+|$)"),' ');return n.className=c!=' '?c:'';},toggleClass:function(n,c){this.hasClass(n,c)?this.removeClass(n,c):this.addClass(n,c);},nextNode:function(elemento){var next=elemento.nextSibling;while(next.nodeType!=1){next=next.nextSibling;}return next;},prevNode:function(elemento){var prev=elemento.previousSibling;while(prev.nodeType!=1){prev=prev.previousSibling;}return prev;},insertAfter:function(elem,ref){var parent=ref.parentNode;parent.lastChild==ref?parent.appendChild(elem):parent.insertBefore(elem,ref.nextSibling);},extend:function(m,elem){var elem=elem||this;for(var x in m)elem[x]=m[x];return elem;},create:function(type,opt){return this.extend(opt,document.createElement(type));},browser:{trident:function(){return(!!(window.attachEvent&&!window.opera));},presto:function(){return(!!window.opera);},webkit:function(){return(navigator.userAgent.indexOf('AppleWebKit/')>-1);},gecko:function(){return(document.getBoxObjectFor==undefined)?false:((document.getElementsByClassName)?19:18);}}};window._$=Dom.byId;

/**
 * Anadir eventos, evitar burbujeo y evitar accion por defecto
 */
function addEvent( obj, type, fn ){
		if (obj.addEventListener){
			obj.addEventListener( type, fn, false );
		}

		else if (obj.attachEvent){
			obj["e"+type+fn] = fn;
			obj[type+fn] = function(){ obj["e"+type+fn]( window.event ); }
			obj.attachEvent( "on"+type, obj[type+fn] );
		}
	}
/*
 Evito que el evento se propague a elementos padres 
 con una funcion asociada al mismo tipo de evento 
*/
function cancelBubbling(e){
    if(!e) e = window.event; 
    e.cancelBubble = true;    
    if(e.stopPropagation) e.stopPropagation(); 
}

/*
 Evito que se ejecute el comportamiento por defecto 
 (ir a url en enlace)
*/
function cancelDefault(e){
    if(!e) e = window.event; 
    e.returnValue = false;    
    if(e.preventDefault) e.preventDefault(); 
}

addEvent(window, 'load', function(){
	var instUtilidades = new Utilidades();
	instUtilidades.initialize();
})

var Utilidades = function(){};
Utilidades.prototype = {
	op: {
		selLinkPopup: 'popup'
	},
	initialize: function(options){
		for(var property in options){
			this.op[property] = options[property];
		}
		this.openPopup(this.op.selLinkPopup);
	},
	openPopup: function(valorRel){
		var links = Dom.byTag('a'), i = links.length;
		while(i--){
			if(links[i].getAttribute('rel') && links[i].getAttribute('rel').lastIndexOf(valorRel) != -1){
				var medidasPopup = {};
				medidasPopup.ancho = links[i].getAttribute('rel').split(',')[0].substring(6);
				medidasPopup.alto = links[i].getAttribute('rel').split(',')[1].split(']')[0];
				
				links[i].ancho = medidasPopup.ancho;
				links[i].alto = medidasPopup.alto;

				addEvent(links[i], 'click', function(e){
					cancelDefault(e);
					var url = this.getAttribute('href');
					var a = this.ancho;
					a+= 'px';
					var b = this.alto;
					b+= 'px';
					var params = 'width=' + a + ',' + 'height=' + b;
					var newWin = window.open(url, 'pop', params + 'resizable=yes, scrollbars=yes');
					if(window.focus) {
						newWin.focus();
					}					
				})
			}
		}
	}
};

/**
 * VALIDACION FORMULARIO CLIENTES PARA LOS CHECKBOX
 * se anade un campo de texto oculto cuyo value cambiara si un se selecciona un checkbox
 * el value del campo de texto es el que se evalua mediante LiveValidation
 */
(function(){
	function validaForm(){
		  var formaContacto1 = document.getElementById('como_contactar_1');
		  var formaContacto2 = document.getElementById('como_contactar_2');
		  var test = document.getElementById('formasContacto');
		  if( !(formaContacto1 && formaContacto2 && test)) return;
		  formaContacto1.parentNode.onclick = function(){
			if(formaContacto1.checked || formaContacto2.checked){
			  test.setAttribute('value', 'alguna');
			}
			if(!formaContacto1.checked && !formaContacto2.checked){
			  test.setAttribute('value', 'ninguna');
			}
		  }
		  formaContacto2.parentNode.onclick = formaContacto1.parentNode.onclick;
	}
	function addEvent( obj, type, fn ){
		if (obj.addEventListener){
			obj.addEventListener( type, fn, false );
		}

		else if (obj.attachEvent){
			obj["e"+type+fn] = fn;
			obj[type+fn] = function(){ obj["e"+type+fn]( window.event ); }
			obj.attachEvent( "on"+type, obj[type+fn] );
		}
	}
	addEvent(window, 'load', validaForm);
})();
