/*------------------------------------*/
// VARIABLES
/*------------------------------------*/
var matrixAuto = 0; 										// AUTO ROTATE
var matrixNoBorder = 0;										// NO BORDER
var matrixVideo = 0;										// VIDEO
var matrixRotate = 0;										// ROTATE
var matrixHash = 0;											// USE HASH TAGS
var limitCycle = 0;											// NUMBER OF CYCLES
var limitAmount = 6;										// LIMIT NUMBER OF ROTATIONS
var matrixArrow = 0;										// USE ARROW CLASS
var cycleDelay = 10;										// DELAY TIME IN SECONDS
var docTitle = document.title;								// PAGE TITLE
var domainURL = 'http://' + window.location.hostname;		// BASE URL
var allowRotate = true;										// ROTATE PAUSE TOGGLE
var rotateTimeout;											// TIMEOUT VARIABLE
var rotateInterval;											// ROTATION INTERVAL
var IE6 = false;											// IE6 VARIABLE
/*------------------------------------*/
// PRELOAD IMAGE FUNCTION
/*------------------------------------*/
(function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  }
})(jQuery)
/*------------------------------------*/
// FORMAT BACKGROUND URL CSS PROPERTY
/*------------------------------------*/
function extractUrl(input){
	// REMOVE QUOTES AND WRAPPING URL()
	return input.replace(/"/g,"").replace(/url\(|\)$/ig, "");
}
/*------------------------------------*/
// ROTATE PANEL
/*------------------------------------*/
function rotateNextPanel(){
	if(allowRotate){
		// VARIABLE FOR WHEN MAX ROTATIONS ARE HIT
		var hitMaxRotations = false;
		// IF LIMIT ROTATIONS IS ON
		if(limitCycle){
			// IF ROTATIONS IS 0 OR LESS
			if(limitAmount <= 0){
				// SET HIT MAX ROTATIONS TO TRUE
				hitMaxRotations = true;
				// STOP AUTO ROTATION
				clearInterval(rotateInterval);
			}
			// SUBTRACT ONE FROM LIMITAMOUNT VARIABLE
			limitAmount = limitAmount - 1;
		}
		// IF NOT CURRENTLY HOVERED
		if(!hitMaxRotations){
			// IF LAST PANEL
			if($("#categories a:last").hasClass("selected")){
				// GO TO FIRST
				changePanelTo($("#categories a:first"));
			}
			else{
				// GO TO NEXT
				changePanelTo($("#categories a.selected").next("a"));
			}
			
		}
	}
}
/*------------------------------------*/
// CHANGE PANEL
/*------------------------------------*/
function changePanelTo(obj){
	// REMOVE CURRENT SELECTED ITEM BACKGROUND
	$("#categories a").removeClass("selected");
	$("#categories").removeClass("blackTxt");
	$("#categories").removeClass("whiteTxtBlackDot");
	// GET ID OF CURRENTLY SELECTED
	var rep_click = $(obj).attr("href");
	var repid = rep_click.replace("#","");
	// HIDE CURRENT
	if($(rep_click).hasClass("blackTxt")){
		$("#categories").addClass("blackTxt");	
	}
	if($(rep_click).hasClass("whiteTxtBlackDot")){
		$("#categories").addClass("whiteTxtBlackDot");	
	}
	// IF VIDEO
	if(matrixVideo){
		// remove any existing playing video
		swfobject.removeSWF("matrix-video");
		if($(rep_click + " .videoContainer").append('<div id="matrix-video">&nbsp;</div>')){
			// get javascript for current video
			$.getScript('scripts/videos/'+ repid +'.js', function() {										   
				// show new clicked report
				if(IE6){
					$(rep_click).show();
				}
				else{
					$(rep_click).fadeIn("slow", function(){
						if(jQuery.browser.msie){
							$(obj).get(0).style.removeAttribute('filter');
						}
					});	
				}
			});
		}	
	}
	else{
		// SHOW NEW
		if(IE6){
			$(rep_click).show();
		}
		else{
			// FADE
			$(rep_click).fadeIn("slow", function(){
				if(jQuery.browser.msie){
					$(obj).get(0).style.removeAttribute('filter');
				}
			});
		}
	}
	// HIDE CURRENT
	if(IE6){
		$("#details .item:not("+rep_click+")").hide();
	}
	else{
		$("#details .item:not("+rep_click+")").fadeOut("slow", function(){
			if(jQuery.browser.msie){
				$(obj).get(0).style.removeAttribute('filter');
			}
		});
	}
	// SET CURRENT BUTTON TO SELECTED
	$(obj).addClass('selected');
	// IF HASH
	if(matrixHash){
		document.location.hash = rep_click;
		document.title = docTitle;
	}
}
/*------------------------------------*/
// CLICKING ON A REPORT LINK
/*------------------------------------*/
function initPanelConfig(){ 
	$('#matrixLayout').addClass('jsOn');
	$('#categories').show();
	$('#categories a').live('click',function(e){
		// PREVENT DEFAULT
		e.preventDefault();
		changePanelTo(this);
		// STOP AUTO ROTATION
		clearInterval(rotateInterval);
		// PREVENT DEFAULT
		return false;
	});
	if(matrixRotate){
		rotateInterval = setInterval("rotateNextPanel()",cycleDelay * 1000);
	}
	if(matrixVideo){	
		// PREVIOUS PANEL BUTTON
		$(".previous-panel").live('click',function() {
			// IF FIRST
			if($("#categories a:first").hasClass("selected")){
				// CHANGE TO LAST
				changePanelTo($("#categories a:last"));
			}
			else{
				// GO TO PREVIOUS
				changePanelTo($("#categories a.selected").prev("a"));
			}
			window.location.hash = $("#categories a.selected").attr("href");
		});
		// NEXT PANEL
		$(".next-panel").live('click',function() {	
			// IF LAST
			if($("#categories a:last").hasClass("selected")){
				// CHANGE TO FIRST
				changePanelTo($("#categories a:first"));
			}
			else{
				// GO TO NEXT
				changePanelTo($("#categories a.selected").next("a"));
			}
			window.location.hash = $("#categories a.selected").attr("href");
		});
	}
};
/*------------------------------------*/
// 
/*------------------------------------*/
function checkHashURL(){ 
	// IF HASH EXISTS
	if(window.location.hash && window.location.hash != "" && window.location.hash != "#"){
		var ihash = window.location.hash;
		// MAKE SURE POUND SIGN IS NOT THERE
		ihash = ihash.replace("#","");
		// ADD POUND SIGN
		var m_hash = ("#"+ihash);
		// SEE IF ELEMENT EXISTS IN HTML
		if($('#categories a[href='+m_hash+']').length > 0){
			// CLICK HASH ID BUTTON
			changePanelTo($('#categories a[href='+m_hash+']'));
			// SCROLL TO SELECTED
			$("div#categories").scrollTo('a[href='+m_hash+']');
		}
		else{
			// IF IT DOESN'T EXIST IN HTML
			changePanelTo($('#categories a:first'));
		}
	}
	else{
		// IF NO HASH, LOAD FIRST ITEM
		changePanelTo($('#categories a:first'));
	}
}
/*------------------------------------*/
// JQUERY READY!
/*------------------------------------*/
$(document).ready(function() {
	/*------------------------------------*/
	// IE6
	/*------------------------------------*/
	if($.browser.msie){
  		if($.browser.version < 7){
			IE6 = true;
		}
	}
	/*------------------------------------*/
	// PRELOAD EACH BACKGROUND IMAGE
	/*------------------------------------*/
	var $arr = $('#details .item');
	$arr.each(function(idx) {
		var bgurl = extractUrl($(this).css('background-image'));
		if(bgurl){
			if(idx != ($arr.length - 1)){
				jQuery.preLoadImages(bgurl);
			}
		}
	});
	/*------------------------------------*/
	// PAUSE ROTATION ON HOVER
	/*------------------------------------*/
	$('#details').live('mouseover mouseout',function(trEvent){
		if(trEvent.type == 'mouseover'){
			if(!allowRotate){
				clearTimeout(rotateTimeout);
			}
			allowRotate = false;
		}
		else{
			if(!allowRotate) {
				rotateTimeout = setTimeout(function(){
					allowRotate = true;
				}, 500);
			}
		}
	});
	/*------------------------------------*/
	// SET VARIABLES
	/*------------------------------------*/
	if($("#matrixLayout").hasClass("matrixAuto")){
		matrixAuto = 1;
	}
	if($("#matrixLayout").hasClass("matrixNoBorder")){
		matrixNoBorder = 1;
	}	
	if($("#matrixLayout").hasClass("matrixVideo")){
		matrixVideo = 1;
	}
	if($("#matrixLayout").hasClass("matrixRotate")){
		matrixRotate = 1;
	}
	if($("#matrixLayout").hasClass("matrixHash")){
		matrixHash = 1;
	}
	if($("#matrixLayout").hasClass("limitCycle")){
		limitCycle =  1;
	}
	if($("#matrixLayout").hasClass("matrixArrow")){
		matrixArrow = 1;
	}
	/*------------------------------------*/
	// CREATE LINKS
	/*------------------------------------*/
	if(matrixAuto){
		$(".item").each(function () {
			var cat_i = $(this).attr("id");
			var cat_t = $(this).attr("title");
			$(this).removeAttr("title");
			if(matrixArrow){
				var catClass = 'one-line';
				if($(this).hasClass('twoline')){
					catClass = 'two-line';
				}
				$("#categories").append('<a href="#'+cat_i+'"><strong class="'+catClass+'">'+cat_t+'</strong><span></span></a>');
			}
			else{
				$("#categories").append('<a href="#'+cat_i+'"><span>'+cat_t+'</span></a>');
			}
		});
	}
	if(matrixNoBorder){
		$('#categories a:last').css("border-bottom","0");
	}
	/*------------------------------------*/
	// GET SCROLL-TO SCRIPT
	/*------------------------------------*/
	$.getScript("/styles/scripts/jquery.scrollto.js", function(){
		// EXECUTE FUNCTIONS
		initPanelConfig();
		checkHashURL();
	});
});
