// JavaScript Document
//dont forget to compress using:
//http://www.askapache.com/online-tools/js-compress/
//first compress with this tool , then use dreamwaever find and replace with REGEXP to remove \r\n 
function redirect(id){
	var selectBox = document.getElementById(id);
	var myForm = document.getElementById('F_'+id);
	var dest = selectBox.options[selectBox.selectedIndex].value;
	if( dest.indexOf('Delete') > 0 ){
		if( confirm('Deleting CANNOT be undone. Continue?') ){window.open(selectBox.options[selectBox.selectedIndex].value,'_top');}
		else{myForm.reset();}
	}else if( dest.indexOf('admin') > 0 ){
		if( confirm('Edit Customer Order?') ){window.open(selectBox.options[selectBox.selectedIndex].value,'_top');}
		else{myForm.reset();}
	}else{window.open(selectBox.options[selectBox.selectedIndex].value,'_top');}
}
function dom(id) {
    var retval;
    if (typeof document.getElementById != 'undefined') {
        retval = document.getElementById(id);
    } else if (typeof document.all != 'undefined') {
        retval = document.all[id];
    } else {retval = false;}
    return retval;
}
function popupWindow(url) {
  window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes,copyhistory=no,width=500,height=500,screenX=5,screenY=5,top=5,left=5')
}
function setLoginUser(){
	var cookieDate = new Date(2050, 11, 10, 19, 30, 30);
	value = document.getElementById('loginUserName').value;
	if(ctype_alnum(value)){
		document.cookie = "user=" + value + "; expires=" + cookieDate.toGMTString() + "; path=/";
	}
}
function ctype_alnum(input){
	var regex=/^[0-9A-Za-z]+$/; //^[a-zA-z]+$/
	if(regex.test(input)){return true;}
	else{return false;}
}
function trim(s){
	if((s==null)||(typeof(s)!='string')||!s.length)return'';
	return s.replace(/^\s+/,'').replace(/\s+$/,'')
}
function MM_findObj(n, d) { //v4.01
	var p,i,x;  
	if(!d) d=document; 
	if((p=n.indexOf("?"))>0&&parent.frames.length){d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	if(!(x=d[n])&&d.all) x=d.all[n]; 
	for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); 
	return x;
}
function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.name; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('Solution(s):\n'+errors);
  document.MM_returnValue = (errors == '');
}
function thesame(value1, value2){
	if(( (value1 != null) || (value1 != "") )&& value2 != "" && value1 != value2){
		alert("The passwords must be identical. ");
		return (false);
	}
	return (true);
}
function checkValidSearch(q){
	if(q == ''){
		alert('Please Enter Search Terms. ');
		return (false);
	}
	if(q == 'null'){
		alert('Please Enter Search Terms. ');
		return (false);
	}
	if(q == 'NULL'){
		alert('Please Enter Search Terms. ');
		return (false);
	}
	if(q == null){
		alert('Please Enter Search Terms. ');
		return (false);
	}
}
function setCookie(key, value){
	var cookieDate = new Date(2010, 11, 10, 19, 30, 30);
	document.cookie = key + "=" + escape(value) + "; expires=" + cookieDate.toGMTString() + "; path=/";
}
function readCookie(key){
	var cookie = document.cookie;
	var first = cookie.indexOf(key + "=");
	//cookie exists
	if(first >= 0) {
		var str = cookie.substring(first,cookie.length);
		var last = str.indexOf(";");
		//if last cookie
		if(last < 0) last = str.length;
		//get cookie value
		str = str.substring(0, last).split("=");
		return unescape(str[1]);
	} else {
		return null;
	}
}
function eraseCookie(key) {
	var cookieDate = new Date(2000, 11, 10, 19, 30, 30);
	document.cookie = key + "=; expires=" + cookieDate.toGMTString() + "; path=/";
}
function openBlock(){
	var obj = document.getElementById('infoBoxFrame');
	var shim = document.getElementById('infoBoxIFrame');
	var closer = document.getElementById('closer');
	obj.style.display = "block";
	shim.style.display = "block";
	closer.focus();
}
function closeBlock(){
	var obj = document.getElementById('infoBoxFrame');
	var shim = document.getElementById('infoBoxIFrame');
	obj.style.display = "none";
	shim.style.display = "none";
}
function setFocus(id){
	var focalPoint = document.getElementById(id);
	window.onload=focalPoint.focus();
}
/******************************************************************/
/* This script and many more are available free online at
The JavaScript Source :: http://javascript.internet.com
Created by: kojak :: http://commoncoder.com */
// fieldname, warningname, remainingname, maxchars
function CheckFieldLength(fn,wn,rn,mc) {
	var len = fn.value.length;
	if (len > mc) {
		fn.value = fn.value.substring(0,mc);
		len = mc;
	}
	document.getElementById(wn).innerHTML = len;
	document.getElementById(rn).innerHTML = mc - len;
}
/****************************************************************/
//AJAX STUFF
function setDescription(i, url){
	dom('description_' + i).innerHTML =  'Loading...';
	//if changing item number, reset price and qty
	document.getElementById('price_' + i).innerHTML =  '';
	document.getElementById('qty_' + i).value =  '';
	// if sku is empty, clear description
	// if not empty, set description
	if( document.getElementById('sku_' + i).value ==  '' ){
		document.getElementById('description_' + i).innerHTML =  '';
	} else {
		var params = "sku=" + escape($F('sku_' + i));
		var ajx = new Ajax.Updater('description_' + i, url, {method: 'get', parameters: params, onFailure : handleError});
	}
}
function ableNextInput(i, url){
	var next = i+1;
	document.getElementById('sku_' + next).disabled = '';
	document.getElementById('qty_' + next).disabled = '';
}
function setPrice(i, url){
	// ABLE the next inputs
	dom('price_' + i).innerHTML =  'Loading...';
	var current_sku = 'sku_' + i;
	var current_qty = 'qty_' + i;
	var params = "sku=" + escape($F(current_sku)) + "&qty=" + escape($F(current_qty));
	var ajx = new Ajax.Updater('price_' + i, url, {method: 'get', parameters: params, onFailure : handleError});
}
function setLineTotal(i, url){
	dom('line_total_' + i).innerHTML =  'Loading...';
	var current_sku = 'sku_' + i;
	var current_qty = 'qty_' + i;
	var params = "sku=" + escape($F(current_sku)) + "&qty=" + escape($F(current_qty)) + "&tot=1";
	var ajx = new Ajax.Updater('line_total_' + i, url, {method: 'get', parameters: params, onFailure : handleError});
}
function setName(url){
	document.getElementById('storeName').innerHTML =  'Loading...';
	var params = "c=" + escape($F('customer_number'));
	var ajx = new Ajax.Updater('storeName', url, {method: 'get', parameters: params, onFailure : handleError});
}
function handleError(request, hdr){
	alert(hdr);
}
function highlightUpdate(){
	document.getElementById('update').style.border = '10px solid #FC0';
}
function checkNumber(id){
	var quantity = 	document.getElementById(id).value;
	if( !ctype_digit(quantity) ) {
		alert('Quantity must be a number. \nEnter 0 to remove an item.');
	}
}
function ctype_digit(input){
	var regex=/^[0-9]+$/; //^[a-zA-z]+$/
	if(regex.test(input)){return true;}
	else{return false;}
}
function in_array( what, where ){
	var a=false;
	for(var i=0;i<where.length;i++){
	  if(what == where[i]){
	    a=true;
        break;
	  }
	}
	return a;
}
function checkDuplicate(id, skusInOrder){
	var sku = document.getElementById(id).value;
	if( in_array(sku, skusInOrder) ){
		alert('This sku is already in your order.\nEnter 0 to remove.\nOr enter an updated quantity.');
	}
}

// i like the looks of this function better than the one above, but i don't have time to make sure everything that calls the one will work in the other
function _in_array(needle, haystack, strict) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: true
 
    var found = false, key, strict = !!strict;
 
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }
 
    return found;
}
