/*////////////////////////////////////////////////////////////*/
/* MatthiasSchuetz.com JavaScript | (C) 2009 Matthias Schuetz */
/*////////////////////////////////////////////////////////////*/

/*
 * jQuery EasIng v1.1.2 - http://gsgd.co.uk/sandbox/jquery.easIng.php
 *
 * Uses the built In easIng capabilities added In jQuery 1.1
 * to offer multiple easIng options
 *
 * Copyright (c) 2007 George Smith
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 */
jQuery.extend( jQuery.easing,
{
	easeOutExpo: function (x, t, b, c, d) {
		return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
	}
});

/**
 * @author Alexander Farkas
 * v. 1.02
 */
(function($) {
	$.extend($.fx.step,{
	    backgroundPosition: function(fx) {
            if (fx.state === 0 && typeof fx.end == "string") {
                var start = $.curCSS(fx.elem,"backgroundPosition");
                start = toArray(start);
                fx.start = [start[0],start[2]];
                var end = toArray(fx.end);
                fx.end = [end[0],end[2]];
                fx.unit = [end[1],end[3]];
			}
            var nowPosX = [];
            nowPosX[0] = ((fx.end[0] - fx.start[0]) * fx.pos) + fx.start[0] + fx.unit[0];
            nowPosX[1] = ((fx.end[1] - fx.start[1]) * fx.pos) + fx.start[1] + fx.unit[1];
            fx.elem.style.backgroundPosition = nowPosX[0]+" "+nowPosX[1];

           function toArray(strg){
               strg = strg.replace(/left|top/g,"0px");
               strg = strg.replace(/right|bottom/g,"100%");
               strg = strg.replace(/([0-9\.]+)(\s|\)|$)/g,"$1px$2");
               var res = strg.match(/(-?[0-9\.]+)(px|\%|em|pt)\s(-?[0-9\.]+)(px|\%|em|pt)/);
               return [parseFloat(res[1],10),res[2],parseFloat(res[3],10),res[4]];
           }
        }
	});
})(jQuery);

jQuery.fn.showsource = function(){
	var source = this.html();
	source = source.replace(/(&nbsp;)/ig, " ");
	source = source.replace(/(\t)/ig, "");
	
	if ($.browser.msie) {
		source = source.replace(/(tab>)/ig, ">\t");
		source = source.replace(/(tab>)/ig, ">\t");
		source = source.replace(/(tab>)/ig, ">\t");
		source = source.replace(/(<BR>)/ig, "BR");
		source = source.replace(/(<([^>]+)>)/ig, "");
		source = source.replace(/(BR)/ig, "\n");
	} else {
		source = source.replace(/(tab">)/ig, "\">\t");
		source = source.replace(/(tab">)/ig, "\">\t");
		source = source.replace(/(tab">)/ig, "\">\t");
		source = source.replace(/(\<br\>)/ig, "BR");
		source = source.replace(/(<([^>]+)>)/ig, "");
		source = source.replace(/(BRBR)/ig, "\n");
		source = source.replace(/(BR)/ig, "");
	}
	
	source = "<pre>" + source + "</pre>";
	windowX = screen.width/2 - 450;
	windowY = screen.height/2 - 300;
	var sourceWindow = window.open("about:blank", "popup", "toolbar=no, width=900, height=600, top=" + windowY + ", left=" + windowX + ", resizable=yes, scrollbars=yes"); 
	sourceWindow.document.write(source);
	sourceWindow.document.close();
};

$(document).ready(function() {
	$(function(){
		try {		
			function slideFX(tabName, xPos, yPos, xPosAni, yPosAni) {
				$(tabName)
					.css({ backgroundPosition:xPos+" "+yPos })
					.mouseover(function(){
						$(this).stop().animate({ backgroundPosition:"("+xPosAni+" "+yPosAni+")" }, 300, "easeOutExpo" );
					})
					.mouseout(function(){
						if ($(this).attr("class") != "tab_active") {
							$(this).stop().animate({ backgroundPosition:"("+xPos+" "+yPos+")" }, 1000, "easeOutExpo" );
						}
					})
			}
			
			switch ($("body").attr("id")) {
				case "de":
					slideFX("#tab_general", "-13px", "0px", "-13px", "-34px");
					slideFX("#tab_ready", "-89px", "0px", "-89px", "-34px");
					slideFX("#tab_basics", "-175px", "0px", "-175px", "-34px");
					slideFX("#tab_filtering", "-260px", "0px", "-260px", "-34px");
					slideFX("#tab_manipulation", "-360px", "0px", "-360px", "-34px");
					slideFX("#tab_effects", "-489px", "0px", "-489px", "-34px");
					slideFX("#tab_transitions", "-545px", "0px", "-545px", "-34px");
					slideFX("#tab_events", "-627px", "0px", "-627px", "-34px");
					slideFX("#tab_custom", "-681px", "0px", "-681px", "-34px");
					slideFX("#tab_ajax", "-809px", "0px", "-809px", "-34px");
					slideFX("#tab_classes", "-850px", "0px", "-850px", "-34px");
					slideFX(".source", "-198px", "0px", "-198px", "-19px");
					slideFX(".addon", "-283px", "0px", "-283px", "-19px");
				break;
				
				case "de_mode2":
					slideFX("#tab_general2", "-13px", "0px", "-13px", "-34px");
					slideFX("#tab_jquery", "-96px", "0px", "-96px", "-34px");
					slideFX("#tab_mootools", "-159px", "0px", "-159px", "-34px");
					slideFX("#tab_dojo", "-239px", "0px", "-239px", "-34px");
					slideFX("#tab_protoscript", "-366px", "0px", "-366px", "-34px");
					slideFX("#tab_extjs", "-553px", "0px", "-553px", "-34px");
					slideFX("#tab_spry", "-609px", "0px", "-609px", "-34px");
					slideFX("#tab_glow", "-702px", "0px", "-702px", "-34px");
					slideFX("#tab_yahoo", "-780px", "0px", "-780px", "-34px");
					slideFX(".source", "-198px", "0px", "-198px", "-19px");
					slideFX(".addon", "-283px", "0px", "-283px", "-19px");
				break;
				
				case "en":
					slideFX("#tab_general", "-13px", "0px", "-13px", "-34px");
					slideFX("#tab_ready", "-78px", "0px", "-78px", "-34px");
					slideFX("#tab_basics", "-166px", "0px", "-166px", "-34px");
					slideFX("#tab_filtering", "-253px", "0px", "-253px", "-34px");
					slideFX("#tab_manipulation", "-353px", "0px", "-353px", "-34px");
					slideFX("#tab_effects", "-483px", "0px", "-483px", "-34px");
					slideFX("#tab_transitions", "-539px", "0px", "-539px", "-34px");
					slideFX("#tab_events", "-623px", "0px", "-623px", "-34px");
					slideFX("#tab_custom", "-678px", "0px", "-678px", "-34px");
					slideFX("#tab_ajax", "-805px", "0px", "-805px", "-34px");
					slideFX("#tab_classes", "-846px", "0px", "-846px", "-34px");
					slideFX(".source", "-198px", "0px", "-198px", "-19px");
					slideFX(".addon", "-262px", "0px", "-262px", "-19px");
				break;
				
				case "en_mode2":
					slideFX("#tab_general2", "-13px", "0px", "-13px", "-34px");
					slideFX("#tab_jquery", "-83px", "0px", "-83px", "-34px");
					slideFX("#tab_mootools", "-145px", "0px", "-145px", "-34px");
					slideFX("#tab_dojo", "-229px", "0px", "-229px", "-34px");
					slideFX("#tab_protoscript", "-356px", "0px", "-356px", "-34px");
					slideFX("#tab_extjs", "-546px", "0px", "-546px", "-34px");
					slideFX("#tab_spry", "-602px", "0px", "-602px", "-34px");
					slideFX("#tab_glow", "-698px", "0px", "-698px", "-34px");
					slideFX("#tab_yahoo", "-779px", "0px", "-779px", "-34px");
					slideFX(".source", "-198px", "0px", "-198px", "-19px");
					slideFX(".addon", "-262px", "0px", "-262px", "-19px");
				break;
			}
			
			slideFX(".doc1", "0px", "0px", "-0px", "-19px");
			slideFX(".doc2", "-66px", "0px", "-66px", "-19px");
			slideFX(".doc3", "-132px", "0px", "-132px", "-19px");
			
			function applyShowSource(sourceName) {
				$("#" + sourceName + "_source").click(function(e){
					$("#code_" + sourceName).showsource();
					e.preventDefault();
				});
			}
			
			applyShowSource("jquery");
			applyShowSource("mootools");
			applyShowSource("dojo");
			applyShowSource("protoscript");
			applyShowSource("extjs");
			applyShowSource("spry");
			applyShowSource("glow");
			applyShowSource("yahoo");
			applyShowSource("domready");
			applyShowSource("dombasics");
			applyShowSource("domfiltering");
			applyShowSource("dommanipulation");
			applyShowSource("effects");
			applyShowSource("transitions");
			applyShowSource("events");
			applyShowSource("custom");
			applyShowSource("ajax");
			applyShowSource("classes");
			
			$("a#lang_de, a#lang_en, .weblink")
				.mouseover(function(){
					$(this).stop().animate({ opacity: 0.6 }, 200 );
				})
				.mouseout(function(){
					$(this).stop().animate({ opacity: 1 }, 500 );
				})
				
			$("#sort_a")
				.mouseover(function(){
					$("#sort_b_act").stop().animate({ opacity: 0.6 }, 200 );
				})
				.mouseout(function(){
					$("#sort_b_act").stop().animate({ opacity: 1 }, 200 );
				})
				.click(function(){
					document.forms[0].submit();
				})
				
			$("#sort_b")
				.mouseover(function(){
					$("#sort_a_act").stop().animate({ opacity: 0.6 }, 200 );
				})
				.mouseout(function(){
					$("#sort_a_act").stop().animate({ opacity: 1 }, 200 );
				})
				.click(function(){
					document.forms[1].submit();
				})
			
			$("#sort_a_act, #sort_b_act")
				.click(function(){
					return false;
				})
				.mouseover(function(){
					$(this).css("cursor", "default");
				})

			$(".frameworks")
				.css("opacity", 0.1)
				.animate({ opacity: 1 }, 2500, "easeOutExpo" );
				
			$("#moreframeworks").fancybox({
				"zoomSpeedIn": 300,
				"zoomSpeedOut": 300,
				"frameWidth": 270,
				"frameHeight": 340
			}); 
		} catch(e) {}
	});
});