// Returns a fully qualified DR Global Commerce URL
function getLink(product, qty, program, offer, currency) {
	var pid = "55551800";
	switch (product) {
		case "rb" : 
			pid = "55551800";
			break;
		case "rb-site" : 
			pid = "55551800";
			break;
		case "rb-site-purchase" : 
			pid = "55551800";
			break;
		case "downloads-rb" : 
			pid = "55551800";
			break;
		case "upgrades-rb" : 
			pid = "55551800";
			break;
			
		case "sp" :
			pid = "55551900";
			break;
		case "offer-sp-pp" :
			pid = "55551900";
			break;
		case "sp-site" :
			pid = "55551900";
			break;
		case "sp-site-purchase" :
			pid = "55551900";
			break;
		case "downloads-sp" :
			pid = "55551900";
			break;
		case "upgrades-sp" :
			pid = "55551900";
			break;
			
		case "se" :
			pid = "60548600";
			break;
		case "se-site" :
			pid = "60548600";
			break;
		case "se-site-purchase" :
			pid = "60548600";
			break;
		case "downloads-se" :
			pid = "60548600";
			break;
		case "upgrades-se" :
			pid = "60548600";
			break;
			
		case "ps" :
			pid = "63627900";
			break;
		case "ps-support" :
			pid = "63627900";
			break;
		case "ps-site" :
			pid = "63627900";
			break;
		case "downloads-ps" :
			pid = "63627900";
			break;
			
		case "store-offer" :
			pid = "63627900";
			break;
			
		case "offer-ps-pp" :
			pid = "63627900";
			break;
			// currently rb
		case "downloads-special" :  
			pid = "55551800";
			break;
	
			case "ds" :  
			pid = "106516700";
			break;
			
	}
	return "http://store.digitalriver.com/store/uniblue/AddItemToRequisition/productID."+pid+"/quantity."+qty+"/pgm."+program+"/OfferID."+offer+"/Currency."+currency;
}

// Returns the current language selection from browser's user agent object
function getLang() {
	var languageinfo;
	
	languageinfo = navigator.userLanguage;
	if (languageinfo==null) {languageinfo=navigator.language;		}
	if (languageinfo==null) {languageinfo=navigator.browserLanguage;}
	if (languageinfo==null) {languageinfo=navigator.systemLanguage;	}
	if (languageinfo==null) {languageinfo="en-us";					}	
	
	return languageinfo.toLowerCase();
}

function getOriginalPS(currency) {
	switch (currency) {
		case "USD" : return 119.90;
		case "CAD" : return 119.90;
		case "AUD" : return 119.90;
		case "GBP" : return 79.90;
		case "EUR" : return 99.90;
	}
}
function getUpgrades(currency) {
	switch (currency) {
		case "USD" : return 19.95;
		case "CAD" : return 19.95;
		case "AUD" : return 19.95;
		case "GBP" : return 13.29;
		case "EUR" : return 16.62;
	}
}
function getUpgradesPP(currency) {
	switch (currency) {
		case "USD" : return 39.95;
		case "CAD" : return 39.95;
		case "AUD" : return 39.95;
		case "GBP" : return 26.62;
		case "EUR" : return 33.29;
	}
}
// Returns the original (strikethrough) pricing of a product
function getOriginal(product, currency) {
	switch (product) {
		case "ps" :	
			return getOriginalPS(currency);
			break;
		case "ps-support" :	
			return getOriginalPS(currency);
			break;
		case "offer-ps-pp" :	
			return getOriginalPS(currency);
			break;
			
		case "ps-site" :
			return getOriginalPS(currency);
			break;
		
		case "downloads-ps" :
			return getOriginalPS(currency);
			break;
			
		case "upgrades-rb" :
			return getUpgrades(currency);
			break;
		case "upgrades-sp" :
			return getUpgrades(currency);
			break;
		case "upgrades-se" :
			return getUpgrades(currency);
			break;
			
		default :
			switch (currency) {
				case "USD" : return 39.95;
				case "CAD" : return 39.95;
				case "AUD" : return 39.95;
				case "GBP" : return 26.62;
				case "EUR" : return 33.29;
			}
			break;
	}
	return 39.95;
}

function getDiscountedPS(currency) {
	switch (currency) {
		case "USD" : return 59.95;
		case "CAD" : return 59.95;
		case "AUD" : return 59.95;
		case "GBP" : return 39.95;
		case "EUR" : return 49.95;
	}
}
function getDiscountedOffer(currency) {
	switch (currency) {
		case "USD" : return 169.85;
		case "CAD" : return 169.85;
		case "AUD" : return 169.85;
		case "GBP" : return 109.85;
		case "EUR" : return 139.85;
	}
}
function getDiscountedOrig(currency) {
	switch (currency) {
		case "USD" : return 169.85;
		case "CAD" : return 169.85;
		case "AUD" : return 169.85;
		case "GBP" : return 109.85;
		case "EUR" : return 139.85;
	}
}

function getDiscountedOffer(currency) {
	switch (currency) {
		case "USD" : return 59.95;
		case "CAD" : return 59.95;
		case "AUD" : return 59.95;
		case "GBP" : return 39.95;
		case "EUR" : return 49.95;
	}
}
// Returns the discounted price of a product (e.g. 29.95 for RegistryBooster)
function getDiscounted(product, currency) {
	switch (product) {
		case "ps" :
			switch (currency) {
				case "USD" : return 39.95;
				case "CAD" : return 39.95;
				case "AUD" : return 39.95;
				case "GBP" : return 26.62;
				case "EUR" : return 33.29;
			}
			break;
		
		case "ps-support" :
			switch (currency) {
				case "USD" : return 19.95;
				case "CAD" : return 19.95;
				case "AUD" : return 19.95;
				case "GBP" : return 13.30;
				case "EUR" : return 16.62;
			}
			break;

		case "ds" :
			switch (currency) {
				case "USD" : return 19.95;
				case "CAD" : return 19.95;
				case "AUD" : return 19.95;
				case "GBP" : return 13.29;
				case "EUR" : return 16.62;
			}
			break;
			
		// It's more expensive from the main site because it's not the upgrade from 'enable powersuite' button in software
		case "ps-site" :
			return getDiscountedPS(currency);
			break;
		case "offer-ps-pp" :
			return getDiscountedPS(currency);
			break;
			
		case "downloads-ps" :
			return getDiscountedPS(currency);
			break;
			
		default :
			switch (currency) {
				case "USD" : return 29.95;
				case "CAD" : return 29.95;
				case "AUD" : return 29.95;
				case "GBP" : return 19.95;
				case "EUR" : return 24.95;
			}
			break;
	}
}

// Returns the original (strikethrough) price of the bundled offers (system tweaker)
function getOffer(product, currency) {
	switch (currency) {
		case "USD" : return 29.95;
		case "CAD" : return 29.95;
		case "AUD" : return 29.95;
		case "GBP" : return 19.95;
		case "EUR" : return 24.95;
	}
	return 39.95;
}
// Returns the original price for PixelPerfect
function getPPOffer(product, currency) {
	switch (currency) {
		case "USD" : return 49.95;
		case "CAD" : return 49.95;
		case "AUD" : return 49.95;
		case "GBP" : return 29.95;
		case "EUR" : return 39.95;
	}
	return 49.95;
}

// Returns the currency symbol: $, €, etc
function getSymbol(product, currency) {
	switch (currency) {
		case "USD" : return "$";
		case "CAD" : return "$";
		case "AUD" : return "$";
		case "GBP" : return "&pound;";
		case "EUR" : return "&euro;";
	}
	return "$";
}

// Returns currency standard code based on localisation rules
function getCurrency(lang) {
	if (lang in {"en-uk":"", "gd":"", "en-ie":"", "gd-ie":"", "en-gb":""}) {
		return "GBP";
	} else {
		if (lang in {"en-au":"", "en-nz":""}) {
			return "AUD";
		} else {
			if (lang in {"en-ca":"", "fr-ca":""}) {
				return "CAD";
			} else {
				if (lang in {"eu":"", "hr":"", "da":"", "nl-be":"", "fr":"", "fi":"", "fr-be":"", "fr-ch":"", "fr-lu":"", "de":"", "de-at":"", "de-li":"", "de-ch":"", "de-lu":"", "el":"", "hu":"", "it":"", "it-ch":"", "lv":"", "mk":"", "mt":"", "no":"", "pt":"", "pl":"", "ro":"", "ro-mo":"", "ru":"", "ru-mo":"", "sr":"", "sl":"", "sk":"", "es":"", "sv":"", "sv-fi":"", "tr":"", "uk":"", "cs":"", "bg":"", "ca":"", "nl":"", "et":""}) {
					return "EUR";
				}		
			}		
		}		
	}
	return "USD";
}

// Updates the links on a page with the DR url from "getLink"
function updateLinks(product, qty, program, offer, currency) {
	var url = getLink(product, qty, program, offer, currency);
	var urlPPupgrade = "http://store.digitalriver.com/store/uniblue/AddItemToRequisition/productID.63627900/quantity.1/pgm.13675100/OfferID.699455609/Currency."+currency;
	switch (product) {
		
		case "store-offer" :
			break;
			
		case "ps-site" :
			// document.getElementById("link-right").href = url;
			// document.getElementById("link-button1").href = url;
			// document.getElementById("link-button2").href = url;
			break;
		
		case "rb-site" :
			// document.getElementById("link-right").href = url;
			break;
			
		case "rb-site-purchase" :
			document.getElementById("link-maintop").href = url;
			document.getElementById("link-mainbot").href = url;
			document.getElementById("link-maintoptext").href = url;
			document.getElementById("link-mainbottext").href = url;
			document.getElementById("link-toptext").href = url;
			document.getElementById("link-midtext").href = url;
			break;
			
		case "se-site" :
			// document.getElementById("link-right").href = url;
			break;
		
		case "se-site-purchase" :
			document.getElementById("link-maintop").href = url;
			document.getElementById("link-mainbot").href = url;
			document.getElementById("link-maintoptext").href = url;
			document.getElementById("link-mainbottext").href = url;
			document.getElementById("link-toptext").href = url;
			document.getElementById("link-midtext").href = url;
			break;
			
		case "sp-site" :
			// document.getElementById("link-right").href = url;
			break;
		
		case "sp-site-purchase" :
			document.getElementById("link-maintop").href = url;
			document.getElementById("link-mainbot").href = url;
			document.getElementById("link-maintoptext").href = url;
			document.getElementById("link-mainbottext").href = url;
			document.getElementById("link-toptext").href = url;
			document.getElementById("link-midtext").href = url;
			break;
			
		case "downloads-rb" :
			document.getElementById("link-rb").href = url;
			break;
			
		case "downloads-se" :
			document.getElementById("link-se").href = url;
			break;
			
		case "downloads-sp" :
			document.getElementById("link-sp").href = url;
			break;
			
		case "downloads-ps" :
			document.getElementById("link-ps").href = url;
			break;
		
		case "upgrades-rb" :
			document.getElementById("link-main-rb").href = url;
			document.getElementById("link-main-pp-rb").href = urlPPupgrade;
			break;
		case "upgrades-sp" :
			document.getElementById("link-main-sp").href = url;
			document.getElementById("link-main-pp-sp").href = urlPPupgrade;
			break;
		case "upgrades-se" :
			document.getElementById("link-main-pp-se").href = urlPPupgrade;
			break;
			
		case "lr-home" :
			// document.getElementById("link-right").href = url;
			break;
		
		default:
			var links = document.getElementsByTagName("a");	
			for (i=0;i<links.length;i++) {links[i].href=url;}
			break;
	}
}

// Encapsulates common price updates - right panel
function updateSitePricing(amount_orig, amount_save, amount_sell) {
	document.getElementById("right-orig").innerHTML	= amount_orig;
	document.getElementById("right-save").innerHTML	= amount_save + ".00";
	document.getElementById("right-sell").innerHTML	= amount_sell;
}

// Encapsulates common price updates - product selectors
function updateSelectorPricing(product, amount_orig, amount_save, amount_sell) {
	document.getElementById("price-orig-"+product).innerHTML = amount_orig;
	document.getElementById("price-save-"+product).innerHTML = amount_save + ".00";
	document.getElementById("price-sell-"+product).innerHTML = amount_sell;
}


// Main entry function 
function checkLocale(product, qty, program, offer) {
	if (program==null||offer==null||program==""||offer=="") {return;}
	
	var lang 		= getLang();
	var currency 	= getCurrency(lang);
	var symbol 		= getSymbol(product, currency);	
	
	amount_orig = symbol + getOriginal(product, currency).toFixed(2);
	amount_save	= symbol + (getOriginal(product, currency)-getDiscounted(product, currency)).toFixed(0);	
	amount_sell = symbol + getDiscounted(product, currency).toFixed(2);
	amount_free = symbol + getOffer(product, currency);
	amount_ppfree = symbol + getPPOffer(product, currency);
	amount_PPupgrade = symbol + getUpgradesPP(currency).toFixed(2);
	
	amount_orig_offer = symbol + getDiscountedOrig(currency).toFixed(2);
	amount_sell_offer = symbol + getDiscountedOffer(currency).toFixed(2);
	
	updateLinks(product, qty, program, offer, currency);
	
	switch (product) {
		case "ps" :
			document.getElementById("price-save").innerHTML     = amount_save;
			document.getElementById("price-discount").innerHTML = amount_sell;
			document.getElementById("price-offer").innerHTML    = amount_save;
			document.getElementById("price-old").innerHTML      = amount_orig;			
			break;
			
		case "ps-site" :
			updateSitePricing(amount_orig, amount_save, amount_sell);
			document.getElementById("button-orig-1").innerHTML	= amount_orig;
			document.getElementById("button-sell-1").innerHTML	= amount_sell;
			document.getElementById("button-orig-2").innerHTML	= amount_orig;
			document.getElementById("button-sell-2").innerHTML	= amount_sell;
			break;
			
		case "ps-support" :
			document.getElementById("price-topline").innerHTML	= amount_sell;	
			document.getElementById("price-product").innerHTML	= amount_orig;
			document.getElementById("price-promo").innerHTML	= amount_ppfree;	
			document.getElementById("price-save").innerHTML		= amount_save;		
			document.getElementById("price-old").innerHTML		= symbol + (getOriginal(product, currency) + getPPOffer(product, currency)).toFixed(2);
			document.getElementById("price-new").innerHTML		= amount_sell;
			break;
			
			// PS + PP offer purchase page
		case "offer-ps-pp" :
			document.getElementById("price-topline").innerHTML	= amount_sell;	
			document.getElementById("price-product").innerHTML	= amount_orig;
			document.getElementById("price-promo").innerHTML	= amount_ppfree;
			document.getElementById("price-save").innerHTML		= amount_save;	
			document.getElementById("price-old").innerHTML		= symbol + (getOriginal(product, currency) + getPPOffer(product, currency)).toFixed(2);
			document.getElementById("price-new").innerHTML		= amount_sell;
			break;
			
			// SP + PP offer purchase page
		case "offer-sp-pp" :
			document.getElementById("price-topline").innerHTML	= amount_sell;	
			document.getElementById("price-product").innerHTML	= amount_orig;
			document.getElementById("price-promo").innerHTML	= amount_ppfree;	
			document.getElementById("price-save").innerHTML		= amount_save;		
			document.getElementById("price-old").innerHTML		= symbol + (getOriginal(product, currency) + getPPOffer(product, currency)).toFixed(2);
			document.getElementById("price-new").innerHTML		= amount_sell;
			break;
			
		case "store-offer" :		
			document.getElementById("price-old").innerHTML		= amount_orig_offer;
			document.getElementById("price-new").innerHTML		= amount_sell_offer;
			break;
			
		case "rb-site" :
			updateSitePricing(amount_orig, amount_save, amount_sell);
			break;
			
		case "se-site" :
			updateSitePricing(amount_orig, amount_save, amount_sell);
			break;
			
		case "sp-site" :
			updateSitePricing(amount_orig, amount_save, amount_sell);
			break;
		
		
		case "downloads-rb" :
			updateSelectorPricing("rb", amount_orig, amount_save, amount_sell);
			break;
		case "upgrades-rb" :
			document.getElementById("price-orig-rb").innerHTML	= amount_orig;
			document.getElementById("price-orig-pp-rb").innerHTML	= amount_PPupgrade;
			break;
			
		case "downloads-se" :
			updateSelectorPricing("se", amount_orig, amount_save, amount_sell);
			break;
		case "upgrades-se" :
			document.getElementById("price-orig-pp-se").innerHTML	= amount_PPupgrade;
			break;
			
		case "downloads-sp" :
			updateSelectorPricing("sp", amount_orig, amount_save, amount_sell);
			break;
		case "upgrades-sp" :
			document.getElementById("price-orig-sp").innerHTML	= amount_orig;
			document.getElementById("price-orig-pp-sp").innerHTML	= amount_PPupgrade;
			break;
		
		case "downloads-ps" :
			updateSelectorPricing("ps", amount_orig, amount_save, amount_sell);
			break;
		
		case "downloads-special" :
			updateSelectorPricing("special", amount_orig, amount_save, amount_sell);
			break;
			
		
			
		default : 
			document.getElementById("price-topline").innerHTML	= amount_sell;	
			document.getElementById("price-product").innerHTML	= amount_orig;
			document.getElementById("price-promo").innerHTML	= amount_free;	
			document.getElementById("price-save").innerHTML		= amount_save;		
			document.getElementById("price-old").innerHTML		= symbol + (getOriginal(product, currency) + getOffer(product, currency)).toFixed(2);
			document.getElementById("price-new").innerHTML		= amount_sell;
			break;
	}

}
