/**
 * @author dt.john
 */
function toggleCats(){
	$('a.catTab').click(function(){
		if($(this).hasClass('active')){
			return false;
		}else{
			hrefVal = $(this).attr('href').substr(1);
			$('a.catTab').removeClass('active');
			$(this).addClass('active');
			$('.catArcList').hide();
			$('#'+hrefVal).show();
			$.cookie("catActive",hrefVal,{expires:7});
			return false;
		}
	});
	if($.cookie("catActive")!=null){
		currentTab = $.cookie("catActive");
		//remove Active Class and hide lists
		$('a.catTab').removeClass('active');
		$('.catArcList').hide();
		//Add active class and show list
		$('#tab_'+currentTab).addClass('active');
		$('#'+currentTab).show();
	}
}
$(document).ready(function(){
	DOMUtilities.init();
 	CufonFonts.init();
	if($('#sidebar_categories').length) toggleCats();
 });
/**
 * Cufon font initializer
 * @author					Dave Shepard
 * @version					0.2
 * @required libraries:		JQuery 1.3.2, 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 CufonInitializer.fonts array with objects containing the font CSS
 * name and the elements to apply the font to in the CufonInitializer.fonts.elements
 * array.
 */
var CufonFonts = {
	fonts: [
		{
			name: 'chalet-london',
			elements: [
				'a.mainNav'
			]
		}
	],
	init: function(){
		for(i = 0; i < this.fonts.length; i++) {
			var f = this.fonts[i];
			var existingElements = [];
			for (ie = 0; ie < f.elements.length; ie++) {
				var cfe = f.elements[ie];
				if ($(cfe).length > 0) {
					existingElements.push(cfe);
				}
			}
			var cufonOptions = {
				fontFamily : f.name
			}
			if(f.options != undefined){
				var optionKeys = $.keys(f.options);
				for(w=0 ; w < optionKeys.length ; w++){
					cufonOptions[optionKeys[w]] = f.options[optionKeys[w]];
				}
			}
			if(existingElements.length > 0){
				Cufon.replace(existingElements.join(","),cufonOptions);
			}
		}
	}
}
$.extend({
	keys: function(obj){
		var a = [];
		$.each(obj, function(k){ a.push(k) });
		return a;
	}
});
/**
 * 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(locality == null) {
			locality = "body";
		}
		this.targetBlank(locality);
		this.inputAutoClear(locality);
		this.imgRollover(locality);
	}
}
var FancyBox = {
	boxen: function(){
		$("a.fancybox").fancybox({
			'hideOnContentClick':true,
			'zoomSpeedIn': 300,
			'zoomSpeedOut': 300
		});
	},	
	init: function(){
		this.boxen();	
	}
}
