/***************************************************
	 ADDITIONAL CODE FOR CHANGING THEMES
***************************************************/
jQuery(document).ready(function($){
	$(".trigger").click(function(){
		$(".themes").toggle("fast");
		$(this).toggleClass("active");
		return false;
	});
});





/***************************************************
		  DROPDOWN MENU
***************************************************/
//** Smooth Navigational Menu- By Dynamic Drive DHTML code library: http://www.dynamicdrive.com
//** Script Download/ instructions page: http://www.dynamicdrive.com/dynamicindex1/ddlevelsmenu/
//** Menu created: Nov 12, 2008

//** Dec 12th, 08" (v1.01): Fixed Shadow issue when multiple LIs within the same UL (level) contain sub menus: http://www.dynamicdrive.com/forums/showthread.php?t=39177&highlight=smooth

//** Feb 11th, 09" (v1.02): The currently active main menu item (LI A) now gets a CSS class of ".selected", including sub menu items.

//** May 1st, 09" (v1.3):
//** 1) Now supports vertical (side bar) menu mode- set "orientation" to 'v'
//** 2) In IE6, shadows are now always disabled

//** July 27th, 09" (v1.31): Fixed bug so shadows can be disabled if desired.
//** Feb 2nd, 10" (v1.4): Adds ability to specify delay before sub menus appear and disappear, respectively. See showhidedelay variable below

var ddsmoothmenu={

	//Specify full URL to down and right arrow images (23 is padding-right added to top level LIs with drop downs):
	arrowimages: {
		down:[],
		right:[]
	},
	transition: {
		overtime:200,
		outtime:200
	}, //duration of slide in/ out animation, in milliseconds
	shadow: {
		enable:true,
		offsetx:5,
		offsety:5
	}, //enable shadow?
	showhidedelay: {
		showdelay: 50,
		hidedelay: 50
	}, //set delay in milliseconds before sub menus appear and disappear, respectively

	///////Stop configuring beyond here///////////////////////////

	detectwebkit: navigator.userAgent.toLowerCase().indexOf("applewebkit")!=-1, //detect WebKit browsers (Safari, Chrome etc)
	detectie6: document.all && !window.XMLHttpRequest,

	getajaxmenu:function($, setting){ //function to fetch external page containing the panel DIVs
		var $menucontainer=$('#'+setting.contentsource[0]) //reference empty div on page that will hold menu
		$menucontainer.html("Loading Menu...")
		$.ajax({
			url: setting.contentsource[1], //path to external menu file
			async: true,
			error:function(ajaxrequest){
				$menucontainer.html('Error fetching content. Server Response: '+ajaxrequest.responseText)
			},
			success:function(content){
				$menucontainer.html(content)
				ddsmoothmenu.buildmenu($, setting)
			}
		})
	},


	buildmenu:function($, setting){
		var smoothmenu=ddsmoothmenu
		var $mainmenu=$("#"+setting.mainmenuid+">ul") //reference main menu UL
		$mainmenu.parent().get(0).className=setting.classname || "ddsmoothmenu"
		var $headers=$mainmenu.find("ul").parent()
		$headers.hover(
			function(e){
				$(this).children('a:eq(0)').addClass('selected')
			},
			function(e){
				$(this).children('a:eq(0)').removeClass('selected')
			}
			)
		$headers.each(function(i){ //loop through each LI header
			var $curobj=$(this).css({
				zIndex: 100-i
				}) //reference current LI header
			var $subul=$(this).find('ul:eq(0)').css({
				display:'block'
			})
			$subul.data('timers', {})
			this._dimensions={
				w:this.offsetWidth,
				h:this.offsetHeight,
				subulw:$subul.outerWidth(),
				subulh:$subul.outerHeight()
				}
			this.istopheader=$curobj.parents("ul").length==1? true : false //is top level header?
			$subul.css({
				top:this.istopheader && setting.orientation!='v'? this._dimensions.h+"px" : 0
				})
			$curobj.children("a:eq(0)").css(this.istopheader? {
				paddingRight: smoothmenu.arrowimages.down[2]
				} : {})
			if (smoothmenu.shadow.enable){
				this._shadowoffset={
					x:(this.istopheader?$subul.offset().left+smoothmenu.shadow.offsetx : this._dimensions.w),
					y:(this.istopheader? $subul.offset().top+smoothmenu.shadow.offsety : $curobj.position().top)
					} //store this shadow's offsets
				if (this.istopheader)
					$parentshadow=$(document.body)
				else{
					var $parentLi=$curobj.parents("li:eq(0)")
					$parentshadow=$parentLi.get(0).$shadow
				}
				this.$shadow=$('<div class="ddshadow'+(this.istopheader? ' toplevelshadow' : '')+'"></div>').prependTo($parentshadow).css({
					left:this._shadowoffset.x+'px',
					top:this._shadowoffset.y+'px'
					})  //insert shadow DIV and set it to parent node for the next shadow div
			}
			$curobj.hover(
				function(e){
					var $targetul=$subul //reference UL to reveal
					var header=$curobj.get(0) //reference header LI as DOM object
					clearTimeout($targetul.data('timers').hidetimer)
					$targetul.data('timers').showtimer=setTimeout(function(){
						header._offsets={
							left:$curobj.offset().left,
							top:$curobj.offset().top
							}
						var menuleft=header.istopheader && setting.orientation!='v'? 0 : header._dimensions.w
						menuleft=(header._offsets.left+menuleft+header._dimensions.subulw>$(window).width())? (header.istopheader && setting.orientation!='v'? -header._dimensions.subulw+header._dimensions.w : -header._dimensions.w) : menuleft //calculate this sub menu's offsets from its parent
						if ($targetul.queue().length<=1){ //if 1 or less queued animations
							$targetul.css({
								left:menuleft+"px",
								width:header._dimensions.subulw+'px'
								}).animate({
								height:'show',
								opacity:'show'
							}, ddsmoothmenu.transition.overtime)
							if (smoothmenu.shadow.enable){
								var shadowleft=header.istopheader? $targetul.offset().left+ddsmoothmenu.shadow.offsetx : menuleft
								var shadowtop=header.istopheader?$targetul.offset().top+smoothmenu.shadow.offsety : header._shadowoffset.y
								if (!header.istopheader && ddsmoothmenu.detectwebkit){ //in WebKit browsers, restore shadow's opacity to full
									header.$shadow.css({
										opacity:1
									})
								}
								header.$shadow.css({
									overflow:'',
									width:header._dimensions.subulw+'px',
									left:shadowleft+'px',
									top:shadowtop+'px'
									}).animate({
									height:header._dimensions.subulh+'px'
									}, ddsmoothmenu.transition.overtime)
							}
						}
					}, ddsmoothmenu.showhidedelay.showdelay)
				},
				function(e){
					var $targetul=$subul
					var header=$curobj.get(0)
					clearTimeout($targetul.data('timers').showtimer)
					$targetul.data('timers').hidetimer=setTimeout(function(){
						$targetul.animate({
							height:'hide',
							opacity:'hide'
						}, ddsmoothmenu.transition.outtime)
						if (smoothmenu.shadow.enable){
							if (ddsmoothmenu.detectwebkit){ //in WebKit browsers, set first child shadow's opacity to 0, as "overflow:hidden" doesn't work in them
								header.$shadow.children('div:eq(0)').css({
									opacity:0
								})
							}
							header.$shadow.css({
								overflow:'hidden'
							}).animate({
								height:0
							}, ddsmoothmenu.transition.outtime)
						}
					}, ddsmoothmenu.showhidedelay.hidedelay)
				}
				) //end hover
		}) //end $headers.each()
		$mainmenu.find("ul").css({
			display:'none',
			visibility:'visible'
		})
	},

	init:function(setting){
		if (typeof setting.customtheme=="object" && setting.customtheme.length==2){ //override default menu colors (default/hover) with custom set?
			var mainmenuid='#'+setting.mainmenuid
			var mainselector=(setting.orientation=="v")? mainmenuid : mainmenuid+', '+mainmenuid
			document.write('<style type="text/css">\n'
				+mainselector+' ul li a {background:'+setting.customtheme[0]+';}\n'
				+mainmenuid+' ul li a:hover {background:'+setting.customtheme[1]+';}\n'
				+'</style>')
		}
		this.shadow.enable=(document.all && !window.XMLHttpRequest)? false : this.shadow.enable //in IE6, always disable shadow
		jQuery(document).ready(function($){ //ajax menu?
			if (typeof setting.contentsource=="object"){ //if external ajax menu
				ddsmoothmenu.getajaxmenu($, setting)
			}
			else{ //else if markup menu
				ddsmoothmenu.buildmenu($, setting)
			}
		})
	}

} //end ddsmoothmenu variable





/***************************************************
	     ADDITIONAL CODE FOR DROPDOWN MENU
***************************************************/
jQuery(document).ready(function($){
	ddsmoothmenu.init({
		mainmenuid: "smoothmenu1", //menu DIV id
		orientation: 'h', //Horizontal or vertical menu: Set to "h" or "v"
		classname: 'ddsmoothmenu', //class added to menu's outer DIV
		//customtheme: ["#1c5a80", "#18374a"],
		contentsource: "markup" //"markup" or ["container_id", "path_to_menu_file"]
	})
});






/***************************************************
		  ADDITIONAL CODE FOR TOOLTIP
***************************************************/
/*
 * Tooltip script 
 * powered by jQuery (http://www.jquery.com)
 * 
 * written by Alen Grakalic (http://cssglobe.com)
 * 
 * for more info visit http://cssglobe.com/post/1695/easiest-tooltip-and-image-preview-using-jquery
 *
 */
this.tooltip = function(){	
	/* CONFIG */		
	xOffset = 10;
	yOffset = 20;
	// these 2 variable determine popup's distance from the cursor
	// you might want to adjust to get the right result
	/* END CONFIG */		
	$("a.tooltip").hover(function(e){											  
		this.t = this.title;
		this.title = "";									  
		$("body").append("<p id='tooltip'>"+ this.t +"</p>");
		$("#tooltip")
		.css("top",(e.pageY - xOffset) + "px")
		.css("left",(e.pageX + yOffset) + "px")
		.fadeIn("fast");
	},
	function(){
		this.title = this.t;		
		$("#tooltip").remove();
	});
	$("a.tooltip").mousemove(function(e){
		$("#tooltip")
		.css("top",(e.pageY - xOffset) + "px")
		.css("left",(e.pageX + yOffset) + "px");
	});			
};



// starting the script on page load
$(document).ready(function(){
	tooltip();
});




/***************************************************
		  ADDITIONAL CODE FOR SKILLS
***************************************************/
jQuery(document).ready(function($){
	$('.skill-web').animate({
		marginRight: '20px'
	}, 1000 );
	$('.skill-email').animate({
		marginRight: '30px'
	}, 1000 );
	$('.skill-print').animate({
		marginRight: '40px'
	}, 1000 );
	$('.skill-seo').animate({
		marginRight: '10px'
	}, 1000 );
});






/***************************************************
		TABS JAVASCRIPT
***************************************************/
jQuery(document).ready(function($){
	//Default Action
	$(".tab_content").hide(); //Hide all content
	$("ul.tabs li:first").addClass("active").show(); //Activate first tab
	$(".tab_content:first").show(); //Show first tab content
	
	//On Click Event
	$("ul.tabs li").click(function() {
		$("ul.tabs li").removeClass("active"); //Remove any "active" class
		$(this).addClass("active"); //Add "active" class to selected tab
		$(".tab_content").hide(); //Hide all tab content
		var activeTab = $(this).find("a").attr("href"); //Find the rel attribute value to identify the active tab + content
		$(activeTab).fadeIn(); //Fade in the active content
		return false;
	});

});





/***************************************************
		ACCORDION
***************************************************/
(function($){ 
	$.fn.extend({
		accordion: function() {
			return this.each(function() {
				if($(this).data('accordiated'))
					return false;									
				$.each($(this).find('ul, li>div'), function(){
					$(this).data('accordiated', true);
					$(this).hide();
				});
				$.each($(this).find('a:not(.foo)'), function(){
					$(this).click(function(e){
						activate(e.target);
						return void(0);
					});
				});
				
				var active = false;
				if(location.hash)
					active = $(this).find('a[href=' + location.hash + ']')[0];
				else if($(this).find('li.current'))
					active = $(this).find('li.current a')[0]; 
				
				if(active){
					activate(active, 'toggle','parents');
					$(active).parents().show();
				}
				
				function activate(el,effect,parents){
					$(el)[(parents || 'parent')]('li').toggleClass('active').siblings().removeClass('active').children('ul, div').slideUp('fast');
					$(el).siblings('ul, div')[(effect || 'slideToggle')]((!effect)?'fast':null);
				}
				
			});
		}
	});
})(jQuery);


/***************************************************
	     ADDITIONAL CODE FOR ACCORDION
***************************************************/
jQuery(document).ready(function($){
	$('ul#accordion').accordion();
});




/***************************************************
				  PORTFOLIO FILTERABLE
***************************************************/
/*************************************************
**  jQuery Masonry version 1.3.2
**  Copyright David DeSandro, licensed MIT
**  http://desandro.com/resources/jquery-masonry
**************************************************/
(function(e){
	var n=e.event,o;
	n.special.smartresize={
		setup:function(){
			e(this).bind("resize",n.special.smartresize.handler)
			},
		teardown:function(){
			e(this).unbind("resize",n.special.smartresize.handler)
			},
		handler:function(j,l){
			var g=this,d=arguments;
			j.type="smartresize";
			o&&clearTimeout(o);
			o=setTimeout(function(){
				jQuery.event.handle.apply(g,d)
				},l==="execAsap"?0:100)
			}
		};

e.fn.smartresize=function(j){
	return j?this.bind("smartresize",j):this.trigger("smartresize",["execAsap"])
	};

e.fn.masonry=function(j,l){
	var g=

	{
		getBricks:function(d,b,a){
			var c=a.itemSelector===undefined;
			b.$bricks=a.appendedContent===undefined?c?d.children():d.find(a.itemSelector):c?a.appendedContent:a.appendedContent.filter(a.itemSelector)
			},
		placeBrick:function(d,b,a,c,h){
			b=Math.min.apply(Math,a);
			for(var i=b+d.outerHeight(true),f=a.length,k=f,m=c.colCount+1-f;f--;)if(a[f]==b)k=f;d.applyStyle({
				left:c.colW*k+c.posLeft,
				top:b
			},e.extend(true,{},h.animationOptions));
			for(f=0;f<m;f++)c.colY[k+f]=i
				},
		setup:function(d,b,a){
			g.getBricks(d,a,b);
			if(a.masoned)a.previousData=
				d.data("masonry");
			a.colW=b.columnWidth===undefined?a.masoned?a.previousData.colW:a.$bricks.outerWidth(true):b.columnWidth;
			a.colCount=Math.floor(d.width()/a.colW);
			a.colCount=Math.max(a.colCount,1)
			},
		arrange:function(d,b,a){
			var c;
			if(!a.masoned||b.appendedContent!==undefined)a.$bricks.css("position","absolute");
			if(a.masoned){
				a.posTop=a.previousData.posTop;
				a.posLeft=a.previousData.posLeft
				}else{
				d.css("position","relative");
				var h=e(document.createElement("div"));
				d.prepend(h);
				a.posTop=Math.round(h.position().top);
				a.posLeft=Math.round(h.position().left);
				h.remove()
				}
				if(a.masoned&&b.appendedContent!==undefined){
				a.colY=a.previousData.colY;
				for(c=a.previousData.colCount;c<a.colCount;c++)a.colY[c]=a.posTop
					}else{
				a.colY=[];
				for(c=a.colCount;c--;)a.colY.push(a.posTop)
					}
					e.fn.applyStyle=a.masoned&&b.animate?e.fn.animate:e.fn.css;
			b.singleMode?a.$bricks.each(function(){
				var i=e(this);
				g.placeBrick(i,a.colCount,a.colY,a,b)
				}):a.$bricks.each(function(){
				var i=e(this),f=Math.ceil(i.outerWidth(true)/a.colW);
				f=Math.min(f,a.colCount);
				if(f===1)g.placeBrick(i,a.colCount,a.colY,a,b);
				else{
					var k=a.colCount+1-f,m=[];
					for(c=0;c<k;c++){
						var p=a.colY.slice(c,c+f);
						m[c]=Math.max.apply(Math,p)
						}
						g.placeBrick(i,k,m,a,b)
					}
				});
		a.wallH=Math.max.apply(Math,a.colY);
		d.applyStyle({
			height:a.wallH-a.posTop
			},e.extend(true,[],b.animationOptions));
		a.masoned||setTimeout(function(){
			d.addClass("masoned")
			},1);
		l.call(a.$bricks);
		d.data("masonry",a)
		},
	resize:function(d,b,a){
		a.masoned=!!d.data("masonry");
		var c=d.data("masonry").colCount;
		g.setup(d,b,a);
		a.colCount!=c&&
		g.arrange(d,b,a)
		}
	};

return this.each(function(){
	var d=e(this),b={};

	b.masoned=!!d.data("masonry");
	var a=b.masoned?d.data("masonry").options:{},c=e.extend({},e.fn.masonry.defaults,a,j),h=a.resizeable;
	b.options=c.saveOptions?c:a;
	l=l||function(){};

	g.getBricks(d,b,c);
	if(!b.$bricks.length)return this;
	g.setup(d,c,b);
	g.arrange(d,c,b);
	!h&&c.resizeable&&e(window).bind("smartresize.masonry",function(){
		g.resize(d,c,b)
		});
	h&&!c.resizeable&&e(window).unbind("smartresize.masonry")
	})
};

e.fn.masonry.defaults={
	singleMode:false,
	columnWidth:undefined,
	itemSelector:undefined,
	appendedContent:undefined,
	saveOptions:true,
	resizeable:true,
	animate:false,
	animationOptions:{}
}
})(jQuery);



/***************************************************
	  ADDITIONAL CODE FOR FILTER NAVIGATION
***************************************************/
jQuery(document).ready(function($){
	$('ul#filtering-nav a').click(function() {
		$(this).css('outline','none');
		$('ul#filtering-nav .current').removeClass('current');
		$(this).parent().addClass('current');
	
		return false;
	});
});



/***************************************************
	     ZOOM PORTFOLIO HOVER
***************************************************/
jQuery(document).ready(function($){
	$("#portfolio a").hover(function(){
		$(this).find("img").stop().animate({
			opacity:0.4
		}, 400);
	}, function() {
		$(this).find("img").stop().animate({
			opacity:1
		}, 400);
	});
});






/***************************************************
		FORM VALIDATION JAVASCRIPT
***************************************************/
jQuery(document).ready(function($){
	$('form#contact-form').submit(function() {
		$('form#contact-form .error').remove();
		var hasError = false;
		$('.requiredField').each(function() {
			if(jQuery.trim($(this).val()) == '') {
				var labelText = $(this).prev('label').text();
				$(this).parent().append('<span class="error">Required</span>');
				$(this).addClass('inputError');
				hasError = true;
			} else if($(this).hasClass('email')) {
				var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
				if(!emailReg.test(jQuery.trim($(this).val()))) {
					var labelText = $(this).prev('label').text();
					$(this).parent().append('<span class="error">Invalid '+labelText+'</span>');
					$(this).addClass('inputError');
					hasError = true;
				}
			}
		});
		if(!hasError) {
			$('form#contact-form input.submit').fadeOut('normal', function() {
				$(this).parent().append('');
			});
			var formInput = $(this).serialize();
			$.post($(this).attr('action'),formInput, function(data){
				$('form#contact-form').slideUp("fast", function() {
					$(this).before('<p class="success">Thanks!<br /><br /> Your email was successfully sent.</p>');
				});
			});
		}

		return false;

	});
});





/***************************************************
		COMMENT FORM VALIDATION JAVASCRIPT
***************************************************/
jQuery(document).ready(function($){
	$('form#comment-form').submit(function() {
		$('form#comment-form .error').remove();
		var hasError = false;
		$('.requiredField').each(function() {
			if(jQuery.trim($(this).val()) == '') {
				var labelText = $(this).prev('label').text();
				$(this).parent().append('<span class="error">Required</span>');
				$(this).addClass('inputError');
				hasError = true;
			} else if($(this).hasClass('email')) {
				var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
				if(!emailReg.test(jQuery.trim($(this).val()))) {
					var labelText = $(this).prev('label').text();
					$(this).parent().append('<span class="error">Invalid '+labelText+'</span>');
					$(this).addClass('inputError');
					hasError = true;
				}
			}
		});
		if(!hasError) {
			$('form#comment-form input.submit').fadeOut('normal', function() {
				$(this).parent().append('');
			});
			var formInput = $(this).serialize();
			$.post($(this).attr('action'),formInput, function(data){
				$('form#comment-form').slideUp("fast", function() {
					$(this).before('<p class="success">Thanks for posting a comment.</p>');
				});
			});
		}

		return false;

	});
});





/***************************************************
		HOVER COLOR ANIMATION
***************************************************/
/*
 * jQuery Color Animations
 * Copyright 2007 John Resig
 * Released under the MIT and GPL licenses.
 */

(function(jQuery){

	// We override the animation for all of these color styles
	jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){
		jQuery.fx.step[attr] = function(fx){
			if ( fx.state == 0 ) {
				fx.start = getColor( fx.elem, attr );
				fx.end = getRGB( fx.end );
			}

			fx.elem.style[attr] = "rgb(" + [
			Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0),
			Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0),
			Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)
			].join(",") + ")";
		}
	});

	// Color Conversion functions from highlightFade
	// By Blair Mitchelmore
	// http://jquery.offput.ca/highlightFade/

	// Parse strings looking for color tuples [255,255,255]
	function getRGB(color) {
		var result;

		// Check if we're already dealing with an array of colors
		if ( color && color.constructor == Array && color.length == 3 )
			return color;

		// Look for rgb(num,num,num)
		if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
			return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];

		// Look for rgb(num%,num%,num%)
		if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
			return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];

		// Look for #a0b1c2
		if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
			return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];

		// Look for #fff
		if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
			return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];

		// Otherwise, we're most likely dealing with a named color
		return colors[jQuery.trim(color).toLowerCase()];
	}
	
	function getColor(elem, attr) {
		var color;

		do {
			color = jQuery.curCSS(elem, attr);

			// Keep going until we find an element that has color, or we hit the body
			if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") )
				break; 

			attr = "backgroundColor";
		} while ( elem = elem.parentNode );

		return getRGB(color);
	};
	
	// Some named colors to work with
	// From Interface by Stefan Petre
	// http://interface.eyecon.ro/

	var colors = {
		aqua:[0,255,255],
		azure:[240,255,255],
		beige:[245,245,220],
		black:[0,0,0],
		blue:[0,0,255],
		brown:[165,42,42],
		cyan:[0,255,255],
		darkblue:[0,0,139],
		darkcyan:[0,139,139],
		darkgrey:[169,169,169],
		darkgreen:[0,100,0],
		darkkhaki:[189,183,107],
		darkmagenta:[139,0,139],
		darkolivegreen:[85,107,47],
		darkorange:[255,140,0],
		darkorchid:[153,50,204],
		darkred:[139,0,0],
		darksalmon:[233,150,122],
		darkviolet:[148,0,211],
		fuchsia:[255,0,255],
		gold:[255,215,0],
		green:[0,128,0],
		indigo:[75,0,130],
		khaki:[240,230,140],
		lightblue:[173,216,230],
		lightcyan:[224,255,255],
		lightgreen:[144,238,144],
		lightgrey:[211,211,211],
		lightpink:[255,182,193],
		lightyellow:[255,255,224],
		lime:[0,255,0],
		magenta:[255,0,255],
		maroon:[128,0,0],
		navy:[0,0,128],
		olive:[128,128,0],
		orange:[255,165,0],
		pink:[255,192,203],
		purple:[128,0,128],
		violet:[128,0,128],
		red:[255,0,0],
		silver:[192,192,192],
		white:[255,255,255],
		yellow:[255,255,0]
	};
	
})(jQuery);



/***************************************************
	  ADDITIONAL CODE FOR COLOR HOVER EFFECT
***************************************************/
		
// box-dark hover effect		
jQuery(document).ready(function($){
	$(".box-dark").hover(function() {
		$(this).stop().animate({
			backgroundColor: "#00778f"
		}, 300);
	},function() {
		$(this).stop().animate({
			backgroundColor: "#333333"
		}, 500);
	});
});
		
// box-color hover effect		
jQuery(document).ready(function($){
	$(".box-color").hover(function() {
		$(this).stop().animate({
			backgroundColor: "#333333"
		}, 300);
	},function() {
		$(this).stop().animate({
			backgroundColor: "#00778f"
		}, 500);
	});
});		


















/***************************************************
	     TESTIMONIALS
***************************************************/
/*
 *	faded 0.3 - jQuery plugin
 *	written by Nathan Searles	
 *	http://nathansearles.com/faded/
 *
 *	Copyright (c) 2009 Nathan Searles (http://nathansearles.com/)
 *	Dual licensed under the MIT (MIT-LICENSE.txt)
 *	and GPL (GPL-LICENSE.txt) licenses.
 *
 *	Built for jQuery library
 *	http://jquery.com
 *	Compatible with jQuery 1.3.2+
 *
 */
if(typeof jQuery != "undefined") {
	jQuery(function($) {
		$.fn.extend({
			faded: function(options) {
				var settings = $.extend({}, $.fn.faded.defaults, options);
				return this.each(
					function() {
						if($.fn.jquery < "1.3.1") {
							return;
						}
						var $t = $(this);
						var $c = $t.children(":nth-child(1)");
						var o = $.metadata ? $.extend({}, settings, $t.metadata()) : settings;
						var total = $c.children().size();
						var next = 0, prev = 0, number = 0, currentitem = 0, restart = 0, restartinterval = 0;
						var loaded,active,imgSrc,clicked,current;
						if (o.random) {
							$.fn.reorder = function(callback) {
								function randOrd() {
									return(Math.round(Math.random())-0.5);
								}
								return($(this).each(function() {
									var $this = $(this);
									var $children = $this.children();
									var childCount = $children.length;
									if (childCount > 1) {
										$children.hide();
										var indices = new Array();
										for (i=0;i<childCount;i++) {
											indices[indices.length] = i;
										}
										indices = indices.sort(randOrd);
										$.each(indices,function(j,k) { 
											var $child = $children.eq(k);
											var $clone = $child.clone(true);
											$clone.show().appendTo($this);
											if (callback !== undefined) {
												callback($child, $clone);
											}
											$child.remove();
										});
									}
								}));
							};
							$c.reorder();
						}
						function pause() {
							clearInterval(autoplay);
							clearTimeout(restart);
							restart = setTimeout(function() {
								autoplay = setInterval(function(){
									animate("next");
								},o.autoplay);
							},o.autorestart);			
						}				
						$c.css({
							position:"relative"
						});
						$c.children().css({
							position:"absolute",
							top: 0, 
							left: 0,
							zIndex: 0,
							display:"none"
						});
						if (o.autoheight) {
							$c.animate({
								height: $c.children(":eq(0)").outerHeight()
								},o.autoheight);
						}
						if (o.pagination) {
							if (o.autopagination) {
								$t.append("<ul class="+o.pagination+"></ul>");
								$c.children().each(function(){
									$("."+o.pagination+"",$t).append("<li><a rel="+number+" href=\"#\" >"+(number+1)+"</a></li>");
									number++;
								});
							}
							$("."+o.pagination+" li a:eq(0)",$t).parent().addClass("current");
							$("."+o.pagination+" li a",$t).click(function(){
								current = $("."+o.pagination+" li.current a",$t).attr("rel");									
								clicked = $(this).attr("rel");
								if (current != clicked) {
									animate("pagination",clicked,current);
								}
								if(o.autoplay){
									pause();
								}
								return false;
							});
						}
						if (o.sequentialloading&&$c.children()[0].tagName=="IMG") {
							$c.css({
								background:"url("+o.loadingimg+") no-repeat 50% 50%"
								});
							imgSrc = $("img:eq(0)",$c).attr("src");
							$("img:eq(0)",$c).attr("src", imgSrc).load(function() { 
								$c.css({
									background:""
								});
								$(this).fadeIn(o.speed,function(){
									loaded = true;
								});
							});
						} else {
							$c.find(":eq(0)").fadeIn(o.speed,function(){
								loaded = true;
							});
						}
						if (o.bigtarget) {
							$c.css({
								"cursor":"pointer"
							});
							$c.click(function(){
								animate("next");
								return false;
							});									
						}			
						if (o.autoplay) {
							autoplay = setInterval(function(){
								animate("next");
							},o.autoplay);
							pause();
						}
						$("."+o.nextbtn,$t).click(function(){
							animate("next");
							if(o.autoplay){
								if (o.autorestart) {
									pause();
								} else {
									clearInterval(autoplay);	
								}
							}
							return false;
						});					
						$("."+o.prevbtn,$t).click(function(){
							animate("prev");
							if(o.autoplay){
								if (o.autorestart) {
									pause();
								} else {
									clearInterval(autoplay);	
								}
							}
							return false;
						});
						function animate(dir,clicked,current){
							if (!active&&loaded) {
								active=true;
								switch(dir) {
									case "next":
										prev = next;
										next = currentitem*1+1;
										if (total === next) {
											next = 0;
										}
										break;
									case "prev":
										prev = next;
										next = currentitem*1-1;
										if (next === -1) {
											next = total-1;
										}
										break;
									case "pagination":
										next = clicked;
										prev = current;
										break;
								}
								if (o.pagination) {
									$(".pagination li.current",$t).removeClass("current");
									$(".pagination li a:eq("+next+")",$t).parent().addClass("current");
								}
								if (o.crossfade) {
									$c.children(":eq("+next+")").css({
										zIndex:10
									}).fadeIn(o.speed,function(){
										$c.children(":eq("+prev+")").css({
											display:"none",
											zIndex:0
										});
										$(this).css({
											zIndex:0
										});
										currentitem = next;
										active = false;
									});
								} else {
									$c.children(":eq("+prev+")").fadeOut(o.speed,function(){
										if (o.autoheight) {
											$c.animate({
												height: $c.children(":eq("+next+")").outerHeight()
												},o.autoheight,function(){
												$c.children(":eq("+next+")").fadeIn(o.speed);
											});
										} else {
											$c.children(":eq("+next+")").fadeIn(o.speed);
										}
										currentitem = next;
										active = false;
									});
								}
							}
						}
					}
					);
			}
		});
		$.fn.faded.defaults = {
			speed: 100,
			crossfade: false,
			bigtarget: false,
			sequentialloading: false,
			autoheight: false,
			pagination: "pagination",
			autopagination: true,
			nextbtn: "next",
			prevbtn: "prev",
			loadingimg: false,
			autoplay: false,
			autorestart: false,
			random: false
		};
	});
}



/***************************************************
	     ADDITIONAL CODE FOR TESTIMONIALS
***************************************************/
$(function(){
	$("#testimonials").faded({
		autoheight: 250
	});
});
				
				
				
				
/***************************************************
	     			PRETTYPHOTO
***************************************************/				
/* ------------------------------------------------------------------------
 * 	Class: prettyPhoto
 * 	Use: Lightbox clone for jQuery
 * 	Author: Stephane Caron (http://www.no-margin-for-errors.com)
 * 	Version: 2.5.6
 ------------------------------------------------------------------------- */

(function($){
	$.prettyPhoto={
		version:'2.5.6'
	};

	$.fn.prettyPhoto=function(settings){
		settings=jQuery.extend({
			animationSpeed:'normal',
			opacity:0.80,
			showTitle:true,
			allowresize:true,
			default_width:500,
			default_height:344,
			counter_separator_label:'/',
			theme:'light_rounded',
			hideflash:false,
			wmode:'opaque',
			autoplay:true,
			modal:false,
			changepicturecallback:function(){},
			callback:function(){},
			markup:'<div class="pp_pic_holder"> \
      <div class="pp_top"> \
       <div class="pp_left"></div> \
       <div class="pp_middle"></div> \
       <div class="pp_right"></div> \
      </div> \
      <div class="pp_content_container"> \
       <div class="pp_left"> \
       <div class="pp_right"> \
        <div class="pp_content"> \
         <div class="pp_loaderIcon"></div> \
         <div class="pp_fade"> \
          <a href="#" class="pp_expand" title="Expand the image">Expand</a> \
          <div class="pp_hoverContainer"> \
           <a class="pp_next" href="#">next</a> \
           <a class="pp_previous" href="#">previous</a> \
          </div> \
          <div id="pp_full_res"></div> \
          <div class="pp_details clearfix"> \
           <a class="pp_close" href="#">Close</a> \
           <p class="pp_description"></p> \
           <div class="pp_nav"> \
            <a href="#" class="pp_arrow_previous">Previous</a> \
            <p class="currentTextHolder">0/0</p> \
            <a href="#" class="pp_arrow_next">Next</a> \
           </div> \
          </div> \
         </div> \
        </div> \
       </div> \
       </div> \
      </div> \
      <div class="pp_bottom"> \
       <div class="pp_left"></div> \
       <div class="pp_middle"></div> \
       <div class="pp_right"></div> \
      </div> \
     </div> \
     <div class="pp_overlay"></div> \
     <div class="ppt"></div>',
			image_markup:'<img id="fullResImage" src="" />',
			flash_markup:'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="{width}" height="{height}"><param name="wmode" value="{wmode}" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="{path}" /><embed src="{path}" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="{width}" height="{height}" wmode="{wmode}"></embed></object>',
			quicktime_markup:'<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab" height="{height}" width="{width}"><param name="src" value="{path}"><param name="autoplay" value="{autoplay}"><param name="type" value="video/quicktime"><embed src="{path}" height="{height}" width="{width}" autoplay="{autoplay}" type="video/quicktime" pluginspage="http://www.apple.com/quicktime/download/"></embed></object>',
			iframe_markup:'<iframe src ="{path}" width="{width}" height="{height}" frameborder="no"></iframe>',
			inline_markup:'<div class="pp_inline clearfix">{content}</div>'
		},settings);
		if($.browser.msie&&parseInt($.browser.version)==6){
			settings.theme="light_square";
		}
		if($('.pp_overlay').size()==0)_buildOverlay();
		var doresize=true,percentBased=false,correctSizes,$pp_pic_holder,$ppt,$pp_overlay,pp_contentHeight,pp_contentWidth,pp_containerHeight,pp_containerWidth,windowHeight=$(window).height(),windowWidth=$(window).width(),setPosition=0,scrollPos=_getScroll();
		$(window).scroll(function(){
			scrollPos=_getScroll();
			_centerOverlay();
			_resizeOverlay();
		});
		$(window).resize(function(){
			_centerOverlay();
			_resizeOverlay();
		});
		$(document).keydown(function(e){
			if($pp_pic_holder.is(':visible'))
				switch(e.keyCode){
					case 37:
						$.prettyPhoto.changePage('previous');
						break;
					case 39:
						$.prettyPhoto.changePage('next');
						break;
					case 27:
						if(!settings.modal)
						$.prettyPhoto.close();
					break;
				};

		});
	$(this).each(function(){
		$(this).bind('click',function(){
			_self=this;
			theRel=$(this).attr('rel');
			FeaturesRegExp=/\[(?:.*)\]/;
			theFeatures=FeaturesRegExp.exec(theRel);
			var images=new Array(),titles=new Array(),descriptions=new Array();
			if(theFeatures){
				$('a[rel*='+theFeatures+']').each(function(i){
					if($(this)[0]===$(_self)[0])setPosition=i;
					images.push($(this).attr('href'));
					titles.push($(this).find('img').attr('alt'));
					descriptions.push($(this).attr('title'));
				});
			}else{
				images=$(this).attr('href');
				titles=($(this).find('img').attr('alt'))?$(this).find('img').attr('alt'):'';
				descriptions=($(this).attr('title'))?$(this).attr('title'):'';
			}
			$.prettyPhoto.open(images,titles,descriptions);
			return false;
		});
	});
	$.prettyPhoto.open=function(Features_images,Features_titles,Features_descriptions){
		if($.browser.msie&&$.browser.version==6){
			$('select').css('visibility','hidden');
		};

		if(settings.hideflash)$('object,embed').css('visibility','hidden');
		images=$.makeArray(Features_images);
		titles=$.makeArray(Features_titles);
		descriptions=$.makeArray(Features_descriptions);
		image_set=($(images).size()>0)?true:false;
		_checkPosition($(images).size());
		$('.pp_loaderIcon').show();
		$pp_overlay.show().fadeTo(settings.animationSpeed,settings.opacity);
		$pp_pic_holder.find('.currentTextHolder').text((setPosition+1)+settings.counter_separator_label+$(images).size());
		if(descriptions[setPosition]){
			$pp_pic_holder.find('.pp_description').show().html(unescape(descriptions[setPosition]));
		}else{
			$pp_pic_holder.find('.pp_description').hide().text('');
		};

		if(titles[setPosition]&&settings.showTitle){
			hasTitle=true;
			$ppt.html(unescape(titles[setPosition]));
		}else{
			hasTitle=false;
		};

		movie_width=(parseFloat(grab_param('width',images[setPosition])))?grab_param('width',images[setPosition]):settings.default_width.toString();
		movie_height=(parseFloat(grab_param('height',images[setPosition])))?grab_param('height',images[setPosition]):settings.default_height.toString();
		if(movie_width.indexOf('%')!=-1||movie_height.indexOf('%')!=-1){
			movie_height=parseFloat(($(window).height()*parseFloat(movie_height)/100)-100);
			movie_width=parseFloat(($(window).width()*parseFloat(movie_width)/100)-100);
			percentBased=true;
		}
		$pp_pic_holder.fadeIn(function(){
			imgPreloader="";
			switch(_getFileType(images[setPosition])){
				case'image':
					imgPreloader=new Image();
					nextImage=new Image();
					if(image_set&&setPosition>$(images).size())nextImage.src=images[setPosition+1];
					prevImage=new Image();
					if(image_set&&images[setPosition-1])prevImage.src=images[setPosition-1];
					$pp_pic_holder.find('#pp_full_res')[0].innerHTML=settings.image_markup;
					$pp_pic_holder.find('#fullResImage').attr('src',images[setPosition]);
					imgPreloader.onload=function(){
					correctSizes=_fitToViewport(imgPreloader.width,imgPreloader.height);
					_showContent();
				};

				imgPreloader.onerror=function(){
					alert('Image cannot be loaded. Make sure the path is correct and image exist.');
					$.prettyPhoto.close();
				};

				imgPreloader.src=images[setPosition];
				break;
				case'youtube':
					correctSizes=_fitToViewport(movie_width,movie_height);
					movie='http://www.youtube.com/v/'+grab_param('v',images[setPosition]);
					if(settings.autoplay)movie+="&autoplay=1";
					toInject=settings.flash_markup.replace(/{width}/g,correctSizes['width']).replace(/{height}/g,correctSizes['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,movie);
					break;
				case'vimeo':
					correctSizes=_fitToViewport(movie_width,movie_height);
					movie_id=images[setPosition];
					movie='http://vimeo.com/moogaloop.swf?clip_id='+movie_id.replace('http://vimeo.com/','');
					if(settings.autoplay)movie+="&autoplay=1";
					toInject=settings.flash_markup.replace(/{width}/g,correctSizes['width']).replace(/{height}/g,correctSizes['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,movie);
					break;
				case'quicktime':
					correctSizes=_fitToViewport(movie_width,movie_height);
					correctSizes['height']+=15;
					correctSizes['contentHeight']+=15;
					correctSizes['containerHeight']+=15;
					toInject=settings.quicktime_markup.replace(/{width}/g,correctSizes['width']).replace(/{height}/g,correctSizes['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,images[setPosition]).replace(/{autoplay}/g,settings.autoplay);
					break;
				case'flash':
					correctSizes=_fitToViewport(movie_width,movie_height);
					flash_vars=images[setPosition];
					flash_vars=flash_vars.substring(images[setPosition].indexOf('flashvars')+10,images[setPosition].length);
					filename=images[setPosition];
					filename=filename.substring(0,filename.indexOf('?'));
					toInject=settings.flash_markup.replace(/{width}/g,correctSizes['width']).replace(/{height}/g,correctSizes['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,filename+'?'+flash_vars);
					break;
				case'iframe':
					correctSizes=_fitToViewport(movie_width,movie_height);
					frame_url=images[setPosition];
					frame_url=frame_url.substr(0,frame_url.indexOf('iframe')-1);
					toInject=settings.iframe_markup.replace(/{width}/g,correctSizes['width']).replace(/{height}/g,correctSizes['height']).replace(/{path}/g,frame_url);
					break;
				case'inline':
					myClone=$(images[setPosition]).clone().css({
					'width':settings.default_width
					}).wrapInner('<div id="pp_full_res"><div class="pp_inline clearfix"></div></div>').appendTo($('body'));
					correctSizes=_fitToViewport($(myClone).width(),$(myClone).height());
					$(myClone).remove();
					toInject=settings.inline_markup.replace(/{content}/g,$(images[setPosition]).html());
					break;
			};

			if(!imgPreloader){
				$pp_pic_holder.find('#pp_full_res')[0].innerHTML=toInject;
				_showContent();
			};

		});
};

$.prettyPhoto.changePage=function(direction){
	if(direction=='previous'){
		setPosition--;
		if(setPosition<0){
			setPosition=0;
			return;
		};

}else{
	if($('.pp_arrow_next').is('.disabled'))return;
	setPosition++;
};

if(!doresize)doresize=true;
	_hideContent(function(){
	$.prettyPhoto.open(images,titles,descriptions)
	});
$('a.pp_expand,a.pp_contract').fadeOut(settings.animationSpeed);
	};

	$.prettyPhoto.close=function(){
		$pp_pic_holder.find('object,embed').css('visibility','hidden');
		$('div.pp_pic_holder,div.ppt,.pp_fade').fadeOut(settings.animationSpeed);
		$pp_overlay.fadeOut(settings.animationSpeed,function(){
			$('#pp_full_res').html('');
			$pp_pic_holder.attr('style','').find('div:not(.pp_hoverContainer)').attr('style','');
			_centerOverlay();
			if($.browser.msie&&$.browser.version==6){
				$('select').css('visibility','visible');
			};

			if(settings.hideflash)$('object,embed').css('visibility','visible');
			setPosition=0;
			settings.callback();
		});
		doresize=true;
	};

	_showContent=function(){
		$('.pp_loaderIcon').hide();
		projectedTop=scrollPos['scrollTop']+((windowHeight/2)-(correctSizes['containerHeight']/2));
		if(projectedTop<0)projectedTop=0+$ppt.height();
		$pp_pic_holder.find('.pp_content').animate({
			'height':correctSizes['contentHeight']
			},settings.animationSpeed);
		$pp_pic_holder.animate({
			'top':projectedTop,
			'left':(windowWidth/2)-(correctSizes['containerWidth']/2),
			'width':correctSizes['containerWidth']
			},settings.animationSpeed,function(){
			$pp_pic_holder.find('.pp_hoverContainer,#fullResImage').height(correctSizes['height']).width(correctSizes['width']);
			$pp_pic_holder.find('.pp_fade').fadeIn(settings.animationSpeed);
			if(image_set&&_getFileType(images[setPosition])=="image"){
				$pp_pic_holder.find('.pp_hoverContainer').show();
			}else{
				$pp_pic_holder.find('.pp_hoverContainer').hide();
			}
			if(settings.showTitle&&hasTitle){
				$ppt.css({
					'top':$pp_pic_holder.offset().top-25,
					'left':$pp_pic_holder.offset().left+20,
					'display':'none'
				});
				$ppt.fadeIn(settings.animationSpeed);
			};

			if(correctSizes['resized'])$('a.pp_expand,a.pp_contract').fadeIn(settings.animationSpeed);
			settings.changepicturecallback();
		});
	};

	function _hideContent(callback){
		$pp_pic_holder.find('#pp_full_res object,#pp_full_res embed').css('visibility','hidden');
		$pp_pic_holder.find('.pp_fade').fadeOut(settings.animationSpeed,function(){
			$('.pp_loaderIcon').show();
			if(callback)callback();
		});
		$ppt.fadeOut(settings.animationSpeed);
	}
	function _checkPosition(setCount){
		if(setPosition==setCount-1){
			$pp_pic_holder.find('a.pp_next').css('visibility','hidden');
			$pp_pic_holder.find('a.pp_arrow_next').addClass('disabled').unbind('click');
		}else{
			$pp_pic_holder.find('a.pp_next').css('visibility','visible');
			$pp_pic_holder.find('a.pp_arrow_next.disabled').removeClass('disabled').bind('click',function(){
				$.prettyPhoto.changePage('next');
				return false;
			});
		};

		if(setPosition==0){
			$pp_pic_holder.find('a.pp_previous').css('visibility','hidden');
			$pp_pic_holder.find('a.pp_arrow_previous').addClass('disabled').unbind('click');
		}else{
			$pp_pic_holder.find('a.pp_previous').css('visibility','visible');
			$pp_pic_holder.find('a.pp_arrow_previous.disabled').removeClass('disabled').bind('click',function(){
				$.prettyPhoto.changePage('previous');
				return false;
			});
		};

		if(setCount>1){
			$('.pp_nav').show();
		}else{
			$('.pp_nav').hide();
		}
	};

function _fitToViewport(width,height){
	hasBeenResized=false;
	_getDimensions(width,height);
	imageWidth=width;
	imageHeight=height;
	if(((pp_containerWidth>windowWidth)||(pp_containerHeight>windowHeight))&&doresize&&settings.allowresize&&!percentBased){
		hasBeenResized=true;
		notFitting=true;
		while(notFitting){
			if((pp_containerWidth>windowWidth)){
				imageWidth=(windowWidth-200);
				imageHeight=(height/width)*imageWidth;
			}else if((pp_containerHeight>windowHeight)){
				imageHeight=(windowHeight-200);
				imageWidth=(width/height)*imageHeight;
			}else{
				notFitting=false;
			};

			pp_containerHeight=imageHeight;
			pp_containerWidth=imageWidth;
		};

		_getDimensions(imageWidth,imageHeight);
	};

	return{
		width:Math.floor(imageWidth),
		height:Math.floor(imageHeight),
		containerHeight:Math.floor(pp_containerHeight),
		containerWidth:Math.floor(pp_containerWidth)+40,
		contentHeight:Math.floor(pp_contentHeight),
		contentWidth:Math.floor(pp_contentWidth),
		resized:hasBeenResized
	};

};

function _getDimensions(width,height){
	width=parseFloat(width);
	height=parseFloat(height);
	$pp_details=$pp_pic_holder.find('.pp_details');
	$pp_details.width(width);
	detailsHeight=parseFloat($pp_details.css('marginTop'))+parseFloat($pp_details.css('marginBottom'));
	$pp_details=$pp_details.clone().appendTo($('body')).css({
		'position':'absolute',
		'top':-10000
	});
	detailsHeight+=$pp_details.height();
	detailsHeight=(detailsHeight<=34)?36:detailsHeight;
	if($.browser.msie&&$.browser.version==7)detailsHeight+=8;
	$pp_details.remove();
	pp_contentHeight=height+detailsHeight;
	pp_contentWidth=width;
	pp_containerHeight=pp_contentHeight+$ppt.height()+$pp_pic_holder.find('.pp_top').height()+$pp_pic_holder.find('.pp_bottom').height();
	pp_containerWidth=width;
}
function _getFileType(itemSrc){
	if(itemSrc.match(/youtube\.com\/watch/i)){
		return'youtube';
	}else if(itemSrc.match(/vimeo\.com/i)){
		return'vimeo';
	}else if(itemSrc.indexOf('.mov')!=-1){
		return'quicktime';
	}else if(itemSrc.indexOf('.swf')!=-1){
		return'flash';
	}else if(itemSrc.indexOf('iframe')!=-1){
		return'iframe'
		}else if(itemSrc.substr(0,1)=='#'){
		return'inline';
	}else{
		return'image';
	};

};

function _centerOverlay(){
	if(doresize){
		titleHeight=$ppt.height();
		contentHeight=$pp_pic_holder.height();
		contentwidth=$pp_pic_holder.width();
		projectedTop=(windowHeight/2)+scrollPos['scrollTop']-((contentHeight+titleHeight)/2);
		$pp_pic_holder.css({
			'top':projectedTop,
			'left':(windowWidth/2)+scrollPos['scrollLeft']-(contentwidth/2)
			});
		$ppt.css({
			'top':projectedTop-titleHeight,
			'left':(windowWidth/2)+scrollPos['scrollLeft']-(contentwidth/2)+20
			});
	};

};

function _getScroll(){
	if(self.pageYOffset){
		return{
			scrollTop:self.pageYOffset,
			scrollLeft:self.pageXOffset
			};

}else if(document.documentElement&&document.documentElement.scrollTop){
	return{
		scrollTop:document.documentElement.scrollTop,
		scrollLeft:document.documentElement.scrollLeft
		};

}else if(document.body){
	return{
		scrollTop:document.body.scrollTop,
		scrollLeft:document.body.scrollLeft
		};

};

};

function _resizeOverlay(){
	windowHeight=$(window).height();
	windowWidth=$(window).width();
	$pp_overlay.css({
		'height':$(document).height()
		});
};

function _buildOverlay(){
	$('body').append(settings.markup);
	$pp_pic_holder=$('.pp_pic_holder');
	$ppt=$('.ppt');
	$pp_overlay=$('div.pp_overlay');
	$pp_pic_holder.attr('class','pp_pic_holder '+settings.theme);
	$pp_overlay.css({
		'opacity':0,
		'height':$(document).height()
		}).bind('click',function(){
		if(!settings.modal)
			$.prettyPhoto.close();
	});
	$('a.pp_close').bind('click',function(){
		$.prettyPhoto.close();
		return false;
	});
	$('a.pp_expand').bind('click',function(){
		$this=$(this);
		if($this.hasClass('pp_expand')){
			$this.removeClass('pp_expand').addClass('pp_contract');
			doresize=false;
		}else{
			$this.removeClass('pp_contract').addClass('pp_expand');
			doresize=true;
		};

		_hideContent(function(){
			$.prettyPhoto.open(images,titles,descriptions)
			});
		$pp_pic_holder.find('.pp_fade').fadeOut(settings.animationSpeed);
		return false;
	});
	$pp_pic_holder.find('.pp_previous, .pp_arrow_previous').bind('click',function(){
		$.prettyPhoto.changePage('previous');
		return false;
	});
	$pp_pic_holder.find('.pp_next, .pp_arrow_next').bind('click',function(){
		$.prettyPhoto.changePage('next');
		return false;
	});
};

_centerOverlay();
};

function grab_param(name,url){
	name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var regexS="[\\?&]"+name+"=([^&#]*)";
	var regex=new RegExp(regexS);
	var results=regex.exec(url);
	if(results==null)
		return"";else
		return results[1];
}
})(jQuery);




/***************************************************
	     ADDITIONAL CODE FOR PRETTYPHOTO
***************************************************/
jQuery(document).ready(function($){
	$("a[rel^='prettyPhoto']").prettyPhoto();
});

	
	
	
/***************************************************
	     TWIITER JAVASCRIPT CODE
***************************************************/	
(function($) {
 
	$.fn.tweet = function(o){
		var s = {
			username: [""],              // [string]   required, unless you want to display our tweets. :) it can be an array, just do ["username1","username2","etc"]
			list: null,                              //[string]   optional name of list belonging to username
			avatar_size: null,                      // [integer]  height and width of avatar if displayed (48px max)
			count: 3,                               // [integer]  how many tweets to display?
			intro_text: null,                       // [string]   do you want text BEFORE your your tweets?
			outro_text: null,                       // [string]   do you want text AFTER your tweets?
			join_text:  null,                       // [string]   optional text in between date and tweet, try setting to "auto"
			auto_join_text_default: "i said,",      // [string]   auto text for non verb: "i said" bullocks
			auto_join_text_ed: "i",                 // [string]   auto text for past tense: "i" surfed
			auto_join_text_ing: "i am",             // [string]   auto tense for present tense: "i was" surfing
			auto_join_text_reply: "i replied to",   // [string]   auto tense for replies: "i replied to" @someone "with"
			auto_join_text_url: "i was looking at", // [string]   auto tense for urls: "i was looking at" http:...
			loading_text: null,                     // [string]   optional loading text, displayed while tweets load
			query: null,                            // [string]   optional search query
			refresh_interval: null                  // [integer]  optional number of seconds after which to reload tweets
		};
    
		if(o) $.extend(s, o);
    
		$.fn.extend({
			linkUrl: function() {
				var returning = [];
				var regexp = /((ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?)/gi;
				this.each(function() {
					returning.push(this.replace(regexp,"<a href=\"$1\">$1</a>"));
				});
				return $(returning);
			},
			linkUser: function() {
				var returning = [];
				var regexp = /[\@]+([A-Za-z0-9-_]+)/gi;
				this.each(function() {
					returning.push(this.replace(regexp,"<a href=\"http://twitter.com/$1\">@$1</a>"));
				});
				return $(returning);
			},
			linkHash: function() {
				var returning = [];
				var regexp = /(?:^| )[\#]+([A-Za-z0-9-_]+)/gi;
				this.each(function() {
					returning.push(this.replace(regexp, ' <a href="http://search.twitter.com/search?q=&tag=$1&lang=all&from='+s.username.join("%2BOR%2B")+'">#$1</a>'));
				});
				return $(returning);
			},
			capAwesome: function() {
				var returning = [];
				this.each(function() {
					returning.push(this.replace(/\b(awesome)\b/gi, '<span class="awesome">$1</span>'));
				});
				return $(returning);
			},
			capEpic: function() {
				var returning = [];
				this.each(function() {
					returning.push(this.replace(/\b(epic)\b/gi, '<span class="epic">$1</span>'));
				});
				return $(returning);
			},
			makeHeart: function() {
				var returning = [];
				this.each(function() {
					returning.push(this.replace(/(&lt;)+[3]/gi, "<tt class='heart'>&#x2665;</tt>"));
				});
				return $(returning);
			}
		});

		function parse_date(date_str) {
			// The non-search twitter APIs return inconsistently-formatted dates, which Date.parse
			// cannot handle in IE. We therefore perform the following transformation:
			// "Wed Apr 29 08:53:31 +0000 2009" => "Wed, Apr 29 2009 08:53:31 +0000"
			return Date.parse(date_str.replace(/^([a-z]{3})( [a-z]{3} \d\d?)(.*)( \d{4})$/i, '$1,$2$4$3'));
		}

		function relative_time(time_value) {
			var parsed_date = parse_date(time_value);
			var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
			var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
			var r = '';
			if (delta < 60) {
				r = delta + ' seconds ago';
			} else if(delta < 120) {
				r = 'a minute ago';
			} else if(delta < (45*60)) {
				r = (parseInt(delta / 60, 10)).toString() + ' minutes ago';
			} else if(delta < (2*60*60)) {
				r = 'an hour ago';
			} else if(delta < (24*60*60)) {
				r = '' + (parseInt(delta / 3600, 10)).toString() + ' hours ago';
			} else if(delta < (48*60*60)) {
				r = 'a day ago';
			} else {
				r = (parseInt(delta / 86400, 10)).toString() + ' days ago';
			}
			return 'about ' + r;
		}

		function build_url() {
			var proto = ('https:' == document.location.protocol ? 'https:' : 'http:');
			if (s.list) {
				return proto+"//api.twitter.com/1/"+s.username[0]+"/lists/"+s.list+"/statuses.json?per_page="+s.count+"&callback=?";
			} else if (s.query == null && s.username.length == 1) {
				return proto+'//api.twitter.com/1/statuses/user_timeline.json?screen_name='+s.username[0]+'&count='+s.count+'&include_rts=1&callback=?';
			} else {
				var query = (s.query || 'from:'+s.username.join(' OR from:'));
				return proto+'//search.twitter.com/search.json?&q='+encodeURIComponent(query)+'&rpp='+s.count+'&callback=?';
			}
		}

		return this.each(function(i, widget){
			var list = $('<ul class="tweet_list">').appendTo(widget);
			var intro = '<p class="tweet_intro">'+s.intro_text+'</p>';
			var outro = '<p class="tweet_outro">'+s.outro_text+'</p>';
			var loading = $('<p class="loading">'+s.loading_text+'</p>');

			if(typeof(s.username) == "string"){
				s.username = [s.username];
			}

			if (s.loading_text) $(widget).append(loading);
			$(widget).bind("load", function(){
				$.getJSON(build_url(), function(data){
					if (s.loading_text) loading.remove();
					if (s.intro_text) list.before(intro);
					list.empty();
					var tweets = (data.results || data);
					$.each(tweets, function(i,item){
						// auto join text based on verb tense and content
						if (s.join_text == "auto") {
							if (item.text.match(/^(@([A-Za-z0-9-_]+)) .*/i)) {
								var join_text = s.auto_join_text_reply;
							} else if (item.text.match(/(^\w+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+) .*/i)) {
								var join_text = s.auto_join_text_url;
							} else if (item.text.match(/^((\w+ed)|just) .*/im)) {
								var join_text = s.auto_join_text_ed;
							} else if (item.text.match(/^(\w*ing) .*/i)) {
								var join_text = s.auto_join_text_ing;
							} else {
								var join_text = s.auto_join_text_default;
							}
						} else {
							var join_text = s.join_text;
						};
   
						var from_user = item.from_user || item.user.screen_name;
						var profile_image_url = item.profile_image_url || item.user.profile_image_url;
						var join_template = '<span class="tweet_join"> '+join_text+' </span>';
						var join = ((s.join_text) ? join_template : ' ');
						var avatar_template = '<a class="tweet_avatar" href="http://twitter.com/'+from_user+'"><img src="'+profile_image_url+'" height="'+s.avatar_size+'" width="'+s.avatar_size+'" alt="'+from_user+'\'s avatar" title="'+from_user+'\'s avatar" border="0"/></a>';
						var avatar = (s.avatar_size ? avatar_template : '');
						var date = '<span class="tweet_time"><a href="http://twitter.com/'+from_user+'/statuses/'+item.id+'" title="view tweet on twitter">'+relative_time(item.created_at)+'</a></span>';
						var text = '<span class="tweet_text">' +$([item.text]).linkUrl().linkUser().linkHash().makeHeart().capAwesome().capEpic()[0]+ '</span>';
   
						// until we create a template option, arrange the items below to alter a tweet's display.
						list.append('<li>' + avatar + date + join + text + '</li>');
   
						list.children('li:first').addClass('tweet_first');
						list.children('li:odd').addClass('tweet_even');
						list.children('li:even').addClass('tweet_odd');
					});
					if (s.outro_text) list.after(outro);
					$(widget).trigger("loaded").trigger((tweets.length == 0 ? "empty" : "full"));
					if (s.refresh_interval) {
						window.setTimeout(function() {
							$(widget).trigger("load");
						}, 1000 * s.refresh_interval);
					};
				});
			}).trigger("load");
		});
	};
})(jQuery);




/***************************************************
	     ADDITIONAL CODE FOR TWITTER
***************************************************/
jQuery(document).ready(function($) {
	$(".tweets").tweet({
		join_text: "auto",
		username: "studio4s",
		avatar_size:0,
		count: 5,
		auto_join_text_default: "",
		auto_join_text_ed: "",
		auto_join_text_ing: "",
		auto_join_text_reply: "",
		auto_join_text_url: "",
		loading_text: "loading tweets..."
	});
})
	
	
	
	
/***************************************************
	     SCROLL TO TOP JAVASCRIPT
***************************************************/	
jQuery(document).ready(function(){
	$('a[href=#wrapper]').click(function() {
		if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'')
			&& location.hostname == this.hostname) {
			var $target = $(this.hash);
			$target = $target.length && $target || $('[name=' + this.hash.slice(1) +']');
			if ($target.length) {
				var targetOffset = $target.offset().top;
				$('html,body').animate({
					scrollTop: targetOffset
				}, 500);
				return false;
			}
		}
	});
});
