/**
 * @author dt.john
 */
$(document).ready(function(){
	DOMUtilities.init();
 	CufonFonts.init();
	FancyBox.init();

	if($('.reflection').length){
		$('.reflection').reflect({height:0.12,opacity:0.25});
	}
	
	if($('#contact_forms_tabs').length){
		$('#contact_forms_tabs a').click(function(event){
			event.preventDefault();
			$('#contact_forms_tabs a').removeClass('active');
			$(this).addClass('active');
			var elem_id = this.href.substr(this.href.indexOf('#'));
			$('#contact_forms_container .contactContainer').removeClass('active');
			$(elem_id).addClass('active'); 
		});

		if(['#general_inquiries','#employment','#business_inquiries'].indexOf(document.location.hash) != -1){
			var hashPiece = document.location.hash.replace("#","");
			$('#contact_forms_tabs a').removeClass('active');
			$('#contact_forms_container .contactContainer').removeClass('active');
			$('#tab_' + hashPiece + ' a').addClass('active');
			$('#' + hashPiece).addClass('active'); 
		}
	}
	
	if($('#contact_forms_container').length){
		// Form Validation
		window.formValidators=[];
		for(var i=0, forms=$('#contact_forms_container form'); i<forms.length; i++){
			 window.formValidators.push(new FormValidator(forms[i]));
		}
		
		// Length limits
		$('#contact_forms_container form textarea[id*="_message"]').keyup(function(){
			var charlim = 1000;
			return (function(){
				var self = $(this);
				var text = self.val();
				var textlen = text.length;
				if (textlen > charlim) {
					self.val(text.substr(0, charlim));
					self.animate({scrollTop : self.height() * 1000},0);
					return false;
				} else {
					return true;
				}
			});
		}()); 
	}
	
	if($('#portfolio_gallery_thumbs_container').length){
		if (typeof(window.scrollers) == "undefined") {
			window.scrollers = [];
		}
		window.scrollers.push(new Scroller('portfolio_gallery_thumbs_container','btn_previous_slide','btn_next_slide',{easing:"easeOutSine",hideNoPages:true}));
	}
	if($('#slides_container').length){
		if (typeof(window.scrollers) == "undefined") {
			window.scrollers = [];
		}
		window.scrollers.push(new Scroller('slides_container','btn_home_slider_previous','btn_home_slider_next',{easing:"easeOutSine",hideNoPages:true}));
	}
	
	if($('#btn_supercategories').length){
		$('#btn_supercategories').click(function(event){
			event.preventDefault();
			$(this).addClass('active');
			$('#btn_categories').removeClass('active');
			$('#super_categories_lists').show();
			$('#categories_lists').hide();
		});
		$('#btn_categories').click(function(event){
			event.preventDefault();
			$(this).addClass('active');
			$('#btn_supercategories').removeClass('active');
			$('#categories_lists').show();
			$('#super_categories_lists').hide();
		});
	}
	
	if($('#portfolio_image').length){
		$('#portfolio_gallery_thumbs_container a').click(function(event){
			event.preventDefault();
			
			var postID = this.id.split("_")[2];
			var image_id = "image_" + postID;
			var gallery_id = "gallery_detail_" + postID;
			var theImage = $('#' + image_id);
			var mediaHref = this.href.replace(document.location.protocol + "//" + document.location.host, "");
			
			// begin: code to dynamically size the swf file
			var gall_dims = new Array(740, 300);
			
			mediaHref.match(/_([0-9]+)x([0-9]+).swf$/i);
			var swf_dims = new Array(RegExp.$1, RegExp.$2);
			
			// scale to fit width
			if (swf_dims[0] > gall_dims[0]) {
				swf_dims[1] *= gall_dims[0] / swf_dims[0];
				swf_dims[1] = Math.floor(swf_dims[1]);
				swf_dims[0] = gall_dims[0];
			}
			
			// end: code to dynamically size swf

			var mediaElements = $('#portfolio_image .videoThumbnail');
			for(var i=0; i<mediaElements.length; i++){
				var e = $(mediaElements[i]);
				var the_id = e.attr('id');
				if(e.hasClass('swf')){
					//e.replaceWith('<div id="' + the_id + '" class="fullsize videoThumbnail swf" style="display:none;"></div>');
					e.replaceWith('<div id="' + the_id + '" class="videoThumbnail swf" style="display:none;"></div>');
				}else{
					e.replaceWith('<div id="' + the_id + '" class="fullsize videoThumbnail" style="display:none;"></div>');
				}
			}
			
			var newHeight = theImage.height();
			
			if (theImage.hasClass('videoThumbnail')) {
				if(!theImage.hasClass('swf')){
					swfobject.embedSWF('/wp-content/themes/baileygardiner/javascripts/mediaplayer/player.swf', 'image_' + postID, '400', '300', '9', '/wp-content/themes/baileygardiner/javascripts/mediaplayer/expressInstall.swf', {
						file: mediaHref,
						autostart: 'true'
					}, {
						wmode: 'transparent',
						allowscriptaccess: 'true',
						allowfullscreen: 'true'
					},{
						styleclass: "fullsize videoThumbnail player"
					});
					
					newHeight = 300;
				}else{
					//swfobject.embedSWF(mediaHref, 'image_' + postID, '400', '300', '9', '/wp-content/themes/baileygardiner/javascripts/mediaplayer/expressInstall.swf', {}, 
					swfobject.embedSWF(mediaHref, 'image_' + postID, swf_dims[0], swf_dims[1], '9', '/wp-content/themes/baileygardiner/javascripts/mediaplayer/expressInstall.swf', {}, 
					{
						//wmode: 'transparent',
						allowscriptaccess: 'true',
						allowfullscreen: 'true'
					},{
						//styleclass: "fullsize videoThumbnail swf"
						styleclass: "videoThumbnail swf"
					});
					
					newHeight = swf_dims[1];//300;
				}
			}
			
			$('#portfolio_image .fullsize').not('#' + image_id).fadeOut(250);
			theImage.fadeIn(250);
			
			$('#portfolio_image').animate({
				height: newHeight + "px"
			},250);
			$('#project_details .portfolioGalleryDetail').hide();
			$('#' + gallery_id).show();
		});
	}
	
	$('a.lightbox_close').click(function(event){
		event.preventDefault();
		$.fn.fancybox.close();
	});
	
	$('#main_nav .subNav li').hover(function(){
		$('#main_nav li.active').css('background-image','url(/wp-content/themes/baileygardiner/images/active_nav.png)');
	},function(){
		$('#main_nav li.active').css('background-image','url(/wp-content/themes/baileygardiner/images/active_nav.png)');
	});

	CreativeGraveyardSounds.initialize();
});
 
 
/**
 * Cufon font initializer
 * @author					Dave Shepard
 * @version					0.5
 * @required libraries:		Cufon 
 * 
 * Usage:
 *     $(document).ready(function(){
 *         CufonFonts.init();
 *     });
 * 
 * An initialization script for Simo Kinnunen's Cufon font replacer available 
 * at: http://wiki.github.com/sorccu/cufon. This is an independent
 * script from Cufon and is unsupported by Sorccu.
 * 
 * Fill the CufonFonts.fonts array with objects containing the font CSS
 * name and the elements to apply the font to in the CufonFonts.fonts.elements
 * array.
 */
var CufonFonts = {
	fonts: [
		{
			name: 'chalet-london',
			elements: [
				'a.mainNav',
				'h2.orangeTab'/*,
				'#subscribe-form h2',
				'#subscribe-form p',
				'#subscribe-form .subscribe-form-check label'*/
			],
			options: {
				hover: true
			}
		}
	],
	init: function(){
		for(i = 0; i < this.fonts.length; i++) {
			var f = this.fonts[i];
			var cufonOptions = {
				fontFamily : f.name
			};
			if(typeof(f.options) != "undefined"){
				for(k in f.options){
					cufonOptions[k] = f.options[k];
				}
			}
			Cufon.replace(f.elements.join(","),cufonOptions);
		}
	}
};


/**
 * DOM Utilies Object for handling basic DOM actions
 * @author					Dave Shepard
 * @version					1.0
 * @required libraries:		JQuery 1.3.2 or later
 * 
 * Usage:
 *     $(document).ready(function(){
 *     		DOMUtilities.init();
 *     });
 *     
 * Can be initialized via the init(); method to apply to entire <body> or
 * a scope can be passed to limit the initialization to the child elements
 * of a particular element. Individual methods can als be called and passed
 * a scope.
 */
var DOMUtilities = {
	targetBlank: function(locality){
		// XHTML 1.0 Strict work around for external links
		$(locality+' a[rel*="external"]').attr("target","_blank");
	},
	inputAutoClear: function(locality){
		$(locality+' input.clearField').focus(function(){
			if (this.defaultValue == this.value) {
				this.value = '';
			}
		}).blur(function(){
			if (this.value === '') {
				this.value = this.defaultValue;
			}
		});
	},
	imgRollover: function(locality){
		// Image roll-over setup
		$(locality+' img.rollOver, '+locality+' input[type="image"].rollOver')
			.mouseover(function(){
				if (this.src.indexOf("_i.") != -1) {
					this.src = this.src.replace("_i.", "_o.");
				}
			}).mouseout(function(){
				if (this.src.indexOf("_o.") != -1) {
					this.src = this.src.replace("_o.", "_i.");
				}
				if(this.src.indexOf("_a.")) {
					this.src = this.src.replace("_a.","_i.");
				}
			}).filter("input").mousedown(function(){
				this.src = this.src.replace("_o.","_a.");
			}).mouseup(function(){
				this.src = this.src.replace("_a.","_i.");
			});
	},
	init: function(locality){
		if(typeof(locality) == "undefined") {
			locality = "body";
		}
		this.targetBlank(locality);
		this.inputAutoClear(locality);
		this.imgRollover(locality);
	}
};


function InitializeGraveyardDetail(){
	var p_ID = $('#fancy_ajax .cgLightbox_wrapper').attr('id').split('_')[2];
	
	var detailScroller = new Scroller('slide_container_' + p_ID,'btn_prev_' + p_ID,'btn_next_' + p_ID,{easing:"easeOutSine",hideNoPages:true});
	
	$('#slide_container_' + p_ID + ' a').click(function(event){
		event.preventDefault();
		var postID = this.id.split("_")[2];
		var image_id = "image_" + postID;
		var gallery_id = "gallery_detail_" + postID;
		var theImage = $('#image_container_' + p_ID + ' #' + image_id);
		var mediaHref = this.href.replace(document.location.protocol + "//" + document.location.host, "");

		var mediaElements = $('#image_container_' + p_ID + ' .videoThumbnail');
		for(var i=0; i<mediaElements.length; i++){
			var e = $(mediaElements[i]);
			var the_id = e.attr('id');
			if(e.hasClass('swf')){
				e.replaceWith('<div id="' + the_id + '" class="fullsize videoThumbnail swf" style="display:none;"></div>');
			}else{
				e.replaceWith('<div id="' + the_id + '" class="fullsize videoThumbnail" style="display:none;"></div>');
			}
		}		
		
		var newHeight = theImage.height();
		
		if (theImage.hasClass('videoThumbnail')) {
			if(!theImage.hasClass('swf')){
				swfobject.embedSWF('/wp-content/themes/baileygardiner/javascripts/mediaplayer/player.swf', 'image_' + postID, '400', '300', '9', '/wp-content/themes/baileygardiner/javascripts/mediaplayer/expressInstall.swf', {
					file: mediaHref,
					autostart: 'true'
				}, {
					wmode: 'transparent',
					allowscriptaccess: 'true',
					allowfullscreen: 'true'
				},{
					styleclass: "fullsize videoThumbnail"
				});
				
				newHeight = 300;
			}else{
				swfobject.embedSWF(mediaHref, 'image_' + postID, '400', '300', '9', '/wp-content/themes/baileygardiner/javascripts/mediaplayer/expressInstall.swf', {}, {
					wmode: 'transparent',
					allowscriptaccess: 'true',
					allowfullscreen: 'true'
				},{
					styleclass: "fullsize videoThumbnail swf"
				});
				
				newHeight = 300;
			}
		}
		
		$('#image_container_' + p_ID + ' .fullsize').not('#image_container_' + p_ID + ' #' + image_id).fadeOut(250);
		theImage.fadeIn(250);
		
		$('#project_details_' + p_ID + ' .portfolioGalleryDetail').hide();
		$('#project_details_' + p_ID + ' #' + gallery_id).show();

	});
	
	$('#lightbox_close').click(function(event){
		event.preventDefault();
		$.fn.fancybox.close();
	});
	
	$('#fancy_ajax .cgLightbox_wrapper .pagination_links a').click(function(event){
		event.preventDefault();
		var url = this.href;
		$('#lightbox_mask').fadeIn(500,function(){
			$.get(url,function(response){
				$('#fancy_ajax').html(response);
				InitializeGraveyardDetail();
			});
		});
	});
}

function bindCloseAction() {
	$('.lightbox_close').click(function(event){
		event.preventDefault();
		$.fn.fancybox.close();
	});
}

function InitializeSubscribeForm(yr) {
	
	// Set text field behavior
	var txtfields = $('#fancy_content #subscribe-form .subscribe-form-text input');
	txtfields.each(function() {
		if ($(this).val()) {
			$(this).siblings('label').hide();
		}
	});
	txtfields.load(function() {
		if ($(this).val()) {
			$(this).siblings('label').hide();
		}
	});
	txtfields.focus(function() {
		if (!$(this).val()) {
			$(this).siblings('label').hide();
		}
	});
	txtfields.keydown(function(ev) {
		$(this).siblings('label').hide();
	});
	txtfields.keyup(function() {
		if (!$(this).val()) {
			$(this).siblings('label').show();
		}
	});
	txtfields.blur(function() {
		if (!$(this).val()) {
			$(this).siblings('label').fadeTo(0, 1);
			$(this).siblings('label').show();
		}
	});
	
	
	// Bind close action to close link
	$('#fancy_content #subscribe-modal a.close-link').click(function(event) {
		event.preventDefault();
		$.fn.fancybox.close();
	});
	
	// Bind submit button handling
	$('#fancy_content #subscribe-form').submit(function(event) {
		event.preventDefault();
		
		var formFields = $(this).serializeArray();
		var nlOpt = $('#subscribe-form #subscribe-form-newsletter').is(':checked');
		var blOpt = $('#subscribe-form #subscribe-form-blog').is(':checked');
		var errCnt = 0;
		if (!nlOpt && !blOpt) errCnt++;
		if (!$.trim($('#subscribe-form #subscribe-form-email').val()).match(/^([^@.]+[.]?)+@([^@.]+[.])+[^@.]{2,6}$/)) errCnt++;
		
		$.fn.fancybox.showLoading();
		
		$.post('/subscribe', formFields, function(data) {
			// adjust dims depending on subscr options
			var xDelta = 0; var yDelta = 0;
			yDelta += (!errCnt && nlOpt && blOpt) ? 225 : (!errCnt && nlOpt) ? 170 : 0;
			yDelta += errCnt * 24;
			yDelta += yr ? yr : 0;
			xDelta += (!errCnt && nlOpt) ? 125 : 0;
			$('#fancy_outer').animate({
				'height': '+=' + yDelta,
				'top': '-=' + Math.floor(yDelta/2),
				'width': '+=' + xDelta,
				'left': '-=' + Math.floor(xDelta/2)
			});
			
			var yRedux = -1 * errCnt * 24;

			$('#fancy_ajax').html(data);
			InitializeSubscribeForm(yRedux);
		});
		
	});
	
	
	// Do this last, because it takes a mo'
	// Do Cufon font replacement
	//Cufon.replace('#fancy_content #subscribe-form h2',{fontFamily: 'chalet-paris'});
}

var FancyBox = {
	boxen: function(){
		$("a.fancybox").fancybox({
			hideOnContentClick:false,
			zoomSpeedIn: 300,
			zoomSpeedOut: 300,
			centerOnScroll: true,
			overlayOpacity: 0.75
		});
		$('a.speakingEngagements').fancybox({
			hideOnContentClick: false,
			zoomSpeedIn: 300,
			zoomSpeedOut: 300,
			centerOnScroll: true,
			frameWidth: 800,
			frameHeight: 400,
			callbackOnShow: function(){
				bindCloseAction();
			},
			overlayOpacity: 0.75
		});
		$('.cgSummary a.moreLink, .cgEntry a.roundedThumbLink').fancybox({
			hideOnContentClick: false,
			zoomSpeedIn: 300,
			zoomSpeedOut: 300,
			centerOnScroll: true,
			frameWidth: 820,
			frameHeight: 520,
			callbackOnShow: function(){
				InitializeGraveyardDetail();
			},
			overlayOpacity: 0.75
		});
		$('a#subscribe-link').fancybox({
			hideOnContentClick: false,
			zoomSpeedIn: 300,
			zoomSpeedOut: 300,
			centerOnScroll: true,
			frameWidth: 420,
			frameHeight: 135,
			autoDimensions: true,
			callbackOnShow: function(){
				InitializeSubscribeForm();
			},
			overlayOpacity: 0.75
		});
	},	
	init: function(){
		this.boxen();	
	}
};


var CreativeGraveyardSounds = {
	ids: {
		swf: "graveyard_sounds",
		heaven: "graveyard_angel",
		hell: "graveyard_devil"
	},
	
	getFlashMovie: function(){
		var isIE = navigator.appName.indexOf("Microsoft") != -1;
		return (isIE) ? window[this.ids.swf] : document[this.ids.swf];
	},
	
	playHeaven: function(){
		this.getFlashMovie().playHeaven();
	},
	playHell: function(){
		this.getFlashMovie().playHell();
	},
	
	initialize: function(){
		var self = this;
		
		if($('#' + this.ids.heaven).length){
			$('#' + this.ids.heaven).click(function(){
				self.playHeaven();
			});
		}
		if($('#' + this.ids.hell).length){
			$('#' + this.ids.hell).click(function(){
				self.playHell();
			});
		}
	}
};
