/* PopWindow Function */
function popWindow(url, myWidth, myHeight, myScrollbars, myTop, myLeft, myMenubar, myResize) {
	window.open(url, "","width="+myWidth+",height="+myHeight+",scrollbars="+myScrollbars+",top="+myTop+",left="+myLeft+",menubar="+myMenubar+",resizable="+myResize+",bgcolor=#ffffff");
}

/* Test For Compatability */
var compat = false;
if (parseInt(navigator.appVersion) >= 3) { 
	compat = true;
}

var last_div = '';
function showDiv(div_info) {
    if(last_div!="")document.getElementById(last_div).style.display = 'none';
	if(div_info!=""){
		document.getElementById(div_info).style.display = 'block';
		last_div=div_info;
	}
}
/* Cart Calculations */
var errfound = false;
var allowContinue = true;
function Validate() {
	with(document.ShopCartForm) {
		var x=0; 
		errfound=false;
		payplan=false;
		while ((!errfound) && (x < elements.length)) {
			if ((elements[x].selectedIndex==0) && (elements[x].name.indexOf("warranty") != -1)) {
				errfound=true;
				alert("Please select warranty information.");
				elements[x].focus();
			} else if ((elements[x].selectedIndex==0) && (elements[x].name.indexOf("payplan") != -1)) {
				errfound=true;
				alert("Please select payment information.");
				elements[x].focus();
			} else if ((elements[x].selectedIndex==0) && (elements[x].name.indexOf("quantity") != -1)) {
				errfound=true;
				alert("Please select quantity.");
				elements[x].focus();
			}
			x++;
		}
	}
}
function nextstep() {
	if (allowContinue == true) {
		Validate();
		var stb=0;
		$('input[id^=qty]').each( function(index) {
			if($(this).attr('value') >= 1) {stb++};
			if($(this).attr('value') == '') {$(this).val(0);}
		});
		if (stb == 0) {
			UpdateTotal(document.ShopCartForm);
		}
		else if (!errfound && stb >= 1 ) {
			document.ShopCartForm.submit();
		}
	}
}
function UpdateTotal(form) {
	$('input[id^=qty]').each( function(index) {
		if($(this).attr('value') == '') {
			$(this).val(0);
		}
	});
	allowContinue = false;
	form.page.value ='';
	form.URL.value = 'OrderCalculate?updatePrices=1&calculationUsageId=-1&calculationUsageId=-2&calculationUsageId=-3&calculationUsageId=-4&calculationUsageId=-5&calculationUsageId=-6&calculationUsageId=-7&orderItemId*=&quantity*=&URL=OrderItemDisplay';
	form.submit();
}

$(document).ready(function(){
	$("#products-cart input").change(function() {
		var numOnly = new RegExp(/(^\d+$)/);
		var currentVal = this.value;
		if(!currentVal.match(numOnly) && ($(this).val() != '')){
			this.value = 1;
		} else if ($(this).val() == ''){
			$(this).val('0');
		}
	});
});

function redirectBrowserDealer(state,DLURL) {
	var dealerLocatorURL = DLURL+'&state='+state;
	window.location.href = dealerLocatorURL;
}

// taken from:
//  http://www.webtoolkit.info/javascript-trim.html
function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

/***copied over from utilities.js***/

/* Checks whether a string contains a double byte character */
function containsDoubleByte (target) {
     var str = new String(target);
     var oneByteMax = 0x007F;
     for (var i=0; i < str.length; i++){
        chr = str.charCodeAt(i);
        if (chr > oneByteMax) {return true;}
     }
     return false;
}

/* A simple function to validate an email address */
function isValidEmail(strEmail){
	if (containsDoubleByte(strEmail)) {
		return false;
	}	
	if (strEmail.length == 0) {
		return true;
	} else if (strEmail.length < 5) {
		return false;
	} else {
       	if (strEmail.indexOf(" ") > 0) {
          	return false;
       	} else {
          	if (strEmail.indexOf("@") < 1) {
            	return false;
         	} else {
               	if (strEmail.lastIndexOf(".") < (strEmail.indexOf("@") + 2)) {
                 	return false;
                } else {
                    if (strEmail.lastIndexOf(".") >= strEmail.length-2) {
                    	return false;
                    }
              	}
           	}
      	}
   	}
  	return true;
}

/* This function will count the number of bytes represented in a UTF-8 string */
function isValidUTF8length(UTF16String, maxlength) {
    if (utf8StringByteLength(UTF16String) > maxlength) return false;
    else return true;
}

/* This function will count the number of bytes represented in a UTF-8 string */
function utf8StringByteLength(UTF16String) {
  if (UTF16String === null) return 0;
  var str = String(UTF16String);
  var oneByteMax = 0x007F;
  var twoByteMax = 0x07FF;
  var byteSize = str.length;
  for (i = 0; i < str.length; i++) {
    chr = str.charCodeAt(i);
    if (chr > oneByteMax) byteSize = byteSize + 1;
    if (chr > twoByteMax) byteSize = byteSize + 1;
  }  
  return byteSize;
}
/**end copy from utilities.js***/
