var imageLoader = new Image();
imageLoader.src = "/images/misc/image-loader.gif";

var Tools =
{
	GetQuerystring: function (name)
	{
		var querystring = window.location.search.substring(1);
		var values = querystring.split("&");
		
		for (var i = 0; i < values.length; i++)
		{
			var pair = values[i].split("=");
			
			if (pair[0] == name)
			{
				return pair[1];
			}
		}
		
		return "";
	},
	
	RoundNumber: function (number, places)
	{
		if (!Tools.IsNumeric(number))
		{
			number = (activeLanguage.indexOf("fr-") == -1) ? number.replace(",", "") : number.replace(",", ".");
		}
		
		number = "" + Math.round(number * Math.pow(10, places)) / Math.pow(10, places);
		
		if (places > 0)
		{
			if (number.indexOf(".") != -1)
			{
				var split = number.split(".");
				var zeros = places - split[1].length;
				
				for (var i = 1; i <= zeros; i++)
				{
					number += "0";
				}
			}
			else
			{
				number += ".";
				
				for (var i = 1; i <= places; i++)
				{
					number += "0";
				}
			}
		}
		
		return number;
	},
	
	IsNumeric: function(value)
	{
		var numbers = "0123456789.";
		var isNumber = true;

		for (i = 0; i < value.length && isNumber == true; i++) 
		{ 
			if (numbers.indexOf(value.charAt(i)) == -1) 
			{
				isNumber = false;
			}
		}
		
		return isNumber;
	},
	
	LocalizeCurrency: function(price)
	{
		var commaSymbol = (activeLanguage.indexOf("fr-") == -1) ? "," : " ";
		
		price += "";
		
		var split = price.split(".");
		var wholeNumber = split[0];
		var decimalNumber = (split.length > 1) ? ((activeLanguage.indexOf("fr-") == -1) ? "." : ",") + split[1] : "";
		var regEx = /(\d+)(\d{3})/;
		
		while (regEx.test(wholeNumber))
		{
			wholeNumber = wholeNumber.replace(regEx, '$1' + commaSymbol + '$2');
		}
		
		price = wholeNumber + decimalNumber;
		price = (activeLanguage.indexOf("fr-") == -1) ? "$" + price : price + " $";
		
		return price;
	},
	
	UrlEncode: function (str)
	{
		str = escape(str);
		str = str.replace('+', '%2B');
		str = str.replace('%20', '+');
		str = str.replace('*', '%2A');
		str = str.replace('/', '%2F');
		str = str.replace('@', '%40');
		
		return str;
	},
	
	UrlDecode: function (str)
	{
		var string = "";
		var i = 0;
		var c = c1 = c2 = 0;
		
		while (i < str.length)
		{
			c = str.charCodeAt(i);
			
			if (c < 128)
			{
				string += String.fromCharCode(c);
				i++;
			}
  			else if ((c > 191) && (c < 224))
  			{
  				c2 = utftext.charCodeAt(i+1);
  				string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
  				i += 2;
  			}
  			else
  			{
  				c2 = str.charCodeAt(i+1);
  				c3 = str.charCodeAt(i+2);
  				string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
  				i += 3;
  			}
  		}
  		
  		return string;
	},
	
	LoadedIncludeFiles: "[prototype.js][jquery-1.js][tools.js]",
	LoadIncludeFile: function (filename, filetype, media)
	{
		if (Tools.LoadedIncludeFiles.indexOf("[" + filename + "]") == -1)
		{
			if (filetype == "js")
			{
				document.write(unescape('%3Cscript type="text/javascript" src="' + staticUrl + '/includes/js/' + filename + '"%3E%3C/script%3E\r\n'));
			}
			else if (filetype == "css")
			{
				var css = document.createElement("link");
				css.setAttribute("type", "text/css");
				css.setAttribute("href", staticUrl + "/includes/" + filename);
				css.setAttribute("rel", "Stylesheet");
				css.setAttribute("media", (media == null) ? "all" : media);
				
				document.getElementsByTagName("head")[0].appendChild(css);
			}
			
			Tools.LoadedIncludeFiles += "[" + filename + "]";
		}
	},
	
	LoadIncludeFileByUrlNoCache: function (url)
	{
		//alert('LoadIncludeFileByUrlNoCache:\r\n ' + url);
		document.write(unescape('%3Cscript type="text/javascript" src="' + url + '"%3E%3C/script%3E\r\n'));
	},

	TrackClick: function(id, link, target)
	{
		if (typeof pageTracker != 'undefined')
		{
			pageTracker._trackPageview(id);
		}

		// this is the case if a specific target is not set in sitecore.
		// shouldn't happen but handle here anyway
		if (target == 'content')
		{
			target = '_top';
		}

		var newWindow = window.open(link, target);
		newWindow.focus();
		return false;
	}

};

var Cookies =
{
	Create: function (name, value, days)
	{
		if (value == "")
		{
			days = -1;
		}
		
		if (!days)
		{
			var expires = "";
		}
		else
		{
			var date = new Date();
			date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
			var expires = "; expires=" + date.toGMTString();
		}
		
		document.cookie = name + "=" + value + expires + "; path=/";
	},
	
	Get: function (name)
	{
		var nameEQ = name + "=";
		var ca = document.cookie.split(";");
		
		for (var i = 0; i < ca.length; i++)
		{
			var c = ca[i];
			
			while (c.charAt(0) == " ")
			{
				c = c.substring(1, c.length);
			}
			
			if (c.indexOf(nameEQ) == 0)
			{
				return c.substring(nameEQ.length, c.length);
			}
		}
		
		return null;
	},
	
	Delete: function (name)
	{
		Cookies.Create(name, "", -1);
	}
};

function openPrintWindow(page, width, height)
{
	// custom print window
	window.open(page, "printWindow", "scrollbars=1,width=" + (width || 690) + ",height=" + (height || 550) + ",left=20,top=20");
}

function openStandardPopupWindow(page, width, height)
{
	var scrollbars = "";
	
	if (width == null || width == "")
	{
		width = 660;
	}
	else
	{
		scrollbars = "scrollbars = 1, ";
	}
	
	if (height == null)
	{
		height = 338;
	}
	
	window.open(page, "standardPopupWindow", scrollbars + "width = " + width + ", height = " + height + ", left = 20, top = 20");
}