var msie = navigator.userAgent.toLowerCase().indexOf('msie') > 0;
var $D = function(str) {
	if (msie)
	{
		Debug.writeln(str);
	}
	else
	{
		dump(str + "\n");
	}
}

addOnLoad = function(func)
{
	if (typeof(window.onload) == "function")
	{
		var oldfunc = window.onload;
		window.onload = function() { return func() && oldfunc(); };
	}
	else
		window.onload = func;
	
}

defaultButton = function(btn, e){
//alert('btn=' +btn);
	if (document.all){
		if (e.keyCode == 13)
		{
			e.returnValue=false;
			e.cancel = true;
			btn.click();
		}
	}
	else if (document.getElementById)
	{
		if (e.which == 13)
		{
			e.returnValue=false;
			e.cancel = true;
			btn.click();
		}
	}
	else if(document.layers)
	{
		if(e.which == 13)
		{
			e.returnValue=false;
			e.cancel = true;
			btn.click();
		}
	}
}
setDefaultFocus = function(textboxId) 
{
	var undefined;
	var textbox = document.getElementById(textboxId);
	if (textbox == undefined || textbox == null)
	{
		return;
	}
	textbox.focus();
	textbox.select();
}

function scrollToElement(elementId) {
	var theElement = $get(elementId);
	var selectedPosX = 0;
	var selectedPosY = 0;
	while (theElement != null) 
	{
		selectedPosX += theElement.offsetLeft;
		selectedPosY += theElement.offsetTop;
		theElement = theElement.offsetParent;
	}
	window.scrollTo(selectedPosX, selectedPosY);
}

function toggleVisibility(clickedElementId, elementId) {
	var element = $get(elementId);
	if (element.style.display != "none") {
		element.style.display = "none";
	}
	else {
		element.style.display = "block";
		scrollToElement(clickedElementId);
	}
}



function createCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		var expires = "; expires=" + date.toGMTString();
	}
	else var expires = "";
	document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(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;
}

function eraseCookie(name) {
	createCookie(name, "", -1);
}

function loadGoogle() {
	google.load("jquery", "1.2.6");
	google.load("jqueryui", "1.5.2");
}

function setloc() {
	try
	{
		loadGoogle();
		if (google.loader.ClientLocation == null) {
			createCookie("STOREFRONT_Location", '|||', 1);
		}
		else {
			var yourLocation = google.loader.ClientLocation.address.city + "| " + google.loader.ClientLocation.address.region + "| " + google.loader.ClientLocation.address.country;
			eraseCookie("STOREFRONT_Location");
			createCookie("STOREFRONT_Location", yourLocation, 1);
		}
    }
    catch(ex)
    {
    }
}

function GetCreditCardTypeByCardNumber(cardNumber) {
    var cardNumber;
    // from http://www.regular-expressions.info/creditcard.html
    var cardTypes =  {
        "^4[0-9]{12}(?:[0-9]{3})?$" : "Visa",
        "^5[1-5][0-9]{14}$" : "MasterCard",
        "^3[47][0-9]{13}$" : "American Express",
        "^3(?:0[0-5]|[68][0-9])[0-9]{11}$" : "Diners Club",
        "^6(?:011|5[0-9]{2})[0-9]{12}$" : "Discover",
        "^(?:2131|1800|35\d{3})\\d{11}$" : "JCB"
    };
    for (var i in cardTypes) {
        if (new RegExp(i).test(cardNumber.replace(/[^0-9]+/g, ""))) {
            return cardTypes[i];
        }
    }
    return null;
}

function TrySetCreditCardType(cardNumber, creditCardTypeDropdown) {
    var type;
    if ((type =GetCreditCardTypeByCardNumber(cardNumber)) != null){
        for (var i = 0; i < creditCardTypeDropdown.options.length; i++) {
            if (creditCardTypeDropdown.options[i].text.toLowerCase() == type.toLowerCase()) {
                creditCardTypeDropdown.selectedIndex = i;
                break;
            }
        }
    }
}

function ColorChart() {
    HandleColorColumn();
    HandleColumnsToHide();
}


function HandleColorColumn() {
    var grid = $('#DetailsGrid');
    var headerRow = $('.CustomReportDataGridHeader', grid);
    var colorLink = headerRow.find("a:contains('Color')");
    var colorColumnExists = colorLink.length > 0;
    if (colorColumnExists == false) {
        return;
    }
    var cellIndex = colorLink.parent().attr('cellIndex');
    var coloredRows = headerRow.nextAll('tr');
    for (var i = 0; i < coloredRows.length; i++) {
        var row = coloredRows[i];
        var colorCell = $('td', row)[cellIndex];
        var color = colorCell.innerHTML;
        $(colorCell).hide();
        if (color != "") {
            $(coloredRows[i]).attr('style', 'background-color:' + color + ';');
        }
    }
    $($('td', headerRow)[cellIndex]).hide();
}

function HandleColumnsToHide() {
    var grid = $('#DetailsGrid');
    var headerRow = $('.CustomReportDataGridHeader', grid);
    var links = headerRow.find("a:contains('_')");
    var columnExists = links.length > 0;
    if (columnExists == false) {
        return;
    }
    links.each(function() {
        var name = $(this).text();
        if (name.indexOf("_", 0) > 0) {  // only hide fields that start with _
            return;
        }
        if (name.indexOf("AutoTotal", 0) > -1) { // don't hide AutoTotal fields
            return;
        }
        var cellIndex = $(this).parent().attr('cellIndex');
        var rows = headerRow.nextAll('tr');
        for (var i = 0; i < rows.length; i++) {
            var row = rows[i];
            var cell = $('td', row)[cellIndex];
            var color = cell.innerHTML;
            $(cell).hide();
        }
        $($('td', headerRow)[cellIndex]).hide();
    });
}
