/**
 * fuerapapel-userSites
 * -----------------------------------------------------------------
 *
 * author:               Alcaraz & Estevez Consultores
 * projectId:            
 * version:              0.1
 * revision:             $Rev: 17182 $
 * creation date:        14-06-2010
 * modification date:    $Date: 2010-12-01 18:09:22 +0000 (Wed, 01 Dec 2010) $
 * description:          
 * notes:                
 *
 */

(function(){
	ALCARAZ.htmlUtils.initExternalLinks();
	ALCARAZ.misc.initFullLinks();
	ALCARAZ.misc.initWidgets();


	if( $.browser.msie ) {
		ALCARAZ.cssFixes.fixIESelectors();
		ALCARAZ.cssFixes.fixLegends();
	}
	
	
	$("#contents > div").addClass("contentPanel");
	$("body").addClass("jsfixed");
	
	
	/**
	 * coda-slider like effect,
	 * based on Coda Slider Effect tutorial (http://jqueryfordesigners.com/coda-slider-effect/)
	 * by Remy Sharp
	 */
	var slider = {
		
		init : function() {
			$("#contents")
				.wrap('<div id="contentsWrapper" />')
				.css('width', ($("#contents > div")[0].offsetWidth * $("#contents > div").length) + 20); /* 20: some extra width for safari */
			
			$("#nav").find('a').click(slider.selectNav);
			
			if(window.location.hash) {
				slider.trigger({ id : window.location.hash.substr(1) });
			} else {
				$('#nav a:first').click();
			}
			
			$('#wrapper').serialScroll(scrollOptions);
			$.localScroll(scrollOptions);
			$.localScroll.hash(scrollOptions);
		},
		
		selectNav : function() {
			$(this)
				.parents('ul:first')
					.find('a')
						.removeClass('selected')
					.end()
				.end()
				.addClass('selected');
		},
		
		trigger : function(data) {
			var el = $('#nav').find('a[href$="' + data.id + '"]').get(0);
			slider.selectNav.call(el);
		}
	};
	
	var scrollOptions = {
		target: "#contentsWrapper",
		items: $("#contents > div"),
		navigation: $("#nav a"),
		axis: 'x',
		onAfter: slider.trigger,
		offset: 0,
		duration: 500,
		easing: 'swing'
	};
	
	
	if(!( $.browser.msie && ($.browser.version < 7))) {
		slider.init();
	}
	
	
	
	
	// text slideshow on the header
	var siteDescriptionSlideShow = {
		els        : $("#siteDescription li"),
		totalEls   : 0,
		currentEl  : 0,
		intervalId : null,
		speed      : 5000,
		
		
		init : function() {
			
			this.totalEls  = this.els.length;
			this.currentEl = 0;
			
			if(this.totalEls > 1) {
				this.els.not(":first").hide();
				this.startSlideshow();
			}
		},
		
		
		crossfade : function(el1, el2) {
			
			siteDescriptionSlideShow.els.eq(el2).fadeIn("slow");
			
			this.els.eq(el1).fadeOut("slow", function() {
				siteDescriptionSlideShow.currentEl = el2;
			});
		},
		
		
		startSlideshow : function() {
			var SELF = this;
			
			this.intervalId = setInterval(
				function() {
					var el1 = SELF.currentEl;
					var el2 = (SELF.currentEl < SELF.totalEls -1) ? (SELF.currentEl + 1) : 0;
					
					SELF.crossfade(el1, el2);
				},
				this.speed );
		},
		
		
		stopSlideshow : function() {
			clearInterval(this.intervalId);
		}
		
	};
	
	siteDescriptionSlideShow.init();
	
	
	
	// multilanguage forms or whatever
	$(".multiLang").each(function(i) {
		
		var multiLangEl    = $(this);
		var availableLangs = [];
		
		// get all available languages
		$("[lang]" ,$(this)).each(function() {
		    var lang = $(this).attr("lang");

		    if($.inArray(lang, availableLangs) == -1) {
		        availableLangs.push(lang);
		    }
		});
		
		// if there are more than one lang, build the selector
		if(availableLangs.length > 1) {
			var langSelector = $('<ul class="langSelector"></ul>').appendTo( $(this) );

			for(var i = 0; i < availableLangs.length; i++) {
				var langOpt = $('<li>' + availableLangs[i] + '</li>').appendTo(langSelector);

				langOpt
					.data("lang", availableLangs[i])
					.bind("click", function() {
						setLang(multiLangEl, $(this).data('lang'));
					});
			}
		}
		
		// store the lang array in the element
		$(this).data("availableLangs", availableLangs);
		
		// show the first lang
		setLang($(this), availableLangs[0]);
	});
	
	
	function setLang(el, lang) {
		if(el.data("availableLangs").length > 0) {
			
			// validate the lang code
			if( jQuery.inArray(lang, el.data("availableLangs")) == -1 ) {
				return;
			}
			
			// show / hide the txt
			for(var i = 0; i < el.data("availableLangs").length; i++) {
				
				var langName = el.data("availableLangs")[i];
				
				if(langName == lang) {
					$("[lang="+langName+"]", el).removeClass("hiddenLang");
				} else {
					$("[lang="+langName+"]", el).addClass("hiddenLang");
				}
			}
		}
	}
	
	
	var validatorObj = new ALCARAZ.forms.Validator();
	
	$("form").bind("submit", function() {
		
		var form = this;
		
		// reset the validator
		validatorObj.init();
		
		$("input", form).each(function(i, n) {
			$(n).removeClass("error");
		});
		
		// check the required fields
		$(".required", form).not("span").each(function(i, n) {
			validatorObj.checkRequired($(n));
		});
		
		// validate mail addresses
		if( $('#fEmail', form)[0] ) {
			validatorObj.checkValidMail($("#fEmail", form));
		}
		
		// passwords
		if( $('#fPassword', form)[0] && $('#fRePassword', form)[0] ) {
			if( $('#fPassword', form).val() != $('#fRePassword').val() ) {
				validatorObj.errors.push("Las contraseñas introducidas no coinciden.");
				validatorObj.erroneousFields.push($('#fPassword'));
				validatorObj.erroneousFields.push($('#fRePassword'));
			}
		}
		
		// conditions
		if( $('#fLegalConditions', form)[0] ) {
			if( !$('#fLegalConditions', form).is(":checked") ) {
				validatorObj.errors.push("La aceptación de las condiciones es un requisito indispensable para completar el proceso de registro.");
				validatorObj.erroneousFields.push($('#fLegalConditions', form));
				
				
			}
		}
		
		
		if(!validatorObj.returnVal) {
			for(var i = 0; i < validatorObj.erroneousFields.length; i++) {
				validatorObj.erroneousFields[i].addClass("error");
			}
			
			ALCARAZ.misc.showMsg("error", '<br />' + validatorObj.errors.join('<br />'));
			return false;
		}
	});
	
	
	
	$("a.fancy").unbind("click").fancybox({
		'hideOnContentClick' : true,
		'transitionIn'       : 'elastic',
		'transitionOut'      : 'none',
		'autoDimensions'     : true
	});
	
	
	$("#publicationInfoOverlay .btn").unbind("click").bind("click", function() {
		window.open($(this).attr("href"), "_blank", "resizable=yes, scrollbars=yes, menubar=no, width=1024, height=768");
		return false;
	});
	
	
	if(!( $.browser.msie && ($.browser.version < 7))) {
		$("body").append('<div id="bgDecorator" />');
	}
})();
