$(document).ready(function() {
	Engine.Initialize();
});

var Engine = {
	// defaults
	Pause_Time: 3000,
	Animation_Time: 5000,
	Transition_Time: 750,
	Max_Loops: 1,
	
	Next_Timeout: 0,
	Auto_Animate: true,
	Is_IE: false,
	Is_IE6: false,
	Can_Navigate: false,
	Num_Loops: 1,
	Animation_Time_Fast: 5000,
	Transition_Time_Fast: 750,
	
	
	Initialize: function() {
		Engine.Settings();
		Engine.IE_Fixes();	// worst. ever.
		Engine.Load();
	},
	
	Settings: function() {
		var Pause_Time = parseFloat( $('#homepage-banner #settings div.pause-time').html() );
		var Animation_Time = parseFloat( $('#homepage-banner #settings div.animation-time').html() );
		var Transition_Time = parseFloat( $('#homepage-banner #settings div.transition-time').html() );
		var Max_Loops = parseFloat( $('#homepage-banner #settings div.max-loops').html() );
		
		if( !Pause_Time.isNaN && Pause_Time > 0 ) {
			Engine.Pause_Time = Pause_Time;
		}
		
		if( !Animation_Time.isNaN && Animation_Time > 0 ) {
			Engine.Animation_Time = Animation_Time;
		}
		
		if( !Transition_Time.isNaN && Transition_Time > 0 ) {
			Engine.Transition_Time = Transition_Time;
		}
		
		if( !Max_Loops.isNaN && Max_Loops >= 0 ) {
			Engine.Max_Loops = Max_Loops;
		}
		
		$('#settings').remove();
	},
	
	IE_Fixes: function() {
		if( $.browser.msie ) {
			Engine.Is_IE = true;
			$('#homepage-banner').wrapInner('<div class="IE" />');
			if( $.browser.version == '6.0' ) {
				Engine.Is_IE6 =  true;
				$('.IE').addClass('IE6').removeClass('IE');
				
				DD_belatedPNG.fix('.rectangles div');
			}
		}
	},
	
	Load: function() {
		$('#homepage-banner .slide h2 a').each(function() {
			$(this).clone().appendTo( $(this).closest('.slide') );
			var Title = $(this).text();
			$(this).parent().html(Title);
		});
		
		if( !Engine.Is_IE6 ) {
			$('#homepage-banner .slide').append('<div class="background-corners" />');
		}
		
		$('#homepage-banner').append('<ul id="slide-navigation"><li><a href="#next" class="next">&gt;</a></li><li><a href="#previous" class="previous">&lt;</a></li></ul>');
		
		$('#homepage-banner #slide-navigation a.next').click(function() {
			Engine.Button_Next();  
			return false;
		});
		$('#homepage-banner #slide-navigation a.previous').click(function() {
			Engine.Button_Previous();  
			return false;
		});
		
		Engine.Add_Rectangles( $('#homepage-banner .slide:first .rectangles') );
		
		$('#homepage-banner .slide:last').addClass('last');
		
		$('#homepage-banner .slide').hide();
		
		Engine.Reset_Slides();
		$('#homepage-banner .slide:first').css('z-index','2').fadeIn(Engine.Transition_Time, function() {
			Engine.Animate_Slide();
		});
		
	},
	
	Button_Next: function() {
		if( Engine.Can_Navigate ) {
			Engine.Auto_Animate = false;
			Engine.Animation_Time = Engine.Animation_Time_Fast;
			Engine.Transition_Time = Engine.Transition_Time_Fast;
			Engine.Next();
		}
	},
	
	Button_Previous: function() {
		if( Engine.Can_Navigate ) {
			Engine.Auto_Animate = false;
			Engine.Animation_Time = Engine.Animation_Time_Fast;
			Engine.Transition_Time = Engine.Transition_Time_Fast;
			Engine.Previous();
		}
	},
	
	Next: function() {
		Engine.Stop_Animation();
		
		$('#homepage-banner .slide:eq(1)').css('z-index', '1').show();
		Engine.Add_Rectangles( $('#homepage-banner .slide:eq(1) .rectangles') );
		
		$('#homepage-banner .slide:eq(0) .rectangles div').hide();
		$('#homepage-banner .slide:eq(0)').fadeOut(Engine.Transition_Time, function() {
			Engine.Reset_Slides();
			Engine.Animate_Slide();
			$(this).css('z-index','1').appendTo( $(this).parent() );
			$('#homepage-banner .slide:eq(0)').css('z-index', '2');
		});
	},
	
	Previous: function() {
		Engine.Stop_Animation();
		
		$('#homepage-banner .slide:last').css('z-index', '1').show();
		
		$('#homepage-banner .slide:first .rectangles div').hide();
		$('#homepage-banner .slide:first').fadeOut(Engine.Transition_Time, function() {
			Engine.Reset_Slides();
			
			$('#homepage-banner .slide:first').css('z-index', '1');
			$('#homepage-banner .slide:last').css('z-index', '2').prependTo( $(this).parent() );
			
			Engine.Add_Rectangles( $('#homepage-banner .slide:first .rectangles') );
			Engine.Animate_Slide();
		});
	},
	
	Add_Rectangles: function( Target ) {
		Target.empty();
		var Rectangles = '';
		for( var i = 1; i <= 9; i++ ) {
			Rectangles += '<div class="rectangle-' + i + '"></div>';
		}
		Target.append(Rectangles);
		Target.find('div').hide();
		
		if( Engine.Is_IE6 ){
			DD_belatedPNG.fix('.rectangles div');
		}
	},
	
	Animate_Slide: function() {
		Engine.Can_Navigate = true;
		$('#homepage-banner .slide:visible').each(function() {
			var Num_Rectangles = $(this).find('.rectangles div').size();
			var Rectangle_Time = Math.floor( Engine.Animation_Time / (Num_Rectangles + 5) );
			
			$(this).find('.rectangles div').each( function(i) {
				var Delay = i * Rectangle_Time + Rectangle_Time * 2;
				$(this).delay(Delay).pngFadeIn( Rectangle_Time );
			});
			
			$('#homepage-banner .slide:visible>img').animate({
				width: '850px',
				height: '300px'
			}, Engine.Animation_Time);
			
		});
		
		if( Engine.Auto_Animate ) {
			if( $('#homepage-banner .slide:visible').hasClass('last') ) {
				Engine.Num_Loops++;
			}
			if( Engine.Num_Loops <= Engine.Max_Loops ) {
				Engine.Next_Timeout = setTimeout(Engine.Next, Engine.Pause_Time + Engine.Animation_Time);
			}
		}
	},
	
	Stop_Animation: function() {
		Engine.Can_Navigate = false;
		clearTimeout( Engine.Next_Timeout );
		$('#homepage-banner .slide, #homepage-banner .slide>img').stop(true);
		$('#homepage-banner .slide .rectangles div').stop(true,true);
	},
	
	Reset_Slides: function() {
		$('#homepage-banner .slide>img').css('width', '950px').css('height', '358px');
		
		if( jQuery.support.opacity ) {
			$('#homepage-banner .slide').css('opacity', '1');
			$('#homepage-banner .slide .rectangles div').css('opacity', '1');
		}
	},
	
	Random: function( Max, Min ) {
		if( !Min ) {
			Min = 0;
		}
		if( !Max ) {
			Max = 1;
		}
		return Math.round((Math.random() * (Max - Min)) + Min);
	}
};



jQuery.fn.pngFadeIn = function(speed, callback) {
	if( !jQuery.support.opacity ) {
		return this.show(0, function() {
			if (jQuery.isFunction(callback)) 
				callback();
		});
		
	} else {
		return this.animate({opacity: 'show'}, speed, function() { 
			if (jQuery.isFunction(callback)) 
				callback();
		}); 
	}
}; 
 
jQuery.fn.pngFadeOut = function(speed, callback) { 
    if( !jQuery.support.opacity ) {
		return this.hide(0, function() {
			if (jQuery.isFunction(callback)) 
				callback();
		});
		
	} else {
		return this.animate({opacity: 'hide'}, speed, function() { 
			if (jQuery.isFunction(callback)) 
				callback();
		}); 
	}
};

/* Expandable Button script */
$(function(){
        $("#buttonNoHov").hover(function() {
                $("#buttonNoHov").toggleClass("buttonHov");
        });
});

/*  Accordian Dropdown */

    $('dl.q dd').click(function() {
    	var idx=$(this).parent('dl.q').index('dl.q');
		$('dl.a').eq(idx).toggle();
    })



