/*
 * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
 *
 * Uses the built in easing capabilities added In jQuery 1.1
 * to offer multiple easing options
 */
jQuery.easing['jswing']=jQuery.easing['swing'];jQuery.extend(jQuery.easing,{def:'easeOutQuad',swing:function(x,t,b,c,d){return jQuery.easing[jQuery.easing.def](x,t,b,c,d);},easeInQuad:function(x,t,b,c,d){return c*(t/=d)*t+b;},easeOutQuad:function(x,t,b,c,d){return-c*(t/=d)*(t-2)+b;},easeInOutQuad:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t+b;return-c/2*((--t)*(t-2)-1)+b;},easeInCubic:function(x,t,b,c,d){return c*(t/=d)*t*t+b;},easeOutCubic:function(x,t,b,c,d){return c*((t=t/d-1)*t*t+1)+b;},easeInOutCubic:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t+b;return c/2*((t-=2)*t*t+2)+b;},easeInQuart:function(x,t,b,c,d){return c*(t/=d)*t*t*t+b;},easeOutQuart:function(x,t,b,c,d){return-c*((t=t/d-1)*t*t*t-1)+b;},easeInOutQuart:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t+b;return-c/2*((t-=2)*t*t*t-2)+b;},easeInQuint:function(x,t,b,c,d){return c*(t/=d)*t*t*t*t+b;},easeOutQuint:function(x,t,b,c,d){return c*((t=t/d-1)*t*t*t*t+1)+b;},easeInOutQuint:function(x,t,b,c,d){if((t/=d/2)<1)return c/2*t*t*t*t*t+b;return c/2*((t-=2)*t*t*t*t+2)+b;},easeInSine:function(x,t,b,c,d){return-c*Math.cos(t/d*(Math.PI/2))+c+b;},easeOutSine:function(x,t,b,c,d){return c*Math.sin(t/d*(Math.PI/2))+b;},easeInOutSine:function(x,t,b,c,d){return-c/2*(Math.cos(Math.PI*t/d)-1)+b;},easeInExpo:function(x,t,b,c,d){return(t==0)?b:c*Math.pow(2,10*(t/d-1))+b;},easeOutExpo:function(x,t,b,c,d){return(t==d)?b+c:c*(-Math.pow(2,-10*t/d)+1)+b;},easeInOutExpo:function(x,t,b,c,d){if(t==0)return b;if(t==d)return b+c;if((t/=d/2)<1)return c/2*Math.pow(2,10*(t-1))+b;return c/2*(-Math.pow(2,-10*--t)+2)+b;},easeInCirc:function(x,t,b,c,d){return-c*(Math.sqrt(1-(t/=d)*t)-1)+b;},easeOutCirc:function(x,t,b,c,d){return c*Math.sqrt(1-(t=t/d-1)*t)+b;},easeInOutCirc:function(x,t,b,c,d){if((t/=d/2)<1)return-c/2*(Math.sqrt(1-t*t)-1)+b;return c/2*(Math.sqrt(1-(t-=2)*t)+1)+b;},easeInElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4;}else var s=p/(2*Math.PI)*Math.asin(c/a);return-(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;},easeOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d)==1)return b+c;if(!p)p=d*.3;if(a<Math.abs(c)){a=c;var s=p/4;}else var s=p/(2*Math.PI)*Math.asin(c/a);return a*Math.pow(2,-10*t)*Math.sin((t*d-s)*(2*Math.PI)/p)+c+b;},easeInOutElastic:function(x,t,b,c,d){var s=1.70158;var p=0;var a=c;if(t==0)return b;if((t/=d/2)==2)return b+c;if(!p)p=d*(.3*1.5);if(a<Math.abs(c)){a=c;var s=p/4;}else var s=p/(2*Math.PI)*Math.asin(c/a);if(t<1)return-.5*(a*Math.pow(2,10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p))+b;return a*Math.pow(2,-10*(t-=1))*Math.sin((t*d-s)*(2*Math.PI)/p)*.5+c+b;},easeInBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*(t/=d)*t*((s+1)*t-s)+b;},easeOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;return c*((t=t/d-1)*t*((s+1)*t+s)+1)+b;},easeInOutBack:function(x,t,b,c,d,s){if(s==undefined)s=1.70158;if((t/=d/2)<1)return c/2*(t*t*(((s*=(1.525))+1)*t-s))+b;return c/2*((t-=2)*t*(((s*=(1.525))+1)*t+s)+2)+b;},easeInBounce:function(x,t,b,c,d){return c-jQuery.easing.easeOutBounce(x,d-t,0,c,d)+b;},easeOutBounce:function(x,t,b,c,d){if((t/=d)<(1/2.75)){return c*(7.5625*t*t)+b;}else if(t<(2/2.75)){return c*(7.5625*(t-=(1.5/2.75))*t+.75)+b;}else if(t<(2.5/2.75)){return c*(7.5625*(t-=(2.25/2.75))*t+.9375)+b;}else{return c*(7.5625*(t-=(2.625/2.75))*t+.984375)+b;}},easeInOutBounce:function(x,t,b,c,d){if(t<d/2)return jQuery.easing.easeInBounce(x,t*2,0,c,d)*.5+b;return jQuery.easing.easeOutBounce(x,t*2-d,0,c,d)*.5+c*.5+b;}});

/**
 * Compact labels plugin
 * Takes one option
 *  - labelOpacity [default: true] - set to false to disable label opacity change on empty input focus
 */
(function($){$.fn.compactize=function(options){var defaults={labelOpacity:true};options=$.extend(defaults,options);return this.each(function(){var label=$(this),input=$('#'+label.attr('for'));input.focus(function(){if(options.labelOpacity){if(input.val()===''){label.css('opacity','0.5');}} else{label.hide();}});if(options.labelOpacity){input.keydown(function(){label.hide();label.css('opacity',1);});} input.blur(function(){if(input.val()===''){label.show();} if(options.labelOpacity){label.css('opacity',1);}});window.setTimeout(function(){if(input.val()!==''){label.hide();}},50);});};})(jQuery);


/*
 * hrefID jQuery extention - returns a valid #hash string from link href attribute in Internet Explorer
 */
(function($){$.fn.extend({hrefId:function(){return $(this).attr('href').substr($(this).attr('href').indexOf('#'));}});})(jQuery);

/*
 * Scripts
 *
 */
jQuery(function($) {
 
	var Engine = {
		utils : {
			links : function(){
				$('a[rel*=external]').click(function(e){
					e.preventDefault();
					window.open($(this).attr('href'));						  
				});
			},
			mails : function(){
				$('a[href^=mailto:]').each(function(){
					var mail = $(this).attr('href').replace('mailto:','');
					var replaced = mail.replace('/at/','@');
					$(this).attr('href','mailto:'+replaced);
					if($(this).text() == mail) {
						$(this).text(replaced);
					}
				});
			}
		},
		ui : {
			showcase : function() {
				var $root 		= $('div.showcase-a');
				var $links 		= $root.find('ul.index li a');
				var $slider		= $root.find('div.slider');
				
				var width 		= $root.width();
				var transition	= 500;
				var delay		= 3000;
				var easing		= 'easeInOutExpo';
				var count		= $links.size();
				
				if(count < 2) return false;
				
				$links.click(function() {
					if($slider.is(':animated') || $(this).parent().is('.active')) return false;
					
					$(this).parent().addClass('active').siblings().removeClass('active');
					var index = $links.index(this);
					$slider.animate({'margin-left': -(width*index)},transition,easing);

					return false;
				});
				
				showcaseAint = setInterval(function() {
					var $next = $root.find('ul.index li.active').next('li:first');
					if($next.size() == 0) $next = $root.find('ul.index li:first');
					$next.find('a').trigger('click');
				},(delay+transition));
				
				$root.mouseenter(function() {
					clearInterval(showcaseAint);
				});
				
			},
			testimonials : function() {
				$('div.testimonials-a').each(function(){
					var time 	= 600;				// time of the fading transition
					var cycle	= 0;				// break between auto cycle, set to 0 to turn off
					
					var $root 	= $(this);
					var count	= $root.find('p').size();
					//$root.find('p.active').removeClass('active').show();
					$root.find('p:first').show();
					
					if(count > 1){
						$root.append('<ul class="index"><li class="prev"><a href="#prev">Previous</a></li><li class="next"><a href="#next">Next</a></li></ul>');
					
						$root.find('ul.index a').click(function(){
					        if($root.find('p:animated').size() > 0) return false;
					        var $visible 	= $root.find('p:visible');
					        
					        if($(this).parent().is('.next')){
					        	var $next = $visible.next('p');
					        	if($next.size() == 0) $next = $root.find('p:first');
					        } else {
					        	var $next = $visible.prev('p');
					        	if($next.size() == 0) $next = $root.find('p:last');
					        }
					        
					        $visible.fadeOut(time, function(){
					        	$next.fadeIn(time);
					        });
					        
					        return false;
						});
					
						if(cycle != 0){
					        copyRotate = setInterval(function() {
					        	$('div.testimonials-a ul.index a.next').trigger('click');
					        }, cycle+time);
						}
					}
				});
			},
			gallery : function() {
				$('div.showcase-b').each(function() {
					var $root 		= $(this);
					var $main 		= $root.find('p img');
					var $thumbs 	= $root.find('ul li a');
					
					var speed 		= 750;
					
					$thumbs.click(function() {
						if($(this).is('.active') || $main.is(':animated') || $main.is(':hidden')) return false;
						var $thumb 	= $(this);
						var img 	= $thumb.attr('href');
						
						var imgPreloader = new Image();
						imgPreloader.src = img;
						
						$main.fadeOut(speed,function(){
							$thumb.addClass('active').parent().siblings().find('a.active').removeClass('active');
							if(imgPreloader.complete === true){
								$main.attr('src',img).fadeIn(speed);
							} else {
								imgPreloader.onload = function(){
									$main.attr('src',img).fadeIn(speed);
								}
							}
						});
						
						return false;						
					});					
				});
			}
		},
		design : {
			roundies : function() {
				$('ul.projects-a li a.thumb img, div.showcase-b ul li a img').each(function() {
					var image = $(this).attr('src');
					$(this).parent().css('background-image','url(' + image + ')');
				});
			}
		}
	};

	Engine.utils.links();
	Engine.utils.mails();
	Engine.ui.showcase();
	Engine.ui.testimonials();
	Engine.ui.gallery();
	Engine.design.roundies();
	
});
