// Sergi Meseguer http://www.zigotica.com/ 

var DMSTK = {
		
/*::::::::::::::::::::::::::::::::: ROUNDED CORNERS :::::::::::::::::::::::::::::::::*/
		roundeMeNow : function() {
			$(".to_hell_with_rounded_corners, #main_menu li").each(function(i){
			   this.innerHTML += '<span class="rc ne"></span><span class="rc nw"></span><span class="rc se"></span><span class="rc sw"></span>';
			});
		},

/*::::::::::::::::::::::::::::::::: TARGET POPUPS :::::::::::::::::::::::::::::::::*/
		autoPopup : function() {
			$(".popup").each(function(i){
				$(this).attr("target", "_blank");
			});
		},
		
/*::::::::::::::::::::::::::::::::: DOCK :::::::::::::::::::::::::::::::::*/
		DOCKED : 0,
		
		createDock : function(){
			if(!$("#forums_publish_response_title")) return;
			var cont = '<ul class="common_actions" id="dock_button_container"><li><a href="javascript:DMSTK.toggleDock();" id="common_actions_complete_list" class="FR arrow_right"><span>Dock</span></a></li></ul>';
			$("#forums_publish_response_title").before(cont); 
		},
		
		toggleDock : function(){
			if(DMSTK.DOCKED == 0){ 
				$("#dock_button_container").parent().parent().addClass("docked");
				DMSTK.DOCKED = 1;
			}
			else {
				$("#dock_button_container").parent().parent().removeClass("docked");
				DMSTK.DOCKED = 0;
			}
		},



/*::::::::::::::::::::::::::::::::: UN/MARK INPUTS :::::::::::::::::::::::::::::::::*/
		prepareMarkInputsLink : function(){
			if(!$("#message_order_title")) return;
			var cont = '<a href="javascript:DMSTK.toggleInputs(\'form_listado_mensajes\');">All/None</a>';
			$("#message_order_title").after(cont); 
		},

		toggleInputs : function(fm){
			var target = document.getElementById(fm);
			var inputs = target.getElementsByTagName("input");
			for (var i = 0; (input = inputs[i]); i++) {
				if(input.type == "checkbox" && input.checked == true) input.checked = false;
				else if(input.type == "checkbox" && input.checked == false) input.checked = true;
			}
		},
	
		
/*::::::::::::::::::::::::::::::::: STICKY FINGERS... OR FORMS :::::::::::::::::::::::::::::::::*/
		stickMyForms : function(){
			$(".stickme").each(function(i){
				var myF = this;
				$(this.elements).each(function(j){
					$(this).bind("focus", function(e){
					      $(myF).addClass("sticky");
				    });				
					$(this).bind("blur", function(e){
					      $(myF).removeClass("sticky");
				    });		
				});
		    });
		},
		
/*::::::::::::::::::::::::::::::::: ADDING HREF TO BUGLIST TABLE ROWS :::::::::::::::::::::::::::::::::*/
		bugListHref : function(){
			$(".bugs_list a").each(function(i){
				var myH = this.href;
				var parentTR = this;
				while (parentTR.tagName != "TR") parentTR = parentTR.parentNode;
				
				$(parentTR).bind("click", function(e){
				      location.href = myH;
			    });				


		    });
		},



/*::::::::::::::::::::::::::::::::: AUTO VALIDATE FORMS :::::::::::::::::::::::::::*/

		autoValidateForms : function() {
			var self = this;
	
			$("form").each(function(){
				$(this).find("button, input.button").hover(
					function(){ $(this).addClass("hover"); },
					function(){ $(this).removeClass("hover"); }
				);
				$(this).submit(function(e){ return self._validate(e, this); });
			});
		},
	
		_validate : function(e, _form) {
			var isAllOk = true;
			$(_form).find(".formfield.required").each(function(){
				var elem = $(this).find("input, textarea, select");
				var val = elem.val().replace(/^\s+/, '').replace(/\s+$/, '');
				var elemErr = !val.length || ($(this).is(".email") && !/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(val));
				$(this).toggleClass("error", elemErr);
				if (elemErr && isAllOk) elem.get(0).focus();
				isAllOk &= !elemErr;
			});
			if (!isAllOk) alert("Por favor, rellena correctamente los campos obligatorios");
			return !!isAllOk;
		},

/*::::::::::::::::::::::::::::::::: OPTIONAL MENUS  :::::::::::::::::::::::::::*/

		autoOptional : function(what) {
		    var elem = $("#section_menu.optional");
		    var self = $(what);
		    var active = false;
		    
		    if (!elem.length) return;
		    
		    $(elem).hover(function(){
		        active = true;
		    }, function(){
		        active = false;
		        $(this).fadeOut();
		        self.parent().removeClass("current");
		    });
		    self.css("cursor", "default")
		        .click(function(e){
		            e.preventDefault();
		            e.stopPropagation();
		            return false;
		        })
		        .hover(function(e, a){
    		        elem.fadeIn();
		            self.parent().addClass("current");
    		    }, function(){
                    setTimeout(function(){
                        if (!active) {
            		        self.parent().removeClass("current");
                            elem.fadeOut();
                        }
                    }, 200);
    		    });
	    }
}


$(document).ready(function() {
	if (document.getElementById) {
		DMSTK.roundeMeNow(); 
		if(!$.browser.msie) DMSTK.autoPopup();
	}
	
	DMSTK.autoValidateForms();
	DMSTK.autoOptional("#mm_about_us");
});
