var DAY_START = 12;
var DAY_END = 23;

var initDate = new Date("August 1, 2010 01:00:00");
var initPartCount = 1000000;
var minUpdateTime = 5;
var maxUpdateTime = 40;

var yearlyIncrMultiplier = 1.6;

var businessSpeed = 2;

var coverageBusiness = ((24 - (24 - DAY_END) - DAY_START) / 24);
var coverageMorning = ((24 - DAY_START - (24 - DAY_END)) / 24);
var coverageNight = ((24 - DAY_END) / 24);

var coverageBusiness2 = coverageBusiness * businessSpeed;
var coverageMorning2 = (coverageMorning / (coverageMorning + coverageNight)) * (1 - coverageBusiness2);
var coverageNight2 = (coverageNight / (coverageMorning + coverageNight)) * (1 - coverageBusiness2);

var businessHoursMultiplier = 1 / (1 - coverageBusiness2);
var offHoursMorningMultiplier = 1 / (1 - coverageMorning2);
var offHoursNightMultiplier = 1 / (1 - coverageNight2);

$(document).ready(function () {
    phoneNumber();
    partsSold();
    //bindGACrossLinking();
    bindGeoIPFlag();
    loadPriceComparisonTable();
});

function bindGeoIPFlag()
{
	var country = geoip_country_code();
	if( country == "CA" ) 
	{
		$("#truck").after('<img id="province" src="images/provinces/' + geoip_region() + '.gif" alt="' + geoip_region() + '" />');
	}
	else if( country == "US" )
	{
		$("#truck").after('<img id="province" src="images/provinces/' + country + '.gif" alt="' + country + '" />'); 
	}
}

/* DEPRECATED BY LATEST SOPHIO UPDATE */
function bindGACrossLinking()
{
	if ($("form[name=frmUpdateCart]").length > 0)
	{		
		var checkoutButton = document.getElementById('btnGotoCheckout').attributes;
		var onclickUrl = "";
		for (var i in checkoutButton) {
			if (checkoutButton[i].name == "onclick")
			{
				onclickUrl = checkoutButton[i].firstChild.data.replace("javascript:navigateWindowTop('", "").replace("');", "");
			}
		}

		if (onclickUrl != "")
		{
			$("#btnGotoCheckout").attr("onclick", null);

			$("#btnGotoCheckout").click(function () {
			    _gaq.push(['_link', onclickUrl]);
			    return false;
			});
		}		

	}
}

function phoneNumber() {
    var srcParam = gup("src");
	var telephoneNumber = "1-877-999-0080";
	
	if (srcParam != "" && $.cookie("visitorsrc") == null)
	{
		$.cookie("visitorsrc", srcParam, { expires: 30 });
	}
	
    if ($.cookie("visitorsrc") == "aw") {
		telephoneNumber = "1-877-999-1880";
    } else if ($.cookie("visitorsrc") == "awc") {
        telephoneNumber = "1-877-999-1980";
    } else if ($.cookie("visitorsrc") == "bings") {
        telephoneNumber = "1-877-999-0737";
	} else if ($.cookie("visitorsrc") == "bingc") {
        telephoneNumber = "1-877-999-0951";        
    } else if ($.cookie("visitorsrc") == "411") {
        telephoneNumber = "1-877-999-1680";
    } else if ($.cookie("visitorsrc") == "recommend") {
        telephoneNumber = "1-877-999-7480 ";
    } else if ($.cookie("visitorsrc") == "infl") {
       telephoneNumber = "1-877-999-7380";
    } else if ($.cookie("visitorsrc") == "jnq") {
		telephoneNumber = "1-877-999-7580";
    } else if ($.cookie("visitorsrc") == "jno") {
		telephoneNumber = "1-877-999-1580";
    } else if ($.cookie("visitorsrc") == "mob") {
		telephoneNumber = "1-877-999-1280";
    } else if ($.cookie("visitorsrc") == "img") {
		telephoneNumber = "1-877-999-5380";
    } else if ($.cookie("visitorsrc") == "pj") {
		telephoneNumber = "1-877-999-8380";
	} else if ($.cookie("visitorsrc") == "pjtuq") {
		telephoneNumber = "1-877-544-5486";
	} else if ($.cookie("visitorsrc") == "pjcnw") {
		telephoneNumber = "1-877-544-5317";
    } else if ($.cookie("visitorsrc") == "rm-toy") {
        telephoneNumber = "1-877-999-7680";
    } else if ($.cookie("visitorsrc") == "pjchg") {
        telephoneNumber = "1-877-585-1441";
    } else if ($.cookie("visitorsrc") == "seo") {
        telephoneNumber = "1-877-999-1780";
	} else {
        telephoneNumber = "1-877-999-0080";
    }
	
	$("#tel").html(telephoneNumber);

	if ($("#tel2").length != 0) {
		$("#tel2").html(telephoneNumber);
	}
}

function partsSold() {
    var today = new Date();

    var hour = today.getHours();
    var day = today.getDay();
    var minute = today.getMinutes();
    var second = today.getSeconds();
    hour = hour + (minute / 60) + (second / 3600);

    var secondsSinceInitDate = Math.floor((today - initDate) / 1000);
    var hoursSinceInitDate = secondsSinceInitDate / 60 / 60;
    var daysSinceInitDate = hoursSinceInitDate / 24;
    var yearsSinceInitDate = daysSinceInitDate / 365;
    var timerMultiplier = 1;

    // calculate the number of parts sold in total since today
    var totalSales = Math.pow(yearlyIncrMultiplier, yearsSinceInitDate) * initPartCount; ;
    var growthMultiplier = 1;

    // get the sales since yesterday 
    var hoursSinceYesterday = hoursSinceInitDate - hour;
    var salesSinceYesterday = Math.pow(yearlyIncrMultiplier, hoursSinceYesterday / 24 / 365) * initPartCount;
    var salesForTomorrow = Math.pow(yearlyIncrMultiplier, (hoursSinceYesterday + 24) / 24 / 365) * initPartCount; ;
    var salesForToday = salesForTomorrow - salesSinceYesterday;

    var totalSalesVariable = 0;
	
	// set formatting for english or french
	var language = window.location.toString().indexOf("catalogue") > 0 ? "french" : "english";

    if (hour < DAY_START && day <= 5) // week-day morning
    {
        var salesMorning = salesForToday * (hour / DAY_START) * coverageMorning2
        totalSalesVariable = salesSinceYesterday + salesMorning;
    }
    else if (hour >= DAY_START && hour < DAY_END && day <= 5) // week-day business
    {
        var salesMorning = salesForToday * coverageMorning2;
        var salesDay = salesForToday * ((hour - DAY_START) / (DAY_END - DAY_START)) * coverageBusiness2;
        totalSalesVariable = salesSinceYesterday + salesMorning + salesDay;
    }
    else if (hour >= DAY_END && day <= 5) // week-day night
    {
        var salesMorning = salesForToday * coverageMorning2;
        var salesDay = salesForToday * coverageBusiness2;
        var salesNight = salesForToday * ((hour - DAY_END) / (24 - DAY_END)) * coverageNight2;
        totalSalesVariable = salesSinceYesterday + salesMorning + salesDay + salesNight;
    }
    else {
        totalSalesVariable = salesSinceYesterday + (salesForToday * (hour / 24));
    }

	totalSalesVariable = localizeNumber(Math.floor(totalSalesVariable),language);
	
	$("#partsSold").html(totalSalesVariable);

    var sleepTime = Math.floor((maxUpdateTime - minUpdateTime - 1) * Math.random()) + minUpdateTime;

    setTimeout("partsSold()", sleepTime * 1000 * timerMultiplier);
}

// Adds commas to a number eg. 1000 -> 1,000
function localizeNumber(nStr,lang)
{
	nStr += '';
	x = nStr.split('.');
	x1 = x[0];
	x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		switch(lang)
		{
			case "english":
				x1 = x1.replace(rgx, '$1' + ',' + '$2');
				break;
			case "french":
				x1 = x1.replace(rgx, '$1' + ' ' + '$2');
				break;
		}
	}
	return x1 + x2;
}

function loadPriceComparisonTable()
{
	$.ajax({
	type: "GET",
	url: "product_compare.xml",
	dataType: "xml",
	success: function(xml) {
		var cardesc = $(xml).find('cardesc').text();
		var partdesc = $(xml).find('partdesc').text();
		var note = $(xml).find('note').text();
		$('#cardesc').html(cardesc);
		$('#partdesc').html(partdesc);
		$(xml).find('store').each(function(){
			var name = $(this).find('name').text();
			var brand = $(this).find('brand').text();
			var price = $(this).find('price').text();
			$('<tr></tr>').html(
				'<td>'+name+'</td>' + '<td>'+brand+'</td>' + '<td>'+price+'</td>'
			).appendTo('#tbl_price_comp');
			
			$('<tr></tr>').html(
				'<td colspan="3" class="empty"></td>'
			).appendTo('#tbl_price_comp');
		});
		$('<tr></tr>').html(
			'<td colspan="3">'+note+'</td>'
		).appendTo('#tbl_price_comp');
	}
	});
}

function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}
