/* Scripts for Website */
/* Dependencies: jQuery 1.4.x */




/* **************************** */
/* Pre-document.ready functions */
/* **************************** */
	// Functions that must run BEFORE document.ready functions



/* ************************ */
/* Document.Ready functions */
/* ************************ */
//do stuff when DOM is ready
$(document).ready(function() {

	/* *********************** */
	/* Hacks for IE6 and below */
	/* *********************** */
	if ($.browser.msie && $.browser.version < 7 )  { 
		//attach a class to the BODY
		$('body').addClass('ieOld');
	} else {
		if ($.browser.msie && $.browser.version < 8 )  {
			//attach a class to the BODY
			$('body').addClass('ie7');
		} else {
			if ($.browser.msie) {
				//attach a class to the BODY
				$('body').addClass('ie');
			}
		}
	}


	/* ****************** */
	/* INIT for all pages */
	/* ****************** */

	// Any INIT functions for all pages
	
	

	/* ******************* */
	/* INIT for HOME pages */
	/* ******************* */
	if ($("body#home").length) {
		// Any home-page specific INIT functions
		
		// start the slideshow
		$('.slideshow').cycle({
			fx: 'fade' // choose your transition type, ex: fade, scrollUp, shuffle, etc...
		});
		
		
		
		// build the slider
		buildSlider();
	}

	
	

	/* *********************** */
	/* INIT for INTERIOR pages */
	/* *********************** */
	if ($("body#int").length) {
		// Any home-page specific INIT functions
		
	}
	
	/* *********************** */
	/* INIT for fididel btn    */
	/* *********************** */
	if ($("#divFididelButton").length) {
		// fix the fididel bug
		$('#divFididelButton').detach().appendTo('body');
	}
	
	
	
	/* ****************************** */
	/* Add'l document.ready functions */
	/* ****************************** */
	
		// add'l document.ready functions

});

/* *************** */
/* Add'l Functions */
/* *************** */


function popVid(URL,w,h) {
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width="+w+",height="+h+"');");
}

function disp(url){ 
	window.open(url, "", "width=1010,height=700,scrollbars=1, resizable=1,toolbar=0,location=no,directories=no,status=no,menubar=no,copyhistory=no, ");
}







/* ***************** */
/* Utility Functions */
/* ***************** */


/* Console Logging for debugging help
 * ==================================
 * 	USE:  
 * 		jQuery.log('my message') or $.log('my message') 
 */
;jQuery.log = function(message) {
  try {
     console.debug(message);
  } catch(e) {
	  try {
		console.log(message);
	  } catch(e) {
		//alert(message);
	  }
  }
};





/* ******************* */
/* 3rd Party Functions */
/*      (plug-ins)     */
/* ******************* */


/*
 * jQuery Cycle Lite Plugin
 * http://malsup.com/jquery/cycle/lite/
 * Copyright (c) 2008 M. Alsup
 * Version: 1.0 (06/08/2008)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * Requires: jQuery v1.2.3 or later
 *
 * Minified version shown... go to website to see original full 
 */
;(function(D){var A="Lite-1.0";D.fn.cycle=function(E){return this.each(function(){E=E||{};if(this.cycleTimeout){clearTimeout(this.cycleTimeout)}this.cycleTimeout=0;this.cyclePause=0;var I=D(this);var J=E.slideExpr?D(E.slideExpr,this):I.children();var G=J.get();if(G.length<2){if(window.console&&window.console.log){window.console.log("terminating; too few slides: "+G.length)}return }var H=D.extend({},D.fn.cycle.defaults,E||{},D.metadata?I.metadata():D.meta?I.data():{});H.before=H.before?[H.before]:[];H.after=H.after?[H.after]:[];H.after.unshift(function(){H.busy=0});var F=this.className;H.width=parseInt((F.match(/w:(\d+)/)||[])[1])||H.width;H.height=parseInt((F.match(/h:(\d+)/)||[])[1])||H.height;H.timeout=parseInt((F.match(/t:(\d+)/)||[])[1])||H.timeout;if(I.css("position")=="static"){I.css("position","relative")}if(H.width){I.width(H.width)}if(H.height&&H.height!="auto"){I.height(H.height)}var K=0;J.css({position:"absolute",top:0,left:0}).hide().each(function(M){D(this).css("z-index",G.length-M)});D(G[K]).css("opacity",1).show();if(D.browser.msie){G[K].style.removeAttribute("filter")}if(H.fit&&H.width){J.width(H.width)}if(H.fit&&H.height&&H.height!="auto"){J.height(H.height)}if(H.pause){I.hover(function(){this.cyclePause=1},function(){this.cyclePause=0})}D.fn.cycle.transitions.fade(I,J,H);J.each(function(){var M=D(this);this.cycleH=(H.fit&&H.height)?H.height:M.height();this.cycleW=(H.fit&&H.width)?H.width:M.width()});J.not(":eq("+K+")").css({opacity:0});if(H.cssFirst){D(J[K]).css(H.cssFirst)}if(H.timeout){if(H.speed.constructor==String){H.speed={slow:600,fast:200}[H.speed]||400}if(!H.sync){H.speed=H.speed/2}while((H.timeout-H.speed)<250){H.timeout+=H.speed}}H.speedIn=H.speed;H.speedOut=H.speed;H.slideCount=G.length;H.currSlide=K;H.nextSlide=1;var L=J[K];if(H.before.length){H.before[0].apply(L,[L,L,H,true])}if(H.after.length>1){H.after[1].apply(L,[L,L,H,true])}if(H.click&&!H.next){H.next=H.click}if(H.next){D(H.next).bind("click",function(){return C(G,H,H.rev?-1:1)})}if(H.prev){D(H.prev).bind("click",function(){return C(G,H,H.rev?1:-1)})}if(H.timeout){this.cycleTimeout=setTimeout(function(){B(G,H,0,!H.rev)},H.timeout+(H.delay||0))}})};function B(J,E,I,K){if(E.busy){return }var H=J[0].parentNode,M=J[E.currSlide],L=J[E.nextSlide];if(H.cycleTimeout===0&&!I){return }if(I||!H.cyclePause){if(E.before.length){D.each(E.before,function(N,O){O.apply(L,[M,L,E,K])})}var F=function(){if(D.browser.msie){this.style.removeAttribute("filter")}D.each(E.after,function(N,O){O.apply(L,[M,L,E,K])})};if(E.nextSlide!=E.currSlide){E.busy=1;D.fn.cycle.custom(M,L,E,F)}var G=(E.nextSlide+1)==J.length;E.nextSlide=G?0:E.nextSlide+1;E.currSlide=G?J.length-1:E.nextSlide-1}if(E.timeout){H.cycleTimeout=setTimeout(function(){B(J,E,0,!E.rev)},E.timeout)}}function C(E,F,I){var H=E[0].parentNode,G=H.cycleTimeout;if(G){clearTimeout(G);H.cycleTimeout=0}F.nextSlide=F.currSlide+I;if(F.nextSlide<0){F.nextSlide=E.length-1}else{if(F.nextSlide>=E.length){F.nextSlide=0}}B(E,F,1,I>=0);return false}D.fn.cycle.custom=function(K,H,I,E){var J=D(K),G=D(H);G.css({opacity:0});var F=function(){G.animate({opacity:1},I.speedIn,I.easeIn,E)};J.animate({opacity:0},I.speedOut,I.easeOut,function(){J.css({display:"none"});if(!I.sync){F()}});if(I.sync){F()}};D.fn.cycle.transitions={fade:function(F,G,E){G.not(":eq(0)").css("opacity",0);E.before.push(function(){D(this).show()})}};D.fn.cycle.ver=function(){return A};D.fn.cycle.defaults={timeout:4000,speed:1000,next:null,prev:null,before:null,after:null,height:"auto",sync:1,fit:0,pause:0,delay:0,slideExpr:null}})(jQuery)



function buildSlider() {
/**************************************************
*** jQuery-Powered Slider for Internet Specials *** 
**************************************************/
	

/* ******************************************************************************* */
/* ******************************************************************************* */
function setDefaults() {
	
	/* *************** */
	/*  Configuration  */
	/* *************** */
	
	// Speed of each slide
	speed = 2000;			// 		an integer in milliseconds; or "slow", "normal", "fast"
	
	// Autorotate?
	autoRotate = true;		//		true or false;
	
	// Pause between slides
	pauseTime = 6000; 		// 		pause between slide movements, in milliseconds - recommended between 5000 - 10000.
	
	
	// Easing
	easeStyle = "swing";	// 		either "linear" or "swing" - use jQuery 'Easing' plugin for more easing types
	
	// Initial Slide Direction
	direction = -1; 		// 		1 = slide right				-1 = slide left
							// 		(can be changed at runtime with any element that is using classes .sliderLeft and .sliderRight)
	

/* ******************************************************************************* */
/* ******************************************************************************* */	


	/* ************************************************* */
	/* more initialization - ignore these next few items */
	/* ************************************************* */
	
	// How far does it move each time?  Total width of each unit.
	distance = parseFloat($(".unit:first-child").outerWidth(true));
	
	//adds Pause-Time to the transition-time of each slide, to account for the way the timer works, which starts each pause when the slide *begins*, not ends.
	pauseTime = speed + pauseTime;
}



/* **************************************************************************************** */
/* **************************************************************************************** */

/* *********************** */
/* Declaring the Variables */
/* *********************** */

var speed; // set in configuration above
var pauseTime; // set in configuration above
var autoRotate; // set in configuration above
var direction; // set in configuration above or by 'Next' or 'Prev' buttons
var distance; // figured out in the initialization process
var nextPos; // figured out in the initialization process
var easeStyle; // set in configuration above
var slideBlocker = false; // set while sliding, to stop buttons from working and messing things up


/* **************************************************************************************** */
/* **************************************************************************************** */

/* ***************************************** */
/* General Functions of Movement and Whatnot */
/* ***************************************** */

function slideIt() { //moves the whole .slider over one 'distance' in the correct direction	
	if (slideBlocker==false) {
		
		// copy the unit from the leading end to the trailing end
		passOneAround(); 
			
		// slide the .slider over, then removes the unit at the leading end]
		$(".slider").animate({
			left : nextPos() + "px"
		},speed,easeStyle,takeOneDown);
	}
}

function nextPos() {
	//What's the next move's position during slideIt()?
	return Math.round((parseFloat($(".slider").css("left"))) + (distance * parseFloat(direction)));
}


function reversePos() {
	//determine the adjustment to the css.left of the .slider during takeOneDown() or passItAround()
	return Math.round((parseFloat($(".slider").css("left"))) + (distance * parseFloat(direction*-1)));
}

function passOneAround() {
	//stop buttons from working and messing things up
	unclickable();  
	// copy the unit from the leading end to the trailing end, adjust if needed
	if (direction == -1) {
		//$.log('passing one around - moving left');
		$(".slider .unit:first-child").clone(true).appendTo(".slider");
	} else {
		//$.log('passing one around - moving right');
		$(".slider .unit:last-child").clone(true).prependTo(".slider");
		$(".slider").css("left", reversePos());
	}
	setSliderWidth();
}

function takeOneDown() {
	// removes the unit at the leading end, adjusts, makes buttons clickable again
	if (direction == -1) {
		//$.log('taking one down - from the left');
		$(".slider .unit:first-child").remove();
		$(".slider").css("left", reversePos());
	} else {
		//$.log('taking one down - from the right');
		$(".slider .unit:last-child").remove();
	}
	setSliderWidth();
	clickable();
}

function autoRotateIt(){
	// starts continuous rotation
	if (autoRotate == true) {
		// the initial slide
		slideIt();
		// all subsequent slides
		$(document).everyTime(pauseTime, "autoRotate", function(){slideIt()});
	}
}


function clickable() {
	// makes the buttons clickable
	slideBlocker=false;
}

function unclickable() {	
	// makes the buttons UNclickable
	slideBlocker=true;
}


function initBtns() {
	// Initialize Buttons
	
	// Slide One Unit Left
	$(".sliderRight").click(function() {
		if (slideBlocker==false) {
			direction = -1;
			slideIt();
		}
	});
	
	//Slide One Unit Right
	$(".sliderLeft").click(function() {
		if (slideBlocker==false) {
			direction = 1;
			slideIt();
		}
	});
	
	// Pause/Stop Rotation (upon completion of any current sliding)
	$(".sliderPause").click(function() {
		sliderPause();
	});
	
	// Play - Begin Rotation when paused/stopped
	$(".sliderPlay").click(function() {
		sliderPlay();
	});
	
	// Toggle *functionality* of a combined play/pause button
		// determines starting state and sets  initial toggle-state accordingly
		// must add any visual/graphical toggle on a case-by-case basis, but is not built-in by default
	if (autoRotate == true) {
		$(".sliderPlayPause").toggle(
			function() {
				sliderPause();
			},
			function() {
				sliderPlay();
			}
		);
	} else {
		$(".sliderPlayPause").toggle(
			function() {
				sliderPlay();
			},
			function() {
				sliderPause();
			}
		);
	}
}

// Pause/Stop the Slider
function sliderPause() {
	$(document).stopTime("autoRotate");
}

//Play the slider - auto-rotate
function sliderPlay() {
	autoRotate = true;
	autoRotateIt();
}

//determine the width of the .slider so the units all sit in a nice straight row.
function setSliderWidth() {
	var total = ($(".slider .unit").length)*distance;
	//$.log(total);
	$(".slider").width(total);
}

function initHoverState() {
	$('.unit').hover(
		function() {
			$(this).addClass('hovering');
			//$.log("hovering");
		},
		function() {
			$(this).removeClass('hovering');
			//$.log("not-hovering");
		}
	);
}


/* ************************ */
/* Doc.Ready Initialization */
/* ************************ */
$(document).ready(function() {
	// let's get it going...
	setDefaults();
	initBtns();	
	setSliderWidth();
	initHoverState();
	autoRotateIt();
 });
}

/**  INCLUDE W/ THE SLIDER FUNCTION ABOVE!!!
 *
 * jQuery.timers - Timer abstractions for jQuery
 * Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
 * Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
 * Date: 2009/10/16
 *
 * @author Blair Mitchelmore
 * @version 1.2
 * Usage: http://plugins.jquery.com/project/timers
 *
 **/

jQuery.fn.extend({
	everyTime: function(interval, label, fn, times) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, times);
		});
	},
	oneTime: function(interval, label, fn) {
		return this.each(function() {
			jQuery.timer.add(this, interval, label, fn, 1);
		});
	},
	stopTime: function(label, fn) {
		return this.each(function() {
			jQuery.timer.remove(this, label, fn);
		});
	}
});

jQuery.extend({
	timer: {
		global: [],
		guid: 1,
		dataKey: "jQuery.timer",
		regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
		powers: {
			// Yeah this is major overkill...
			'ms': 1,
			'cs': 10,
			'ds': 100,
			's': 1000,
			'das': 10000,
			'hs': 100000,
			'ks': 1000000
		},
		timeParse: function(value) {
			if (value == undefined || value == null)
				return null;
			var result = this.regex.exec(jQuery.trim(value.toString()));
			if (result[2]) {
				var num = parseFloat(result[1]);
				var mult = this.powers[result[2]] || 1;
				return num * mult;
			} else {
				return value;
			}
		},
		add: function(element, interval, label, fn, times) {
			var counter = 0;
			
			if (jQuery.isFunction(label)) {
				if (!times) 
					times = fn;
				fn = label;
				label = interval;
			}
			
			interval = jQuery.timer.timeParse(interval);

			if (typeof interval != 'number' || isNaN(interval) || interval < 0)
				return;

			if (typeof times != 'number' || isNaN(times) || times < 0) 
				times = 0;
			
			times = times || 0;
			
			var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {});
			
			if (!timers[label])
				timers[label] = {};
			
			fn.timerID = fn.timerID || this.guid++;
			
			var handler = function() {
				if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
					jQuery.timer.remove(element, label, fn);
			};
			
			handler.timerID = fn.timerID;
			
			if (!timers[label][fn.timerID])
				timers[label][fn.timerID] = window.setInterval(handler,interval);
			
			this.global.push( element );
			
		},
		remove: function(element, label, fn) {
			var timers = jQuery.data(element, this.dataKey), ret;
			
			if ( timers ) {
				
				if (!label) {
					for ( label in timers )
						this.remove(element, label, fn);
				} else if ( timers[label] ) {
					if ( fn ) {
						if ( fn.timerID ) {
							window.clearInterval(timers[label][fn.timerID]);
							delete timers[label][fn.timerID];
						}
					} else {
						for ( var fn in timers[label] ) {
							window.clearInterval(timers[label][fn]);
							delete timers[label][fn];
						}
					}
					
					for ( ret in timers[label] ) break;
					if ( !ret ) {
						ret = null;
						delete timers[label];
					}
				}
				
				for ( ret in timers ) break;
				if ( !ret ) 
					jQuery.removeData(element, this.dataKey);
			}
		}
	}
});

jQuery(window).bind("unload", function() {
	jQuery.each(jQuery.timer.global, function(index, item) {
		jQuery.timer.remove(item);
	});
});





