/* 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');
		}
	}
	if ($.browser.msie)  {
		//attach a class to the BODY
		$('body').addClass('ie');
	}
	if ($.browser.msie && document.documentMode != "8") {		
		$('#wizOuterWrap').appendTo('body');
	};


	/* ****************** */
	/* INIT for all pages */
	/* ****************** */

	// Any INIT functions for all pages
	
	//init the Navigation image rollovers
	initNav();
	
	// init the lensFlares on the stars		
	$('#lensflareWrap').twinkle();	
	
	

	/* ******************* */
	/* INIT for HOME pages */
	/* ******************* */
	if ($("body#home").length) {
		// Any home-page specific INIT functions
	
		// init the slideshow
		$('.slideshow').cycle({
			fx: 'fade' // choose your transition type, ex: fade, scrollUp, shuffle, etc...
		});
		
	}

	
	

	/* *********************** */
	/* INIT for INTERIOR pages */
	/* *********************** */
	if ($("body#int").length) {
		// Any home-page specific INIT functions
		
	}
	
	
	
	
	
	/* ****************************** */
	/* Add'l document.ready functions */
	/* ****************************** */
	
		// add'l document.ready functions

});

/* *************** */
/* Add'l Functions */
/* *************** */
try {document.execCommand("BackgroundImageCache", false, true);} catch(err) {}

var Pic = new Array();
Pic[0] = 'images/header_bg.jpg'
Pic[1] = 'images/bg.gif'
Pic[2] = 'images/footer_bg.gif'
Pic[3] = 'images/wrap_bg.gif'

var p = Pic.length;

var preLoad = new Array();
for (r = 0; r < p; r++){
   preLoad[r] = new Image();
   preLoad[r].src = Pic[r];
}

images = new Array();
images[0]='home'
images[1]='search'
images[2]='credit'

var j=0;
var navImg = new Array;
var navImgo = new Array;
for(j=0; j<images.length; j++) 
{
	navImg[j] = new Image();
	navImg[j].src='images/nav_'+images[j]+'.gif';
	navImgo[j] = new Image();
	navImgo[j].src='images/nav_'+images[j]+'_live.gif';
}

function navOver(i) {
	document.getElementById("nav"+i).src = navImgo[i].src;
}

function navOff(i) {
	document.getElementById("nav"+i).src = navImg[i].src;
}

function initNav() {
	var x = [];
	for(var i=0;i<images.length;i++)
	{
		x[i] = document.getElementById("nav"+i);
		if(x[i]){
			x[i].onmouseover = function () {navOver(this.id.substr(3))}
			x[i].onmouseout = function () {navOff(this.id.substr(3))}
		}
	}
}


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+"');");
}









/* ***************** */
/* 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)


/*
 * jQuery Twinkle
 * Leland Hirschman
 * version 0.1
 * Requires: jQuery 1.3.2+, jQuery.timers (below), jQuery.wait (below)
 *
 * Makes a given jquery object (in my case, a PNG of a lensFlare) change class (for positioning) and then show/hide in a twinkling manner.
 * If you want the class changes to affect positioning (or anything else you want to change each time), you'll have to account for it in the CSS.
 * 
 * Future plans: allow for options; expand for wider use.
 */

;(function($) {
	$.fn.twinkle = function() {
		var self = this;
		var nextClass = "twinkler1"; 	// a starting point
		var positions = 5; 			// 5 class variations; turn into an option later
		var nextTime = 1000; 		// is randomized later (ms)
		
		var maxGap = 3000; 			// the twinkle will occur at least this number of seconds (ms)
		var minGap = 10; 			// the bottom end of the time-range. [eg: if maxGap = 8000 && minGap = 3000, then the gap range is between 3 - 8 (a range of 5)] (ms)
		var chance = 25			// what percentage of the time can we show a sparkles even faster than the standard range? (%)
		
		var twinkleIn = 50;			// how fast should it show? (ms)
		var twinkleOut = 400;		// how fast should it hide? (ms)
		
		
		function twinkling() {
			// remove the previous positioning class
			if (self.hasClass(nextClass)) {
				self.removeClass(nextClass);
			};
			
			// move the star to the next postion
			nextClass = "twinkler" + (Math.floor(Math.random()*(positions)+1));
			self.addClass(nextClass);
			
			//twinkle once in current position
			self.show(twinkleIn) //50ms fade in - turn into an option later
				.wait(twinkleIn, function() {
					self.hide(twinkleOut, startTwinkling);//400ms fade out - turn into an option later
				});
		}
		
		function setNextTime() {			
			// set the twinkling distribution (purely random doesn't look right)
			var dist = Math.floor(Math.random()*100)+1;
			
			if (dist < chance) {
				// chance% of twinkles will be occur between 0-minGap seconds
				if (minGap > 1) {
					nextTime = (Math.random()* minGap);
				} else {
					nextTime = (Math.random()* 1);						
				}
			} else {
				// the rest of twinkles will be occur within the normal range, up[ to the maxGap time
				nextTime = (Math.random()* (maxGap-minGap) + minGap ); // twinkles will occur between 0-X seconds
			}
		}
		
		function startTwinkling() {
			setNextTime();
			self.oneTime(nextTime, twinkling);
		}
		
		startTwinkling();
		
	}
})(jQuery);


/*
 * 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);
	});
});

/* Wait Plugin for jQuery
 * http://www.inet411.com
 * based on the Delay and Pause Plugin
 * 
 * Delay Plugin for jQuery
 * http://www.evanbot.com
 * copyright 2008 Evan Byrne
 * 
 * jQuery Pause
 * Jonathan Howard
 * version 0.2
 * Requires: jQuery 1.0 (tested with svn as of 7/20/2006)
 * Feel free to do whatever you'd like with this, just please give credit where
 * credit is do.
*/
 (function($) {
    $.fn.wait = function(option, options) {
        milli = 1000; 
        if (option && (typeof option == 'function' || isNaN(option)) ) { 
            options = option;
        } else if (option) { 
            milli = option;
        }
        // set defaults
        var defaults = {
            msec: milli,
            onEnd: options
        },
        settings = $.extend({},defaults, options);

        if(typeof settings.onEnd == 'function') {
            this.each(function() {
                setTimeout(settings.onEnd, settings.msec);
            });
            return this;
        } else {
            return this.queue('fx',
            function() {
                var self = this;
                setTimeout(function() { $.dequeue(self); },settings.msec);
            });
        }

    }
})(jQuery);
	







