// delay function
jQuery.fn.delay = function(time,func) {
	this.each(function() {
		setTimeout(func,time);
	})
	return this;
};

function cyclePagerUpdate() {
		jQuery.fn.cycle.updateActivePagerLink = function(pager, currSlideIndex) { 
    	jQuery(pager).find('img').removeClass('active_slider_img')
        	.filter('#slider_preview_img img:eq('+currSlideIndex+')').addClass('active_slider_img');
		};
}

function cyclePause() {
		jQuery('#home_feature').hover(
		function(){
			jQuery('#slider_img').cycle('pause')
		},
		function(){
			jQuery('#slider_img').cycle('resume')
		});
}

function cycleStart() {
	jQuery('#loading_slider').remove();
	jQuery("#slider_img").css('display','block');
	jQuery("#slider_thumbnails").css('display','block');
	
	cyclePagerUpdate();
	cyclePause();
	
	var $sliderdisable = jQuery("meta[name=slider_disable]").attr('content');
	var $sliderspeed = jQuery("meta[name=slider_speed]").attr('content');
	if ($sliderdisable == 1){$duration = 0; }else{if ($sliderspeed != "" && $sliderdisable == ''){$duration = $sliderspeed}else{$duration = 5000;}}
	
	jQuery("#slider_img").cycle({
		fx: 'fade',
		before: onBefore,
		after: onAfter,
		easing: 'easeInOutQuad',
		next: '.slider_nav .slider_next_btn',
		timeout: $duration,
		speed: 700,
		pauseOnPagerHover: true,
		cleartypeNoBg: true,
		cleartype: true,
		pager: '#slider_preview_img',
		pagerAnchorBuilder: function(idx, slide) {
	       // return selector string for existing anchor
	       return '#slider_preview_img img:eq(' + idx + ')';
	   	}
	});
	
}

// Callback fired when each slide transition begins
function onBefore(curr,next,opts) {
    var $slide = jQuery(next);

	if(jQuery(next).hasClass('slider_cropped')){
		jQuery("#home_feature").addClass('staged');
		jQuery(".slider_content").css({marginTop:"0px"});
	}else{
		jQuery("#home_feature").removeClass('staged');
		jQuery(".slider_content").css({marginTop:"22px"});
	}
	
	jQuery(curr).find(".slider_frame").css({height:'340px'});
	
	if(curr != next){
	jQuery(curr).find(".slider_content").css({display:'none'});
	}
	
};

// Callback fired when each slide transition ends
function onAfter(curr,next,opts) {
	jQuery(this).find(".slider_content").css({display:'block'});
	jQuery(this).find(".slider_frame").css({height:'358px'});

};

// Gallery image hover	
function portfolio_img_hover($hover_class) {
	jQuery('.'+$hover_class).hover(
		function() {
				jQuery(this).find('.hover_fade').stop().animate({opacity:0.4},400);
			},
			function() {
				jQuery(this).find('.hover_fade').stop().animate({opacity:1},400);
			});
}

/*********************
//* jQuery Multi Level CSS Menu #2- By Dynamic Drive: http://www.dynamicdrive.com/
//* Last update: Nov 7th, 08': Limit # of queued animations to minmize animation stuttering
//* Menu avaiable at DD CSS Library: http://www.dynamicdrive.com/style/
*********************/
var arrowimages={down:['', ''], right:['', '']}
var jqueryslidemenu={

animateduration: {over: 100, out: 100}, //duration of slide in/ out animation, in milliseconds

buildmenu:function(menuid, arrowsvar){
	jQuery(document).ready(function($){
		$(" #main_navigation a").removeAttr("title");
		var $mainmenu=$("#"+menuid+">ul")
		var $headers=$mainmenu.find("ul").parent()
		$headers.each(function(i){
			var $curobj=$(this)
			var $subul=$(this).find('ul:eq(0)')
			this._dimensions={w:this.offsetWidth, h:this.offsetHeight, subulw:$subul.outerWidth(), subulh:$subul.outerHeight()}
			this.istopheader=$curobj.parents("ul").length==1? true : false
			$subul.css({top:this.istopheader? this._dimensions.h+"px" : 0})
			
			var $targetul=$(this).children("ul:eq(0)")
			this._offsets={left:$(this).offset().left, top:$(this).offset().top}
			var menuleft=this.istopheader? 0 : this._dimensions.w
			menuleft=(this._offsets.left+menuleft+this._dimensions.subulw>$(window).width())? (this.istopheader? -this._dimensions.subulw+this._dimensions.w : -this._dimensions.w) + 12 : menuleft
			if ($targetul.queue().length<=1) //if 1 or less queued animations
				if(menuleft==0){
					$targetul.css({left:menuleft+"px", width:this._dimensions.subulw+'px'}).removeClass("menu_flip")
				}
				if(menuleft!=0 && this.istopheader){
					$targetul.css({left:menuleft+"px", width:this._dimensions.subulw+'px'}).addClass("menu_flip")
				}else{
					$targetul.css({left:menuleft+"px", width:this._dimensions.subulw+'px'}).removeClass("menu_flip")
				}
			
			$curobj.hover(
				function(e){
					var $targetul=$(this).children("ul:eq(0)")
					this._offsets={left:$(this).offset().left, top:$(this).offset().top}
					var menuleft=this.istopheader? 0 : this._dimensions.w
					menuleft=(this._offsets.left+menuleft+this._dimensions.subulw>$(window).width())? (this.istopheader? -this._dimensions.subulw+this._dimensions.w : -this._dimensions.w) + 12 : menuleft
					if ($targetul.queue().length<=1) //if 1 or less queued animations
						if(menuleft==0){
							$targetul.css({left:menuleft+"px", width:this._dimensions.subulw+'px'}).removeClass("menu_flip").slideDown(jqueryslidemenu.animateduration.over)
						}
						if(menuleft!=0 && this.istopheader){
							$targetul.css({left:menuleft+"px", width:this._dimensions.subulw+'px'}).addClass("menu_flip").slideDown(jqueryslidemenu.animateduration.over)
						}else{
							$targetul.css({left:menuleft+"px", width:this._dimensions.subulw+'px'}).removeClass("menu_flip").slideDown(jqueryslidemenu.animateduration.over)
						}
				},
				function(e){
					var $targetul=$(this).children("ul:eq(0)")
					$targetul.slideUp(jqueryslidemenu.animateduration.out)
				}
			) //end hover
		}) //end $headers.each()
		$mainmenu.find("ul").css({display:'none', visibility:'visible'})
	}) //end document.ready
}
}

//build menu with ID="main_navigation" on page:
jqueryslidemenu.buildmenu("main_navigation", arrowimages)

jQuery(document).ready(function() {

	//Cufon fonts
	var $disable_cufon = jQuery("meta[name=disable_cufon]").attr('content');
	if($disable_cufon !='true') {
			Cufon.replace('h1,h2,h3,h4,h5,#blurb,#site_name,#intro_blurb_title,.dropcap1', { hover: 'true' });
			
			var userAgent = navigator.userAgent.toLowerCase();
		    // Is this a version of IE?
		    if(jQuery.browser.msie){
				var $ieVersion = jQuery.browser.version.substring(0,1);
				if($ieVersion == 7){
					jQuery("#intro_blurb_title span").css({paddingTop:"8px"});
					jQuery(".dropcap1").css({paddingTop:"0px"});
				}
				
				if($ieVersion == 6){
					jQuery(".last").each(function(index) {
						jQuery(this).wrap('<div class="ie6_gallery_fix" />');
						jQuery(".dropcap1").css({paddingTop:"0px"});
					});
				}
		    }
	}
	
	//Hide (Collapse) the toggle containers on load
	jQuery(".toggle_content").hide(); 

	//Switch the "Open" and "Close" state per click
	jQuery("h3.toggle").toggle(function(){
		jQuery(this).addClass("active");
		}, function () {
		jQuery(this).removeClass("active");
	});

	//Slide up and down on click
	jQuery("h3.toggle").click(function(){
		jQuery(this).next(".toggle_content").slideToggle();
	});

	$(".slidertoggle").hover(function(){
	  $(".toggle_slider").fadeToggle("slow");
	  $(this).toggleClass("activeslider");
	});
	
	// image loader
	
		//set variables
		if(jQuery("#slider_img").length){var $index=true; var $load='a.load_slider_img'; var $delay_time=0;}
		if(jQuery(".blog_module").length){var $blog=true; var $load='a.load_blog_img'; var $delay_time=500;}
		if(jQuery(".portfolio_img_holder").length){var $gallery=true; var $load='a.load_portfolio_img'; var $delay_time=500; var $hover_class='portfolio_img_holder';}
		if(jQuery(".portfolio_full_img_holder").length){var $gallery_full=true; var $load='a.load_portfolio_img'; var $delay_time=500; var $hover_class='portfolio_full_img_holder';}
		if(jQuery(".portfolio_single_pic").length){var $single_pic=true; var $load='.portfolio_single_pic'; var $delay_time=500;}
		
		
		// add preloader image class
		if($gallery) {
			jQuery(".loading_gallery").each(function(index) {
				jQuery(this).addClass('img_pre_'+index);
			});
		}
		
		if($gallery_full) {
			jQuery(".loading_gallery_full").each(function(index) {
				jQuery(this).addClass('img_pre_'+index);
			});
		}
		
		if($single_pic) {
			jQuery(".loading_gallery_post").each(function(index) {
				jQuery(this).addClass('img_pre_'+index);
			});
		}
		
		if($blog) {
			jQuery(".loading_blog").each(function(index) {
				jQuery(this).addClass('img_pre_'+index);
			});
		}
		
		jQuery(this).delay($delay_time,function() {
	
			// id of the div containers
			var $imgContainerId = "div[class^='image_loader']";
	
			// grab the images
			var $images = jQuery($imgContainerId+' span img');
	
			// image length
			var $max = $images.length;
	
			// remove them from DOM to prevent normal load
			jQuery('.rm_img').remove();

			// start loading
			if($max>0) {
				LoadImage(0,$max);
			}

		// loading function handler
		function LoadImage(index,$max) {

			if(index<$max) {

				// add list to div
				jQuery('<span id="img'+(index+1)+'"></span>').each(function() {
				   jQuery(this).appendTo(jQuery('.image_loader '+$load).eq(index));
				});
				
				if($max>1) {
					jQuery('<img style="margin-right:4px;" src="images/transparent.png" alt="" width="14" height="14" class="slider_preview_img" />').each(function() {
					   jQuery(this).appendTo('#slider_preview_img');
					});
				}

				// new image object
				var $img = new Image();
		
				// current image
				var $curr = jQuery("#img"+(index+1));
		
				// load current image
				jQuery($img).load(function () {
			
					// hide it first + .hide() failed in safari
					jQuery(this).css('display','none');
			
					//add alt attr
					jQuery(this).attr({alt: ""});
					
					// add hover class
					if(!$index) {
						jQuery(this).addClass('hover_fade');
					}
		 
					// insert the image into div
					jQuery($curr).append(this);
			
					// fade it in
					jQuery(this).fadeIn(250,function() {
						
						// remove loading div
						if(!$index) {
							jQuery('.img_pre_'+index).remove();
						}

						if(index == ($max-1)) {
								// remove loading div after all images loaded then start slider
								if($index) { cycleStart(); }
								if($gallery) { portfolio_img_hover($hover_class); jQuery('.roll_over').css('display','block'); }
								if($gallery_full) { portfolio_img_hover($hover_class); jQuery('.roll_over').css('display','block'); }
								
								if($max==1){
									if($index){
										jQuery(".slider_content").css({display:'block'});
										jQuery(".slider_content").css({marginTop:"22px"});
									
										if(jQuery('.image_loader').hasClass('slider_cropped')){
											jQuery("#home_feature").addClass('staged');
											jQuery(".slider_img_cropped").css({marginTop:"20px"});
										}
									}
								}
						
							}else{
							  // loading next item
							  LoadImage(index+1,$max);
							}
					});

				}).error(function () {
					// if loading error remove div
					jQuery($curr).remove();
					// try to load next item
					LoadImage(index+1,$max);
				}).attr('src', jQuery($images[index]).attr('src'));
		   	  }
			}
		});
});
