$(document).ready(function(){

var innerH = $("#inner").height(); // inner height at time of page load
var trackInnerH = innerH; // for tracking inner height


(function($,sr){

// debouncing function from John Hann
// http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
var debounce = function (func, threshold, execAsap) {
      var timeout;
 
      return function debounced () {
          var obj = this, args = arguments;
          function delayed () {
              if (!execAsap)
                  func.apply(obj, args);
              timeout = null; 
          };
 
          if (timeout)
              clearTimeout(timeout);
          else if (execAsap)
              func.apply(obj, args);
 
          timeout = setTimeout(delayed, threshold || 100); 
      };
  }

// smartresize 
	jQuery.fn[sr] = function(fn) {  return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); }; 
	
	
})(jQuery,'smartresize');



//footer stick
startPositionFooter();

	function startPositionFooter(){
	
			$("#footer").css( { position: "absolute", top: $("#inner").height() +"px" } );
			$("#footer").css("display","block");
		
	}
	
	function positionFooter(){
	
			$("#footer").css( { position: "absolute", top: $("#inner").height() - $("#footer").height() +"px" } );
		
	}
	

adjustInner();
	


	function adjustInner() {
		
		var footer_pos = $("#footer").position();
		
		var inner_height = $("#inner").height();
		
		if ( footer_pos.top >= (inner_height) ) {
		
			// adjust height of inner
			var new_height = footer_pos.top + $("#footer").height(); // 26 is height of the footer
			$("#inner").height(new_height);
	
		}
		
		if ( inner_height < $(window).height() ) {
			
			var new_height = $(window).scrollTop() + $(window).height();
			$("#inner").height(new_height); //alert(new_height);
			
		}
		
		flowBG();
		trackInnerH = $("#inner").height();
		
	}
	


	function flowBG() {
		
		var inner_height = $("#inner").height();
		
		$("#background").height(inner_height);
		$("#inner_wrap").height(inner_height);
		
		positionFooter();
		
		
	}
	
	
flowHeader();

	function flowHeader() {
		
		var w = $(window).width();
		var o = $("#smart-brands").offset();
		var l = o.left;
		
		var dif = w - l;
		$("#smart-brands").width(dif);
		
	}

	$(window)
		.scroll(adjustInner)
		.resize(adjustInner)
		.resize(flowHeader)
		
	
	function adjustAfterResize() { 
		
		if(trackInnerH > innerH) {
			$("#inner").height(innerH);
		}
		
		adjustInner();
		
	}
	
	var TO = false;
	$(window).resize(function(){
	 if(TO !== false)
		clearTimeout(TO);
	 	TO = setTimeout(adjustAfterResize, 200); //200 is time in miliseconds
	});

		
		
		
	// create the grid
	var useBlocks = Array();
	
	var displayID = Array(0,1,2,310,1221,1222,1223,1321,1322,1323,1324,1325,1326,1422,1423,1424,1425,1426,1427,1428,1523,1524,1525,1526,1527,1528,1529,1623,1624,1625,1626,1627,1628,1629,1631,1632,1633,1634,1635,1639,1640,1641,1642,1643,1664,1670,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1739,1740,1741,1742,1743,1744,1745,1763,1764,1765,1766,1767,1768,1770,1771,1772,1826,1827,1828,1829,1830,1831,1832,1833,1834,1835,1836,1837,1838,1839,1842,1843,1844,1845,1846,1847,1848,1861,1862,1863,1864,1865,1866,1867,1868,1869,1870,1871,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1941,1942,1943,1944,1945,1946,1948,1949,1961,1962,1963,1964,1988,2029,2030,2031,2032,2034,2035,2036,2037,2038,2039,2040,2041,2042,2043,2044,2050,2054,2055,2057,2058,2059,2060,2061,2062,2077,2086,2087,2126,2131,2132,2133,2134,2135,2136,2137,2138,2139,2140,2141,2142,2143,2149,2150,2151,2157,2158,2159,2160,2161,2162,2185,2186,2187,2188,2189,2225,2226,2227,2228,2234,2235,2236,2237,2238,2239,2240,2241,2242,2243,2248,2249,2250,2252,2253,2254,2255,2256,2257,2258,2259,2260,2261,2262,2263,2265,2266,2267,2285,2286,2287,2288,2326,2327,2328,2329,2334,2335,2336,2337,2338,2339,2340,2341,2342,2348,2349,2350,2351,2352,2353,2354,2355,2356,2357,2358,2359,2360,2361,2362,2363,2366,2384,2385,2386,2387,2388,2426,2427,2428,2430,2431,2437,2438,2439,2440,2441,2442,2443,2446,2448,2449,2450,2451,2452,2453,2454,2455,2456,2457,2458,2459,2460,2461,2462,2463,2466,2474,2484,2485,2486,2487,2488,2526,2527,2528,2529,2530,2532,2534,2537,2538,2539,2540,2542,2543,2546,2547,2548,2549,2550,2551,2552,2553,2554,2560,2561,2562,2563,2564,2565,2566,2571,2572,2573,2574,2583,2584,2585,2586,2627,2628,2629,2630,2631,2632,2633,2634,2636,2637,2638,2639,2640,2641,2642,2643,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2660,2661,2662,2663,2664,2665,2666,2669,2670,2671,2672,2673,2674,2675,2677,2678,2679,2682,2683,2684,2685,2727,2728,2729,2730,2731,2732,2733,2734,2737,2738,2739,2740,2741,2742,2743,2744,2745,2746,2747,2748,2749,2750,2751,2752,2753,2754,2755,2761,2762,2763,2764,2765,2766,2767,2769,2770,2771,2772,2776,2777,2778,2780,2781,2782,2783,2784,2785,2827,2828,2829,2830,2831,2832,2833,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2845,2847,2848,2849,2850,2851,2852,2853,2854,2855,2856,2857,2858,2859,2860,2861,2862,2863,2864,2865,2866,2867,2869,2870,2874,2875,2876,2877,2880,2881,2882,2883,2927,2928,2929,2930,2931,2932,2933,2937,2938,2939,2940,2941,2942,2943,2944,2945,2948,2949,2950,2951,2952,2953,2954,2955,2956,2957,2958,2959,2960,2962,2963,2964,2965,2966,2967,2969,2970,2974,2975,2976,2979,2980,2981,2982,3026,3027,3028,3029,3030,3031,3032,3033,3037,3038,3039,3040,3041,3042,3043,3044,3045,3050,3051,3052,3053,3054,3055,3056,3057,3058,3059,3060,3062,3063,3064,3067,3068,3069,3070,3071,3072,3073,3074,3075,3076,3077,3079,3080,3126,3127,3128,3129,3130,3131,3137,3138,3139,3140,3141,3142,3143,3144,3145,3150,3151,3152,3153,3154,3155,3156,3157,3158,3159,3160,3168,3169,3170,3171,3172,3173,3174,3177,3178,3179,3180,3227,3228,3229,3230,3231,3232,3233,3236,3237,3238,3239,3240,3241,3242,3243,3244,3251,3252,3253,3254,3255,3256,3257,3258,3259,3260,3268,3269,3270,3271,3272,3273,3275,3276,3277,3278,3279,3328,3329,3330,3331,3332,3333,3334,3338,3339,3340,3341,3342,3343,3344,3345,3346,3350,3351,3352,3353,3354,3355,3356,3357,3358,3359,3360,3361,3366,3367,3368,3369,3370,3371,3372,3374,3375,3376,3377,3378,3379,3429,3430,3431,3432,3433,3434,3438,3439,3440,3441,3442,3443,3444,3445,3446,3447,3448,3449,3450,3451,3452,3453,3454,3455,3456,3457,3458,3459,3463,3464,3466,3467,3468,3469,3473,3474,3475,3476,3477,3478,3529,3530,3531,3532,3533,3534,3535,3536,3537,3538,3539,3540,3541,3542,3543,3544,3545,3546,3547,3548,3550,3551,3552,3553,3554,3555,3556,3557,3558,3559,3560,3563,3564,3565,3566,3567,3568,3569,3573,3574,3575,3576,3577,3630,3631,3632,3633,3634,3635,3636,3640,3641,3642,3643,3646,3647,3648,3649,3650,3651,3652,3653,3654,3655,3656,3657,3658,3659,3663,3664,3665,3666,3671,3672,3673,3674,3675,3676,3677,3732,3733,3734,3735,3736,3737,3738,3740,3741,3742,3743,3744,3745,3746,3747,3748,3749,3750,3751,3752,3753,3754,3755,3756,3757,3758,3759,3760,3761,3762,3763,3764,3765,3766,3767,3769,3771,3772,3773,3774,3775,3776,3777,3833,3834,3835,3836,3837,3838,3839,3840,3841,3842,3843,3844,3845,3846,3847,3848,3849,3850,3851,3852,3853,3854,3855,3856,3857,3858,3859,3860,3861,3862,3863,3864,3865,3866,3867,3868,3869,3871,3872,3873,3874,3875,3876,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,3944,3945,3946,3947,3948,3949,3950,3951,3958,3959,3960,3961,3962,3963,3964,3965,3966,3967,3968,3969,3970,3971,3972,3973,3974,4036,4038,4039,4040,4041,4042,4043,4044,4045,4046,4047,4048,4049,4050,4051,4058,4059,4060,4061,4062,4063,4064,4065,4066,4067,4068,4069,4070,4071,4072,4073,4140,4141,4142,4143,4144,4145,4146,4147,4148,4161,4162,4163,4164,4165,4171,4172,4173,4245,4246,4247,4262,4263,4272,4273,4274,4346,4347,4373,4374,4473,4474,4573,4574,4575,4674,5678,5679);
	
	makeGrid();
	
	function makeGrid() {
		
		var html = "";
		var numBlocks = 6000;
		
		var colors = Array("#f18517","#60cdcb","#c7d61f","#899639","#b46ed9","#484829","#f0498c","#15a018");
		var redBlocks = Array(3429,2741,4048,2781,3371);
		
		var startX = 0;
		var startY = 0;
		var delta = 9;
		
		var blocks = Array();
		var block_index = 0;
		
		var blockLength = displayID.length;
		
		// increase or reduce the amount of hidden blocks by time of day
		var d = new Date();
		var hrs = d.getHours();
		var throttle = 15;
		switch(true) {
			case hrs <= 1: throttle = 85;
			break;
			case hrs > 1 && hrs <= 6: throttle = 75;
			break;
			case hrs > 6 && hrs <= 8: throttle = 65;
			break;
			case hrs > 8 && hrs <= 10: throttle = 45;
			break;
			case hrs > 10 && hrs <= 13: throttle = 30;
			break;
			case hrs > 13 && hrs <= 17: throttle = 15;
			break;
			case hrs > 17 && hrs <= 22: throttle = 30;
			break;
			case hrs > 22: throttle = 65;
			break;
		}
		
		for(i=0; i<numBlocks; i++) {
			
			var block = new Object();
			
			block.ID = i;
			
			// visible?
			block.classType = "box"; //!inArray(i,displayID)? "box-hidden":"box";  //if(block.class=="box-hidden") alert("hidden");
			
			// case study?
			block.caseStudy = inArray(i,redBlocks)? " case-study":"";
			
			// shut off some of the blocks
			var rNum = Math.floor(Math.random()*100);
			block.classType = (rNum<throttle && !block.caseStudy)? "box-hidden":block.classType;
			
			// color blocks randomly
			/*rNum = Math.floor(Math.random()*100);
			if(block.classType=="box" && rNum<30) {
				rNum = Math.floor(Math.random()*8);
				block.bgColor = "background:"+colors[rNum];
			}*/
			////////////////////////
			
			// color blocks grey to start
			if(block.classType=="box") block.bgColor = "background:#d3d5d6";
			
			block.bgColor = (block.caseStudy)? "background:#e31836":block.bgColor;
			block.engagementType = (block.caseStudy=="")? " engagement-type":"";
			
			// de-activate
			block.active = false;
			
			// position
			block.left = startX;
			block.top = startY;
			
			var bNum = (block.classType=="box")? i:"";
			
			
			block.html = '<div class="'+block.classType+block.caseStudy+block.engagementType+'" id="block-'+i+'" rel="block-'+i+'" style="position:absolute;top:'+block.top+'px;left:'+block.left+'px;'+block.bgColor+'"></div>'; // <div class="num">'+bNum+'</div>
						
			startX = (i % 100)? startX+delta:0; 
			if(i>0) startY = (i % 100)? startY:startY+delta;
			
			
			blocks.push(block);
			
		}
		
		var obj;
		for(i=0; i<blockLength; i++) {
	
			obj = blocks[displayID[i]];
			html += obj.html;
			useBlocks.push(obj);
			
		}
	
		
		
		$("#squares").html(html);
		
		// mix up the blocks
		Shuffle(useBlocks);
		
	}


// ENGAGEMENT TYPE BUBBLE UP SM
	$(".engagement-type").hover(
		function() { 
			// don't do this for hidden boxes
			if(!$(this).hasClass('box-hidden')) {
				
				var idStr = $(this).attr('rel');
				idStr = idStr.split("-");
				idStr = idStr[1];
				
				var data = getBlockData(idStr);
				
				$(this).css('background', data[4]);
				
				
				
				$(this).append(makeBubbleSm(data, idStr));
			
				// position bubble over center of cursor
				var p = $("#bubble-sm").position();
				var left = p.left - $("#bubble-sm").width()/2 + 4;
				var top = p.top - 35 + 7;
				
				// Set top to -28px
				// Error when half scrolled down the screen using the variable "top"
				$("#bubble-sm").css( { "left":left+"px", "top":"-28px" } );
				$("#bubble-sm-arrow").css( { "left":"0px", "top":"16px" } );
			
			
				var hover = setTimeout(function(){ 
					$("#bubble-sm").fadeIn('fast');
				}, 650);
			}

		},
		function() { 
			if(!$(this).hasClass('box-hidden')) {
				$("#bubble-sm").remove();clearTimeout(hover);
			}
		}
	);
	
	
	function makeBubbleSm(data,idStr) {
		//if(data[0] == "ENGAGEMENT TYPE"){
		var html = "<div id='bubble-sm' class='block-"+idStr+"'>";
		html += "<ul><li><a> &nbsp;"+data[0]+": <span>"+data[1]+"</span>    Start time: <span>"+data[2]+"</span>   Elapsed time: <span>"+data[3]+"</span></a></li>";
		html += "</ul><div id='bubble-sm-arrow'></div></div>";
		
		/*}else{
			var html = "<div id='bubble-sm' class='block-"+idStr+"'>";
		html += "<ul><li><a> &nbsp;"+data[0]+": <span>"+data[1]+"</span></a></li>";
		html += "</ul><div id='bubble-sm-arrow'></div></div>";
		}*/
		return html;
		
	}

// end ENGAGEMENT TYPE BUBBLE UP SM

	
	
// functions for generating HP data columns

// first parse the XML for the data we need, then run createColumns
$.ajaxSetup ({  
	 cache: true  
});


// PARSE THE XML DATA
var xmlDataParsed = false;
var dataObj;

if(!xmlDataParsed) {
	
	$.ajax({
		type: "GET",
		url: "/wp-content/themes/accent/data-feed.xml",
		dataType: "xml",
		success: function(xml) {
			
			dataObj = $(xml).find('Webfeed').children();
			
			createColumns();
			
			xmlDataParsed = true;
		}
	});
	
	
}




	function colorBlocksTimed(data) {
		
		var totalBlocks = useBlocks.length;
		
		var i = 0; var amt = totalAmt = 0;
		while(i<data.numCols) {
			amt += Math.round(eval("data.perc"+i));
			i++;
		}
		
		i = 0; var total = 0; var objects = Array();
		
		while(i<data.numCols) {
			
			var obj = new Object(); 
			
			var perc = Math.round( eval("data.perc"+i)/amt * 100 );
			//perc = (!perc)? 1:perc;
			
			obj.perc = (i+1 == data.numCols)? 100 - total:perc;
			obj.color = eval("data.color"+i); //console.log(eval("data.type"+i) + " -> "+obj.color)
			
			// what percentage of the blocks corresponds to these percentages?
			obj.percBlocks = (i+1 == data.numCols)? totalBlocks - totalAmt:Math.round( totalBlocks * obj.perc/100 );
			
			// set minimum
			if(obj.percBlocks<0) obj.percBlocks = 0;
			
			obj.type = eval("data.type"+i);
					
			objects.push(obj);
			
			total += perc;
			totalAmt += obj.percBlocks;
			
			i++;
		}
		// shuffle the objects
		Shuffle(objects);
		Shuffle(useBlocks);
		
		// loop through the blocks and color them
		var idx = 0; var rowIndex = 0;
		$.each(objects, function(index, value) {
			
			var num = $(this).attr('percBlocks'); //console.log(num)
			var color = $(this).attr('color'); //console.log($(this).attr('type') + " -> "+color)
			
			for(var n = 0; n<num; n++) {
			
				var blockObj = useBlocks[idx];
				
				var blockID = "#block-"+blockObj.ID;
				var block = $(blockID);
				
//				var bgColor = "";
				var bgColor = "#"+color;				
//
// a little rigged to get the hover color to match the type
//
				/*if(eval("data.type"+rowIndex) == 'PHONE CALL')									
					bgColor = "#f18517";
				else if(eval("data.type"+rowIndex) == 'IVR')									
					bgColor = "#60cdcb";
				else if(eval("data.type"+rowIndex)  == 'MAIL')									
					bgColor = "#c7d61f";
				else if(eval("data.type"+rowIndex)  == 'MOBILE')									
					bgColor = "#899639";
				else if(eval("data.type"+rowIndex)  == 'CHAT')									
					bgColor = "#b46ed9";
				else if(eval("data.type"+rowIndex)  == 'EMAIL')									
					bgColor = "#484829";
				else if(eval("data.type"+rowIndex)  == 'WEB SELF SERVICE')									
					bgColor = "#f0498c";
				else if(eval("data.type"+rowIndex)  == 'SOCIAL MEDIA')									
					bgColor = "#15a018";

				else if(eval("data.type"+rowIndex)  == 'POSITIVE')									
					bgColor = "#f18517";
				else if(eval("data.type"+rowIndex)  == 'NEGATIVE')									
					bgColor = "#60cdcb";
				else if(eval("data.type"+rowIndex)  == 'NEUTRAL')									
					bgColor = "#c7d61f";

				else if(eval("data.type"+rowIndex)  == 'CABLE')									
					bgColor = "#f18517";
				else if(eval("data.type"+rowIndex)  == 'HEALTHCARE/FITNESS')									
					bgColor = "#60cdcb";
				else if(eval("data.type"+rowIndex)  == 'INSURANCE/FINANCIAL')									
					bgColor = "#c7d61f";
				else if(eval("data.type"+rowIndex)  == 'SOLUTIONS')									
					bgColor = "#899639";
				else if(eval("data.type"+rowIndex)  == 'MANUFACTURING')									
					bgColor = "#b46ed9";
				else if(eval("data.type"+rowIndex)  == 'RETAIL')									
					bgColor = "#484829";
				else if(eval("data.type"+rowIndex)  == 'TELECOMMUNICATIONS')									
					bgColor = "#f0498c";*/
				
				blockObj.bgColor = (blockObj.caseStudy)? "#e31836":bgColor;
				
				blockObj.title = data.title;
				blockObj.type = $(this).attr('type'); //eval("data.type"+rowIndex);
				
				
				var startDate = randomDate();
				blockObj.start = startDate[0];
				blockObj.elapsed = elapsedTime(startDate[1]);
				
				idx++;
				
			}
			
			rowIndex++;
			
		});
		
		
		var blockIndex = 0; var len = useBlocks.length;
		play = setInterval(function(){ 
			blockObj = $(useBlocks).get(blockIndex);
			blockID = "#block-"+blockObj.ID;
			if(blockObj.classType!="box-hidden") {
				$(blockID).css('background',blockObj.bgColor);
				//$(blockID).animate({ backgroundColor: blockObj.bgColor }, 'fast');
				$(blockID).addClass("active");
			}
			
			if(blockIndex==len-1) { 
				clearInterval(play);
				// get type of chart data from selected button index
				var dataType;
				$(".nav-graph").each(function() {
					if($(this).hasClass("active")) dataType = $(this).attr("rel");
				});
				
				var columnData = getColumnData(dataType);
				colorBlocksTimed(columnData);
			} else {
				blockIndex++;
			}
		}, 1);
		
		
		
	}
	
	
	
	
	function colorBlocks(data) {
		
		var totalBlocks = useBlocks.length;
		
		var i = 0; var amt = totalAmt = 0;
		while(i<data.numCols) {
			amt += Math.round(eval("data.perc"+i));
			i++;
		}
		
		i = 0; var total = 0; var objects = Array();
		
		while(i<data.numCols) {
			
			var obj = new Object(); 
			
			var perc = Math.round( eval("data.perc"+i)/amt * 100 );
			//perc = (!perc)? 1:perc;
			
			obj.perc = (i+1 == data.numCols)? 100 - total:perc;
			obj.color = eval("data.color"+i); //console.log(eval("data.type"+i) + " -> "+obj.color)
			
			// what percentage of the blocks corresponds to these percentages?
			obj.percBlocks = (i+1 == data.numCols)? totalBlocks - totalAmt:Math.round( totalBlocks * obj.perc/100 );
			
			// set minimum
			if(obj.percBlocks<0) obj.percBlocks = 0;
			
			obj.type = eval("data.type"+i);
					
			objects.push(obj);
			
			total += perc;
			totalAmt += obj.percBlocks;
			
			i++;
		}
		// shuffle the objects
		Shuffle(objects);
		Shuffle(useBlocks);
		
		// loop through the blocks and color them
		var idx = 0; var rowIndex = 0;
		$.each(objects, function(index, value) {
			
			var num = $(this).attr('percBlocks'); //console.log(num)
			var color = $(this).attr('color'); //console.log($(this).attr('type') + " -> "+color)
			
			for(var n = 0; n<num; n++) {
			
				var blockObj = useBlocks[idx];
				
				var blockID = "#block-"+blockObj.ID;
				var block = $(blockID);
				
				var bgColor = "#"+color;				
				blockObj.bgColor = (blockObj.caseStudy)? "#e31836":bgColor;
				
				blockObj.title = data.title;
				blockObj.type = $(this).attr('type'); //eval("data.type"+rowIndex);
				
				
				var startDate = randomDate();
				blockObj.start = startDate[0];
				blockObj.elapsed = elapsedTime(startDate[1]);
				
				idx++;
				
			}
			
			rowIndex++;
			
		});
		
		
		var blockIndex = 0; var len = useBlocks.length;
		
		for(i = 0; i<len; i++) {
			
			blockObj = $(useBlocks).get(blockIndex);
			blockID = "#block-"+blockObj.ID;
			if(blockObj.classType!="box-hidden") {
				$(blockID).css('background',blockObj.bgColor);
				//$(blockID).animate({ backgroundColor: blockObj.bgColor }, 'fast');
				$(blockID).addClass("active");
			}
			
			if(blockIndex==len-1) { 
				colorBlocksTimed(data);
			} else {
				blockIndex++;
			}
			
			
		}
		
		
	}
	

	
	function getBlockData(idx) {
		
		// get the block data
		var len = useBlocks.length;
		var data = Array();
		
		for(var i = 0; i<len; i++) {
			if(useBlocks[i].ID == idx) {
				data.push(useBlocks[i].title);
				data.push(useBlocks[i].type);
				data.push(useBlocks[i].start);
				data.push(useBlocks[i].elapsed);
				data.push(useBlocks[i].bgColor);
				break;
			}
		}
		
		return data;
		
	}
	
	function randomDate() {
		var startMillis = new Date().getTime(); //Get millis for right now
		startMillis -= Math.floor(Math.random()*300000); // back off a random increment of 5 minutes
		var endMillis = new Date().getTime(); //Get millis for today right now
		var randomDate = new Date(startMillis + Math.random()*(endMillis-startMillis)); //new Date() with millis set to random value between startMillis and endMillis
		
		var ampm = "AM";
		var hrs = randomDate.getHours();
		if(hrs>12) hrs-=12;
		if(hrs>12) ampm = "PM";
		if(!hrs) hrs = 12; // am
		var mns = randomDate.getMinutes()
		if(mns<10) mns = "0"+mns;
		
		var timeStr = hrs+":"+mns+ampm;
		timeStr += " ";
		
		var day = randomDate.getDate();
		var mo = randomDate.getMonth() + 1;
		var yr = randomDate.getFullYear();
		
		timeStr += mo+"/"+day+"/"+yr;
		
		var timeArray = Array(timeStr,randomDate); // first index is string to display, second is raw random date value
		
		return timeArray;

	}
	
	function makeTime(time) { 
		
		var hrs = Math.floor(time/60/60);
		var mns = Math.floor(time/60 - (hrs*60));
		var scs = time - (hrs*60*60) - (mns*60);
		
		hrs = (hrs<10)? "0"+hrs:hrs;
		mns = (mns<10)? "0"+mns:mns;
		scs = (scs<10)? "0"+scs:scs;
		
		return hrs+":"+mns+":"+scs;
		
	}
	
	function elapsedTime(start) {
		start = start.getTime();
		var end = new Date().getTime();
		var elapsed = Math.round((end - start) / 1000);
		return makeTime(elapsed);
	}
	
	function createColumns(type) {
		
		if(type==null) { 
			
			// default data set
			var type = "channel";
			
		}
		
		var columnData = getColumnData(type);
		
		// color the blocks by colors and percentages found in the data
		colorBlocks(columnData);
		
		// hide all columns and set top to 0
		var numCols = $('#graph #columns .col-wrap').length;
		
		var i = 0;
		while(i<numCols) {
			var column = ($('.col-wrap').get(i));
			$(column).css('display','none');
			i++;
		}
		
		// the highest number is 100 percent
		i = 0; var high_num = 0;
		while(i<columnData.numCols) {
			var num = parseInt(eval("columnData.perc"+i));
			high_num = (num>high_num)? num:high_num; 
			i++;
		}
		// show pertinent columns
		i = 0;
		while(i<columnData.numCols) {
			
			//var colData = dataObj.colData;
			var perc = parseInt(eval("columnData.perc"+i));
			perc = (perc==high_num)? 100:Math.round((perc/high_num)*100);
			var color = eval("columnData.color"+i);
			var left = 15*i;
			
			// set default if perc is less than 15
			if(perc<5) perc = 5;
			
			// for phone, add 10???
			//if(eval("columnData.type"+i)=='PHONE CALL') perc+=10;
			
			animateColumn(i,perc,color,left);
			
			i++;	
			
		}
		
	}
	
	function getColumnData(dataType) {
		
		var colDataObj = new Object();
		
		// pull the data from the xml file
		
		var num0, num1, num2, num3, num4, num5, num6, num7;
		
		switch(dataType) {
			
			case "channel":
			
				dataObj.each(function() {
					if(this.nodeName=='Engage_Phone') num0 = parseInt($(this).text());
					if(this.nodeName=='Engage_IVR') num1 = parseInt($(this).text());
					if(this.nodeName=='Engage_Mail') num2 = parseInt($(this).text());
					if(this.nodeName=='Engage_Mobile') num3 = parseInt($(this).text());
					if(this.nodeName=='Engage_Chat') num4 = parseInt($(this).text());
					if(this.nodeName=='Engage_Email') num5 = parseInt($(this).text());
					if(this.nodeName=='Engage_Web') num6 = parseInt($(this).text());
					if(this.nodeName=='Engage_Social') num7 = parseInt($(this).text());
					
				});
			
				colDataObj.numCols = 8;
				colDataObj.title = "ENGAGEMENT TYPE";
				colDataObj.perc0 = num0;
				colDataObj.color0 = "f18517";
				colDataObj.type0 = 'PHONE CALL';
				colDataObj.start0 = '';
				colDataObj.elapsed0 = '';
				colDataObj.perc1 = num1;
				colDataObj.color1 = "60cdcb";
				colDataObj.type1 = 'IVR';
				colDataObj.start1 = '';
				colDataObj.elapsed1 = '';
				colDataObj.perc2 = num2;
				colDataObj.color2 = "c7d61f";
				colDataObj.type2 = 'MAIL';
				colDataObj.start2 = '';
				colDataObj.elapsed2 = '';
				colDataObj.perc3 = num3;
				colDataObj.color3 = "899639";
				colDataObj.type3 = 'MOBILE';
				colDataObj.start3 = '';
				colDataObj.elapsed3 = '';
				colDataObj.perc4 = num4;
				colDataObj.color4 = "b46ed9";
				colDataObj.type4 = 'CHAT';
				colDataObj.start4 = '';
				colDataObj.elapsed4 = '';
				colDataObj.perc5 = num5;
				colDataObj.color5 = "484829";
				colDataObj.type5 = 'EMAIL';
				colDataObj.start5 = '';
				colDataObj.elapsed5 = '';
				colDataObj.perc6 = num6;
				colDataObj.color6 = "f0498c";
				colDataObj.type6 = 'WEB SELF SERVICE';
				colDataObj.start6 = '';
				colDataObj.elapsed6 = '';
				colDataObj.perc7 = num7;
				colDataObj.color7 = "15a018";
				colDataObj.type7 = 'SOCIAL MEDIA';
				colDataObj.start7 = '';
				colDataObj.elapsed7 = '';
			
			break;
			
			case "sentiment": 
			
				dataObj.each(function() {
					if(this.nodeName=='Sentiment_Positive') num0 = parseInt($(this).text());
					if(this.nodeName=='Sentiment_Negative') num1 = parseInt($(this).text());
					if(this.nodeName=='Sentiment_Neutral') num2 = parseInt($(this).text());
					
				});
			
				colDataObj.numCols = 3;
				colDataObj.title = "SENTIMENT";
				colDataObj.perc0 = num0;
				colDataObj.color0 = "f18517";
				colDataObj.type0 = 'POSITIVE';
				colDataObj.start0 = '';
				colDataObj.elapsed0 = '';
				colDataObj.perc1 = num1;
				colDataObj.color1 = "60cdcb";
				colDataObj.type1 = 'NEGATIVE';
				colDataObj.start1 = '';
				colDataObj.elapsed1 = '';
				colDataObj.perc2 = num2;
				colDataObj.color2 = "c7d61f";
				colDataObj.type2 = 'NEUTRAL';
				colDataObj.start2 = '';
				colDataObj.elapsed2 = '';
			
			break;
			
			case "industry": 
			
				dataObj.each(function() {
					if(this.nodeName=='Industry_Cable') num0 = parseInt($(this).text());
					if(this.nodeName=='Industry_Health') num1 = parseInt($(this).text());
					if(this.nodeName=='Industry_Ins_Fin') num2 = parseInt($(this).text());
					//if(this.nodeName=='Industry_Solutions') num3 = $(this).text();
					if(this.nodeName=='Industry_Manuf') num3 = parseInt($(this).text());
					if(this.nodeName=='Industry_Retail') num4 = parseInt($(this).text());
					if(this.nodeName=='Industry_Tele') num5 = parseInt($(this).text());
					
				});
				
				colDataObj.numCols = 6;
				colDataObj.title = "INDUSTRY";
				colDataObj.perc0 = num0;
				colDataObj.color0 = "f18517";
				colDataObj.type0 = 'CABLE';
				colDataObj.start0 = '';
				colDataObj.elapsed0 = '';
				colDataObj.perc1 = num1;
				colDataObj.color1 = "60cdcb";
				colDataObj.type1 = 'HEALTHCARE/FITNESS';
				colDataObj.start1 = '';
				colDataObj.elapsed1 = '';
				colDataObj.perc2 = num2;
				colDataObj.color2 = "c7d61f";
				colDataObj.type2 = 'INSURANCE/FINANCIAL';
				colDataObj.start2 = '';
				colDataObj.elapsed2 = '';
				/*colDataObj.perc3 = num3;
				colDataObj.color3 = "899639";
				colDataObj.type3 = 'SOLUTIONS';
				colDataObj.start3 = '';
				colDataObj.elapsed3 = '';*/
				colDataObj.perc3 = num3;
				colDataObj.color3 = "b46ed9";
				colDataObj.type3 = 'MANUFACTURING';
				colDataObj.start3 = '';
				colDataObj.elapsed3 = '';
				colDataObj.perc4 = num4;
				colDataObj.color4 = "484829";
				colDataObj.type4 = 'RETAIL';
				colDataObj.start4 = '';
				colDataObj.elapsed4 = '';
				colDataObj.perc5 = num5;
				colDataObj.color5 = "f0498c";
				colDataObj.type5 = 'TELECOMMUNICATIONS';
				colDataObj.start5 = '';
				colDataObj.elapsed5 = '';
			
			break;
			
		}
		
		return colDataObj;
		
	}
	
	var mapAnimated = false;
	var columnsCreated = false;
	
	function animateColumn(id,perc,color,left) {
		
		// color the column and animate it to it's perc height	
		
		var fullHeight = 200; // full height of column at 100%;
		var percHeight = parseInt(fullHeight * (perc/100));
		
		var column = ($('.col-wrap').get(id));
		var bar = ($('.column').get(id));
		
		$(column).css('display','inline');
		
		color = "#"+color;
		$(bar).css("background",color);
		
		var o = $(column).offset();
		
		left = (columnsCreated)? o.left:o.left + left; // only position the columns the first time
		
		$(column).offset({top:o.top, left:left});
		
		$(bar).css("top","200px");
		
		$(bar).animate({
		  top: fullHeight-percHeight + "px"
		}, 1200, function() {
		  // Animation complete.
		 if(!mapAnimated) { 
		 	mapAnimated = true;
			columnsCreated = true;
		 }
		});

	}
	
	var startModulate = setTimeout(modulateColumns,2000);
	function modulateColumns() {
		
		var tops = Array(); var pos = dif = ot = nt = 0;
		
		$('.column').each(function() {
			pos = $(this).position();
			tops.push(pos.top);
		});
		
		var modulate = setInterval(function(){ 
			
			// loop through each column and set it's bar += 1px within a fixed range
			var idx = 0;
			
			$('.column').each(function() {
				
				dif = Math.round(Math.random()*1);
				dif = (dif)? dif:-1;
				
				pos = $(this).position();
				
				ot = pos.top;
				dif = (ot+dif < tops[idx]-5)? dif*-1:dif; 
				dif = (ot+dif > tops[idx]+5)? dif*-1:dif;
				
				nt = ot+dif;
				nt = (nt<0)? 3:nt;
				
				$(this).css('top',nt+'px');
				
				idx++;
			
			});
		
		}, 100);
		
	}
	
	
	$(".nav-graph").click(function() {
		
		if(!$(this).hasClass("active")) {
			
			// clear the map and reset the flag
			clearInterval(play);
			
			clearMap();
			mapAnimated = false;
			
			// de-activate the active link
			$(".nav-graph").each(function() {
				if($(this).hasClass("active")) $(this).removeClass("active");
				this.src = this.src.replace("_over","_off")
			});
			
			
			// add the active class
			$(this).addClass('active');
			this.src = this.src.replace("_off","_over")
			
			// find the visible column labels
			var p1 = "";
			$(".by").each(function() {
				if($(this).is(":visible")) p1 = $(this);
			});
			
			// swap the vertical column labels
			var myIndex =  $('.nav-graph').index($(this));
			var p2 = $('.by').get(myIndex);
			
			// create columns by type, set in the img rel attribute
			createColumns($(this).attr("rel"))
			
			$(p1).fadeOut('fast',function() { $(p2).fadeIn('fast', function() {  } ) } );
			
			
		}
		
	});
	
	function clearMap(){
		
		// roll through squares and make them all grey
		var len = useBlocks.length;
		var obj, blockID, block;
		for(i=0; i<len; i++){
			
			obj = useBlocks[i];
			blockID = "#block-"+obj.ID;
			block = $(blockID);
			
			if( obj.classType=='box' ) $(block).css('background','#d3d5d6');
			
		}
		
	}
	
	
	// switch quick links every 5 seconds
	var switchQuickLink;
	function startQuickLinks() {
		
		switchQuickLink = setInterval(function(){ 
			
			var nextQL, nextCopy, copy, idx;
			
			// find visible quick link and remove the class
			$(".quick-link").each(function() {
				if($(this).hasClass("active")) {
					
					$(this).removeClass("active")
					idx = $(".quick-link").index( $(this) ) + 1;
					copy = $(".quick-link-copy").get(idx-1);
				}
			});
			
			idx = (idx==$(".quick-link").length)? 0:idx;
			
			nextQL = $(".quick-link").get(idx);
			$(nextQL).addClass("active");
			
			nextCopy = $(".quick-link-copy").get(idx);
			
			$(copy).fadeOut('fast',function() { $(nextCopy).fadeIn('fast') });
				
				
		}, 3000);
	
	}
	
	function stopQuickLinks() {
		clearInterval(switchQuickLink);
	}
	
	var startQL = setTimeout(startQuickLinks, 100);
	
	
	
// HOME PAGE QUICK LINKS

	$(".quick-link").hover(
		function() { stopQuickLinks() },
		function() { startQuickLinks() }
	);
	
	$(".quick-link-copy").hover(
		function() { stopQuickLinks() },
		function() { startQuickLinks() }
	);

	$(".quick-link").click(function() {
		
		if(!$(this).hasClass("active")) {
			
			// de-activate the active link
			$(".quick-link").each(function() {
			
				if($(this).hasClass("active")) $(this).removeClass("active");	
				
			});
			
			// find the visible paragraph
			var p1 = "";
			$(".quick-link-copy").each(function() {
				
				if($(this).is(":visible")) p1 = $(this);
				
			});
			
			var myIndex =  $('.quick-link').index($(this));
			var p2 = $('.quick-link-copy').get(myIndex);
			
			$(p1).fadeOut('fast',function() { $(p2).fadeIn('fast') } );
			
			$(this).addClass("active");
			
		}
		
		
	});





// utility functions
	
	function inArray(needle, haypile) {
		var length = haypile.length;
		for(var i = 0; i < length; i++) {
			if(haypile[i] == needle) return true;
		}
		return false;
	}
	
	function Shuffle(o) {
		for(var j, x, i = o.length; i; j = parseInt(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
		
        return o;
	};
	
	function ArraySubtract(ara1,ara2) {
	  var aRes = new Array() ;
	  for(var i=0;i<ara1.length;i++) {
		if( !inArray(ara1[i],ara2) ) {
		  aRes.push(ara1[i]) ;
		}
	  }
	  return aRes ;
	
	} 


		
});
