/**!
 * @preserve Shadow animation jQuery-plugin 1.7
 * http://www.bitstorm.org/jquery/shadow-animation/
 * Copyright 2011 Edwin Martin <edwin@bitstorm.org>
 * Contributors: Mark Carver, Xavier Lepretre
 * Released under the MIT and GPL licenses.
 */

jQuery(function($, undefined) {
	/**
	 * Check whether the browser supports RGBA color mode.
	 *
	 * Author Mehdi Kabab <http://pioupioum.fr>
	 * @return {boolean} True if the browser support RGBA. False otherwise.
	 */
	function isRGBACapable() {
		var $script = $('script:first'),
				color = $script.css('color'),
				result = false;
		if (/^rgba/.test(color)) {
			result = true;
		} else {
			try {
				result = ( color != $script.css('color', 'rgba(0, 0, 0, 0.5)').css('color') );
				$script.css('color', color);
			} catch (e) {
			}
		}

		return result;
	}

	$.extend(true, $, {
		support: {
			'rgba': isRGBACapable()
		}
	});

	/*************************************/

	// First define which property to use
	var boxShadowProperty;
	$.each(['boxShadow', 'MozBoxShadow', 'WebkitBoxShadow'], function(i, property) {
		var val = $('html').css(property);
		if (typeof val == 'string' && val != '') {
			boxShadowProperty = property;
			return false;
		}
	});

	// Extend the animate-function
	if (boxShadowProperty) {
		$.fx.step['boxShadow'] = function(fx) {
			if (!fx.init) {
				fx.begin = parseShadow($(fx.elem).get(0).style[boxShadowProperty] || $(fx.elem).css(boxShadowProperty));
				fx.end = $.extend({}, fx.begin, parseShadow(fx.end));
				if (fx.begin.color == undefined) {
					fx.begin.color = fx.end.color || [0, 0, 0];
				}
				fx.init = true;
			}
			fx.elem.style[boxShadowProperty] = calculateShadow(fx.begin, fx.end, fx.pos);
		}
	}

	// Calculate an in-between shadow.
	function calculateShadow(begin, end, pos) {
		var parts = [];
		if (begin.inset) {
			parts.push('inset');
		}
		if (typeof end.left != 'undefined') {
			parts.push(parseInt(begin.left + pos * (end.left - begin.left), 10) + 'px '
					+ parseInt(begin.top + pos * (end.top - begin.top), 10) + 'px');
		}
		if (typeof end.blur != 'undefined') {
			parts.push(parseInt(begin.blur + pos * (end.blur - begin.blur), 10) + 'px');
		}
		if (typeof end.spread != 'undefined') {
			parts.push(parseInt(begin.spread + pos * (end.spread - begin.spread), 10) + 'px');
		}
		if (typeof end.color != 'undefined') {
			var color = 'rgb' + ($.support['rgba'] ? 'a' : '') + '('
					+ parseInt((begin.color[0] + pos * (end.color[0] - begin.color[0])), 10) + ','
					+ parseInt((begin.color[1] + pos * (end.color[1] - begin.color[1])), 10) + ','
					+ parseInt((begin.color[2] + pos * (end.color[2] - begin.color[2])), 10);
			if ($.support['rgba']) {
				color += ',' + parseFloat(begin.color[3] + pos * (end.color[3] - begin.color[3]));
			}
			color += ')';
			parts.push(color);
		}
		return parts.join(' ');
	}

	// Parse the shadow value and extract the values.
	function parseShadow(shadow) {
		var match, color, parsedShadow = {};

		// Parse an CSS-syntax color. Outputs an array [r, g, b]
		// Match #aabbcc
		if (match = /#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})/.exec(shadow)) {
			color = [parseInt(match[1], 16), parseInt(match[2], 16), parseInt(match[3], 16), 1];

			// Match #abc
		} else if (match = /#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])/.exec(shadow)) {
			color = [parseInt(match[1], 16) * 17, parseInt(match[2], 16) * 17, parseInt(match[3], 16) * 17, 1];

			// Match rgb(n, n, n)
		} else if (match = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(shadow)) {
			color = [parseInt(match[1], 10), parseInt(match[2], 10), parseInt(match[3], 10), 1];

			// Match rgba(n, n, n, n)
		} else if (match = /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9\.]*)\s*\)/.exec(shadow)) {
			color = [parseInt(match[1], 10), parseInt(match[2], 10), parseInt(match[3], 10),parseFloat(match[4])];

			// No browser returns rgb(n%, n%, n%), so little reason to support this format.
        }

		// Parse offset, blur and radius
		if (match = /(-?[0-9]+)(?:px)?\s+(-?[0-9]+)(?:px)?(?:\s+(-?[0-9]+)(?:px)?)?(?:\s+(-?[0-9]+)(?:px)?)?/.exec(shadow)) {
			parsedShadow = {left: parseInt(match[1], 10), top: parseInt(match[2], 10), blur: match[3] ? parseInt(match[3], 10) : 0, spread: match[4] ? parseInt(match[4], 10) : 0};
		} else {
			parsedShadow = {left: 0, top: 0, blur: 0, spread: 0};
		}

		// Inset or not
		parsedShadow.inset = /inset/.test(shadow);

		parsedShadow.color = color;

		return parsedShadow;
	}
});

// Set up the calls once the DOM has been built
$(document).ready(function(){

	$("[title]").qtip({
			prerender: false,
			position: {	type:'fixed', at: 'top left', my: 'top left', adjust:{x:25,y:-18}, target:$('#sidebar_info')},
			style: { width: '16%', padding: '10px', background: 'transparent', color: 'white', textAlign: 'center', border: 'none', name: 'dark'},
			show: {delay:0,effect: {type:'fade',length:0,delay:0}},
			hide: {delay:0,effect: {type:'fade',length:0,delay:0},fixed:true},
			events: {
				focus: function(event, api) {$('#sidebar_info').delay(200).css({opacity:'0'});},
				blur: function(event, api) {$('#sidebar_info').css({opacity:'1'});}
			}
		});

	// Set the tooltip on the title attributes
	
	function standardTip() {
		$("[title]").qtip({
			prerender: false,
			position: {	type:'fixed', at: 'top left', my: 'top left', adjust:{x:25,y:-18}, target:$('#sidebar_info')},
			style: { width: '16%', padding: '10px', background: 'transparent', color: 'white', textAlign: 'center', border: 'none', name: 'dark'},
			show: {delay:0,effect: {type:'fade',length:0,delay:0}},
			hide: {delay:0,effect: {type:'fade',length:0,delay:0},fixed:true},
			events: {
				focus: function(event, api) {$('#sidebar_info').delay(200).css({opacity:'0'});},
				blur: function(event, api) {$('#sidebar_info').css({opacity:'1'});}
			}
		});
	};
	
	$('#sidebar h2').live('click', function (event) { 
		var offset = $('#sidebar .avatar').offset();
		var height = $('#sidebar .avatar').height();
		var position = offset.top+height-50;
		$('body').animate({opacity:'.5'},1500).delay(1500).animate({opacity:'1'},1500); 
	});
	
	$('.building').hide(); 
	$('#1').show();
	$( ".slider" ).slider({max:100,min:0, value:50});
	
	// $(".level").live('mouseover', function (event) { 
	//var era = parseInt($(this).attr('era')); var era1 = era - 1; var era2 = era - 2; var era3 = era - 3;
	//$(".era"+era+", .era"+era1+", .era"+era2+", .era"+era3).addClass('hover1');});	
	//$(".level").live('mouseleave', function (event) {$('.hover1').removeClass('hover1');$('.hover2').removeClass('hover2');$('.hover3').removeClass('hover3');});

	$("img.tree").live('mouseover', function (event) {
		$(this).addClass('hover1');//$(this).parent().addClass('hover2');
		var parent = $(this).attr('parent'); $('#'+parent).addClass('hover1');// ;
	 	if(parent) { var parent = $('#'+parent).attr('parent'); $('#'+parent).addClass('hover1'); };
	 	if(parent) { var parent = $('#'+parent).attr('parent'); $('#'+parent).addClass('hover1'); };
	 	if(parent) { var parent = $('#'+parent).attr('parent'); $('#'+parent).addClass('hover1'); };
	 	if(parent) { var parent = $('#'+parent).attr('parent'); $('#'+parent).addClass('hover1'); };
	 	if(parent) { var parent = $('#'+parent).attr('parent'); $('#'+parent).addClass('hover1'); };
	 	if(parent) { var parent = $('#'+parent).attr('parent'); $('#'+parent).addClass('hover1'); };
	 	if(parent) { var parent = $('#'+parent).attr('parent'); $('#'+parent).addClass('hover1'); };
	 	if(parent) { var parent = $('#'+parent).attr('parent'); $('#'+parent).addClass('hover1'); };
	 	if(parent) { var parent = $('#'+parent).attr('parent'); $('#'+parent).addClass('hover1'); };
	 	if(parent) { var parent = $('#'+parent).attr('parent'); $('#'+parent).addClass('hover1'); };
	 	if(parent) { var parent = $('#'+parent).attr('parent'); $('#'+parent).addClass('hover1'); };
	 	if(parent) { var parent = $('#'+parent).attr('parent'); $('#'+parent).addClass('hover1'); };
	});
	
	$("img.tree").live('mouseleave', function (event) {
		$('img.tree').removeClass('hover1');
		$('img.tree').removeClass('hover2');
		$('img.tree').removeClass('hover3');
	});
	
	setInterval(countdown, 1000);
	
	var locale = 21;
	
	$("#moveRight").live('click', function (event) { 
		$('.level.era'+locale).removeClass('hover1');
		$('.eraLabel').removeClass('hover1');
		++locale;
		$('.tree_wrapper').animate({ marginLeft: '-=500', }, 3000, function ( event ) { $('.era'+locale).addClass('hover1');});
		$('.eraLabel').animate({ marginLeft: '-=500', }, 3000 );
	});

	$("#moveLeft").live('click', function (event) { 
		$('.level.era'+locale).removeClass('hover1');
		$('.eraLabel').removeClass('hover1');
		--locale;
		$('.tree_wrapper').animate({ marginLeft: '+=500', }, 3000, function ( event ) {  $('.era'+locale).addClass('hover1');});
		$('.eraLabel').animate({ marginLeft: '+=500', }, 3000 );
	});

	$("#moveDown").live('click', function (event) { 
		$('.level.era'+locale).removeClass('hover1');
		locale += 10 ;
		$('.tree_wrapper').animate({ top: '-=502', }, 3000, function ( event ) {$('.era'+locale).addClass('hover1');});
		$('.bldgWrapper').animate({ top: '-=500', }, 3000, function ( event ) {  $('.era'+(locale-10)).removeClass('hover1');  $('.era'+locale).addClass('hover1');});
	});
	
	$("#moveUp").live('click', function (event) { 
		$('.level.era'+locale).removeClass('hover1');
		locale -= 10 ;
		$('.tree_wrapper').animate({ top: '+=502', }, 3000, function ( event ) { $('.era'+locale).addClass('hover1');});
		$('.bldgWrapper').animate({ top: '+=500', }, 3000, function ( event ) {  $('.era'+(locale+10)).removeClass('hover1'); $('.era'+locale).addClass('hover1');});
	});

	
	$('.era21').addClass('hover1');
	$('.qtip_placeholder').addClass('hover1');

	
});
		
$(".building_icons").live('click', function (event) {
	var building_id = $(this).attr('id');
	var building_id = building_id.replace('building_',''); 
	$('.building').hide(0); 
	$('#'+building_id).show(0);
	var current = building_id;
}); 
		
// Build the countdown in the sidebar
var countdown = function(){
	var raw_minutes = $(".minutes").text();
	var raw_seconds = $(".seconds").text();
	var minutes = parseInt(raw_minutes);
	var seconds = parseInt(raw_seconds);
	seconds--;
	if (seconds < 0) {
		var	seconds = 59;
		if (minutes < 1) {
			var minutes = 15;
		}
		minutes--;
		$(".minutes").html(minutes);
		$(".leading_zero").html("");
	}
	if (seconds < 10) {
		$(".leading_zero").html("0");
		$(".seconds").html(seconds);
	} else {
		$(".seconds").html(seconds);
	}
};

$(".missions a").live('click', function (event) {
	if(event.preventDefault){ event.preventDefault()}else{event.stop()};
		event.stopPropagation(); 
		event.returnValue = false;
	if($(".missions_box").height() > 0) {		
		$(".missions_box").animate({height: '0px'}, 800);
	} else {
		$(".missions_box").animate({height: '300px'}, 800);
	}
}); 


	

// Create a Click Handler to Detect Clicks on Ajaxified Links
$(".ajax").live('click', function (event) {
	pageload($(this).attr("href"));
}); 

function number_format (number, decimals, dec_point, thousands_sep) {
    number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}

// Create an Event Listener to activate the back and forward buttons
var runCount = 0; 
window.addEventListener("popstate", function(e) {
 	if(runCount > 0) {
    	pageload(location.pathname,true);
	}
	runCount++;
});

// The Page Reload Functions
function pageload(href,popCheck) {
	var pathname = window.location.pathname;
	var pathcheck = pathname.indexOf("about/") != -1; 
	if ($('#content_main').length && pathcheck != true) {	
		if(event.preventDefault){ event.preventDefault()}else{event.stop()};
		event.stopPropagation(); 
		event.returnValue = false;
		if ($('.drawer_active_2').length ) {	
			$('.drawer').toggleClass("drawer_active_2",1000); 
			$('.navbar').toggleClass("drawer_active",1000);
		}
		var comments = href.indexOf("#") != -1; 
		var testhref = href.replace('http://www.dagaloo.com','');
		
		if(comments != true && testhref == pathname || popCheck || testhref != pathname) { 
			var scrollPos = window.pageYOffset;
			if (scrollPos < 1000) {	var scrollduration = scrollPos * 1;
			} else if (scrollPos < 2000) {	var scrollduration = scrollPos / 2;	
			} else if (scrollPos < 3000) {	var scrollduration = scrollPos / 3;	
			} else { var scrollduration = scrollPos / 4; }
			var delayduration = scrollduration - 800;
			

				// $('body').animate({opacity:'.3'},1500, function() { 
				
				
				if($(".missions_box").height() > 0) { $(".missions_box").animate({height: '0px'}, 0);} 
				
				$.get(href + "/?loadSkipper=skip", function(LoadedData) {
			
			
			
				//	$('html, body').animate({scrollTop: '0px'}, 0, function() { 
					
				//	var scrollCheck = 0;
				//	scrollCheck = setInterval(function() {
			
				//		if(window.pageYOffset < 500) {
			
							$("#content_main").fadeOut('fast', function() {
							 
								$("#content_main").replaceWith(LoadedData).fadeIn('fast');
								$('.building').hide(); 
							   	$('#1').show();
								// $('body').animate({opacity:'1'},1500);
								
								// Update the URL in the address bar 
					
								var title = $("#content_main h2").text();
								var title = title;

								if(!popCheck && testhref != pathname) {
									history.pushState(null, title, href); 
								}
								$("title").html(title);
								
								$("[title]").qtip({
									prerender: false,
									position: {
										type:'fixed', 
										at: 'top left',
										my: 'top left',  
										adjust:{x:25,y:-18},
										target:$('#sidebar_info')
										},
									style: { 
										width: '16%', 
										padding: '10px', 
										background: 'transparent', 
										color: 'white', 
										textAlign: 'center', 
										border: 'none', 
										name: 'dark' 
										},
									show: {delay:0,effect: {type:'fade',length:0,delay:0}
										},
									hide: {delay:0,effect: {type:'fade',length:0,delay:0},fixed:true
										},
									events: {
										focus: function(event, api) {
											$('#sidebar_info').delay(200).css({opacity:'0'});
										},
										blur: function(event, api) {
											$('#sidebar_info').css({opacity:'1'});
										}
									}
								});
								// Track the Pageview on Google Analytics
								_gaq.push(['_trackPageview', href]);
				
								});
							});
					//		clearInterval (scrollCheck);
					//	});
						
				//	}, 100);
		//		});
		} 
	};
}; 		



$(".training .enqueue").live('click', function (event) {
	if(event.preventDefault){ event.preventDefault()}else{event.stop()};
	event.stopPropagation(); 
	event.returnValue = false;
	
	var src = $(this).find('img').attr("src"); 
	var id = $(this).attr("id"); 
	var newid = id.split("_");
	var type = newid[0]; 
	var type_id = newid[1];
	var usrID = newid[2];
	var name = src.split("/");
	var name = name[5].replace(".jpg","");
	var name = name.replace(/\w+/g, function(w){return w[0].toUpperCase() + w.slice(1).toLowerCase();});
	var elements = $(this).parent().parent().find('.queue img.placeholder:first');
	if(elements.width() > 0) {
		var tally = $(this).parent().parent().find('.enqueue:last .countdown').html();
		// var tally = tally.replace(",","");
		var tally = parseInt(tally);
		if(isNaN(tally)) { var tally = 0; }
		var tallyplus = parseInt(newid[3]);
		var tally = tally + tallyplus;
		var tally = number_format(tally);
		elements.replaceWith('<img class="loading_placeholder" style="display:none;" src="/interface/default/images/loading.gif">');
		$(".loading_placeholder").fadeIn(1000); 
		if(type=='tech' || type=='bldg') { $(this).fadeOut('slow'); }
		$.post('/forms/purchase.php', { type: type, id: type_id, user_id: usrID }, function(data) {
			// $(".loading_placeholder").remove(); 
			// var elements = $(this).parent().parent().find('.queue img.loading_placeholder');
			$('.loading_placeholder').replaceWith('<div title="<img style=\'float:left;width:64px;height:64px;\' src=\''+src+'\' />This '+name+' will be completed '+tally+' turns from now.<br /> Click to cancel production." class="enqueue" id="'+type+'_'+data+'_'+usrID+'"><img  class="building_training" style="display:none;" src="'+src+'"><div class="countdown">'+tally+'</div></div>'); 
			$(".building_training:hidden").fadeIn(2000); 
			$('.qtip').hide();
			$("[title]").qtip({
			prerender: false,
			position: {	type:'fixed', at: 'top left', my: 'top left', adjust:{x:25,y:-18}, target:$('#sidebar_info')},
			style: { width: '16%', padding: '10px', background: 'transparent', color: 'white', textAlign: 'center', border: 'none', name: 'dark'},
			show: {delay:0,effect: {type:'fade',length:0,delay:0}},
			hide: {delay:0,effect: {type:'fade',length:0,delay:0},fixed:true},
			events: {
				focus: function(event, api) {$('#sidebar_info').delay(200).css({opacity:'0'});},
				blur: function(event, api) {$('#sidebar_info').css({opacity:'1'});}
			}
		});
		});
	};
});
  
$(".queue .enqueue").live('click', function (event) {
	$(this).fadeOut(1000); 
	if(event.preventDefault){ event.preventDefault()}else{event.stop()};
	event.stopPropagation(); 
	event.returnValue = false;
	
	var id = $(this).attr("id"); 
	var newid = id.split("_");
	var type = newid[0]; 
	var type_id = newid[1];
	var usrID = newid[2];
	var building_id = $(this).parents('.building').attr('id');
	$('#'+building_id+' .employees').append('<div class="loading"></div>');
	$.post('/forms/purchase.php', { type: type, id: type_id, user_id: usrID, remove: true}, function(data) {
		$('#'+building_id).load('/buildings/?loadSkipper=skip #'+building_id, function() {
			$('.qtip').hide();
			$("[title]").qtip({
			prerender: false,
			position: {	type:'fixed', at: 'top left', my: 'top left', adjust:{x:25,y:-18}, target:$('#sidebar_info')},
			style: { width: '16%', padding: '10px', background: 'transparent', color: 'white', textAlign: 'center', border: 'none', name: 'dark'},
			show: {delay:0,effect: {type:'fade',length:0,delay:0}},
			hide: {delay:0,effect: {type:'fade',length:0,delay:0},fixed:true},
			events: {
				focus: function(event, api) {$('#sidebar_info').delay(200).css({opacity:'0'});},
				blur: function(event, api) {$('#sidebar_info').css({opacity:'1'});}
			}
		});	
		});
	});
});  

$("div.add").live('click', function (event) {
	if(event.preventDefault){ event.preventDefault()}else{event.stop()};
	event.stopPropagation(); 
	event.returnValue = false;
	var building_id = $(this).parent().parent().parent().attr('id');
	$(this).parent().append('<div class="loading"></div>');
	$.post('/forms/employees.php', { building: building_id, action:'hire'}, function(data) {
		var unemployed = $('.unemployed').html();
		var unemployed = parseInt(unemployed);
		var data = parseInt(data);
		var unemployed = unemployed - data;
		$('#'+building_id).load('/buildings/?loadSkipper=skip #'+building_id, function() {
		var unemployed = $('#'+building_id+' .unemployed').html();
		var unemployedtitle = $('#'+building_id+' .unemployed').attr('title');
		$('.unemployed').html(unemployed);
		$('.unemployed').attr('title',unemployedtitle);
			$('.qtip').hide();
			$("[title]").qtip({
			prerender: false,
			position: {	type:'fixed', at: 'top left', my: 'top left', adjust:{x:25,y:-18}, target:$('#sidebar_info')},
			style: { width: '16%', padding: '10px', background: 'transparent', color: 'white', textAlign: 'center', border: 'none', name: 'dark'},
			show: {delay:0,effect: {type:'fade',length:0,delay:0}},
			hide: {delay:0,effect: {type:'fade',length:0,delay:0},fixed:true},
			events: {
				focus: function(event, api) {$('#sidebar_info').delay(200).css({opacity:'0'});},
				blur: function(event, api) {$('#sidebar_info').css({opacity:'1'});}
			}
		});
		});
	});
});  

$("div.sub").live('click', function (event) {
	if(event.preventDefault){ event.preventDefault()}else{event.stop()};
	event.stopPropagation(); 
	event.returnValue = false;
	var building_id = $(this).parent().parent().parent().attr('id');
	$(this).parent().append('<div class="loading"></div>');
	$.post('/forms/employees.php', { building: building_id, action:'fire'}, function(data) {
		$('#'+building_id).load('/buildings/?loadSkipper=skip #'+building_id, function() {
			var unemployed = $('#'+building_id+' .unemployed').html();
			var unemployedtitle = $('#'+building_id+' .unemployed').attr('title');
			$('.unemployed').html(unemployed);
			$('.unemployed').attr('title',unemployedtitle);
			$('.qtip').hide();
			$("[title]").qtip({
			prerender: false,
			position: {	type:'fixed', at: 'top left', my: 'top left', adjust:{x:25,y:-18}, target:$('#sidebar_info')},
			style: { width: '16%', padding: '10px', background: 'transparent', color: 'white', textAlign: 'center', border: 'none', name: 'dark'},
			show: {delay:0,effect: {type:'fade',length:0,delay:0}},
			hide: {delay:0,effect: {type:'fade',length:0,delay:0},fixed:true},
			events: {
				focus: function(event, api) {$('#sidebar_info').delay(200).css({opacity:'0'});},
				blur: function(event, api) {$('#sidebar_info').css({opacity:'1'});}
			}
		}); 
		});
	});
});  

$(".expand").live('click', function (event) {
	var name = $(this).parents('.broad').attr('id');
	$("tr."+name).fadeToggle('slow');
});
