	function URLEncode(str) {
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";
	var plaintext = str;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";	// x-www-urlencoded, rather than 
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
			    alert("Unicode Character '" 
                        + ch 
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted.");
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	}
	return encoded;
}

function rn() {
  return Math.floor(Math.random()*999999999);
}

function chkContactForm() {
  ff = eval("document.cform");
  if (ff.name.value == "") {
    alert("Please enter your name.");
    ff.name.focus();
    return false;
  }
  else if (ff.phone.value == "") {
    alert("Please enter you phone number.");
    ff.phone.focus();
    return false;
  }
  else if (ff.email.value.indexOf('@') <= 0) {
    alert("Please enter a valid email address.");
    ff.email.focus();
    ff.email.select();
    return false;
  }   
  else if (ff.hearabout.value == "") {
    alert("Please let us know how you heard about us.");
    ff.hearabout.focus();
    return false;
  }
  else if (ff.contactpref.value == "") {
    alert("Please tell us how you prefer to be contacted.");
    ff.contactpref.focus();
    return false;
  }
  else if (ff.recaptcha_response_field.value == "") {
    alert("Please enter the words you see.");
    ff.recaptcha_response_field.focus();
    return false;
  }
  else {
    ff.subtn.value = "sending message";
    ff.subtn.disabled = true;
    return true;
  }
}

function chk_qty(ffn) {
  ff = eval("document."+ffn);
  reqf = eval('chk_req_fields_'+ffn+'()');
  if (!reqf) {
    return false;
  }
  if ((ff.qty.value == "") || (ff.qty.value == "0") || (isNaN(ff.qty.value))) {
    alert("Please enter a valid number quantity.");
    ff.qty.focus();
    ff.qty.select();
    return false;
  }
  else {
    if (ff.subtn) {
      ff.subtn.value = "saving to cart";
      ff.subtn.disabled = true;
    }
    return true;
  }
}

function slim_view_image(img_file, img_txt) {
  Slimbox.open(img_file, img_txt);
}

function remove_from_cart(item_id) {
  var kk = confirm("Are you sure you want to remove this item from your cart?");
  if (kk) {
    window.location = "?action=remove_from_cart&item_id="+item_id;
  }
}

function chk_checkout() {
  ff = eval("document.checkout");
  if (ff.shipping_first_name.value == "") {
    alert("Please enter your Ship To First Name.");
    ff.shipping_first_name.focus();
    return false;
  }
  else if (ff.shipping_last_name.value == "") {
    alert("Please enter your Ship To Last Name.");
    ff.shipping_last_name.focus();
    return false;
  }
  else if (ff.shipping_address1.value == "") {
    alert("Please enter your Ship To Address.");
    ff.shipping_address1.focus();
    return false;
  }
  else if (ff.shipping_city.value == "") {
    alert("Please enter your Ship To Address.");
    ff.shipping_city.focus();
    return false;
  }
  else if (ff.shipping_state.value == "") {
    alert("Please select your Ship To State.");
    ff.shipping_state.focus();
    return false;
  }
  else if (ff.shipping_zip.value == "") {
    alert("Please enter your Ship To Zip.");
    ff.shipping_zip.focus();
    return false;
  }
  else if (ff.billing_first_name.value == "") {
    alert("Please enter your Bill To First Name.");
    ff.billing_first_name.focus();
    return false;
  }
  else if (ff.billing_last_name.value == "") {
    alert("Please enter your Bill To Last Name.");
    ff.billing_last_name.focus();
    return false;
  }
  else if (ff.billing_address1.value == "") {
    alert("Please enter your Bill To Address.");
    ff.billing_address1.focus();
    return false;
  }
  else if (ff.billing_city.value == "") {
    alert("Please enter your Ship To Address.");
    ff.billing_city.focus();
    return false;
  }
  else if (ff.billing_state.value == "") {
    alert("Please select your Bill To State.");
    ff.billing_state.focus();
    return false;
  }
  else if (ff.billing_zip.value == "") {
    alert("Please enter your Bill To Zip.");
    ff.billing_zip.focus();
    return false;
  }
  else if (ff.ct.value == "") {
    alert("Please select your card type.");
    ff.ct.focus();
    return false;
  }
  else if (ff.cn.value == "") {
    alert("Please enter your card number.");
    ff.cn.focus();
    return false;
  }
  else if (ff.exm.value == "") {
    alert("Please select your full exparation date.");
    ff.exm.focus();
    return false;
  }
  else if (ff.exy.value == "") {
    alert("Please select your full exparation date.");
    ff.exy.focus();
    return false;
  }
  else if (ff.cvv.value == "") {
    alert("Please enter your card's CVV code (on back).");
    ff.cvv.focus();
    return false;
  }
  else if (ff.phone.value == "") {
    alert("Please enter your Phone Number.");
    ff.phone.focus();
    return false;
  }
  else if (ff.email.value.indexOf('@') <= 0) {
    alert("Please enter a valid email address.");
    ff.email.focus();
    ff.email.select();
    return false;
  }
  else {
    ff.subtn.value = "Processing...";
    ff.subtn.disabled = true;
    return true;
  }
}

function checkout_copy() {
  ff = eval("document.checkout");
  ff.billing_first_name.value = ff.shipping_first_name.value;
  ff.billing_last_name.value = ff.shipping_last_name.value;
  ff.billing_address1.value = ff.shipping_address1.value;
  ff.billing_address2.value = ff.shipping_address2.value;
  ff.billing_city.value = ff.shipping_city.value;
  ff.billing_state.value = ff.shipping_state.value;
  ff.billing_zip.value = ff.shipping_zip.value;
}
function chkQuantities() {
  dostop = false;
  $$('input.qty').each(function(item){
    if (!dostop) {
	  if (isNaN(item.value)) {
	    alert("Please only enter numbers for quantities.");
	    item.focus();
	    item.select();
	    dostop = true;
	  }
	}
  });
  if (!dostop) {
    return true;
  }
  else {
    return false;
  }
}

cur_cgui_type = "";
last_scoor = false;

function init_cgui() {
  if ($('cgui')) {
    cur_cgui_type = $('cgui_type').value;
	cgui_chkbox();
	cgui_select_type();
    $$('select.cgui_e').each(function(item){
	  cgui_hex_color(item.id,item.value);
    });
    $('cgui_app_elink').setStyle('opacity','0.8');
  }
}

function cgui_chkbox() {
  if ($('cgui')) {
    if ($('cgui_chk1').checked) {
      $('cgui').setStyle('display','');
    }
    else {
      $('cgui').setStyle('display','none');
    }
  }
}

function cgui_select_type() {
  if ($('cgui')) {
	// defaults
    $('cgui_logo_form').setStyle('display','none');
    $('cgui_text_form').setStyle('display','none');
    $('prev_app').setStyle('display','none');
    $('cgui_opts').setStyle('display','none');
    $('cgui_app').setStyle('display','none');
    if ($('cgui_type').value != "") {
      $('cgui_opts').setStyle('display','');
      if ($('imprint_color').value != "") {
        $('prev_app').setStyle('display','');
        $('cgui_app').setStyle('display','');
        if ($('cgui_type').value == "logo") {
          $('cgui_logo_form').setStyle('display','');
        }
        if ($('cgui_type').value == "text") {
          $('cgui_text_form').setStyle('display','');
        }
      }
    }
    if ($('cgui_type').value != cur_cgui_type) {
      cgui_clear_sample();
    }
    cur_cgui_type = $('cgui_type').value;
  }
}

function cgui_hex_color(elem,thisid) {
  hex_clr = "";
  if ($('cgui_value_'+thisid)) {
    hex_clr = $('cgui_value_'+thisid).value;
  }
  elem = 'option_'+elem+'_details';
  if (hex_clr == "") {
    $(elem).set('html','');
  }
  else {
    if ($(elem)) {
      if (hex_clr == "") {
        $(elem).set('html','');
      }
      else {
        $(elem).set("html","<div class=\"clrbox\" style=\"background-color:"+hex_clr+"\">&nbsp;</div>");
      }
    }
  }
}

function cgui_app_elem_update(thisid,item_id) {
  hex_clr = "";
  if ($('cgui_value_'+thisid)) {
    hex_clr = $('cgui_value_'+thisid).value;
  }
  if (hex_clr != "") {
    if ($('cgui_app_elem')) {
      if ($('cgui_type').value == "text") {
        cgui_update_text(item_id);
      }
      else {
        new Request({
          url: '/ajax/update_photo?item_id='+item_id+'&imprint_color='+URLEncode(hex_clr)+'&imprint_size_id='+$('imprint_size').value+'&imprint_color_id='+$('imprint_color').value+'&rn='+rn(),
          onSuccess:function(serverData) {
	        if (serverData.substring(0, 8) === "SUCCESS:") {
			  sdata = serverData.substring(8).split("%%");
			  sfile = sdata[0];
			  scoor = sdata[1];
		      $('cgui_app_elem').destroy();
		      new Element('img').set({'id':'cgui_app_elem','src':'/cgui/onetone/'+sfile}).inject($('cgui_app'));
		      cgui_update_imprint('/cgui/onetone/'+sfile,scoor);
	        }
	        else {
//	          alert(serverData.substring(6));
	        }
          }
        }).send();
      }
    }
  }
}

function cgui_update_imprint(ximg,scoor) {
  if ($('cgui_app_imprint')) {
    $('cgui_app_imprint').set('html','');
	new Element('img').set({'id':'imprint_img','src':ximg}).inject($('cgui_app_imprint'));
	cgui_update_imprint_size(scoor);
  }
}

function cgui_update_imprint_size(scoor) {
  px_in  = parseInt($('cgui_px_in').value);
  inches = parseInt($('cgui_value_'+$('imprint_size').value).value);
  iwidth = (px_in * inches);
  $('imprint_img').setStyles({'top':0,'left':0});
  if ((iwidth != "") && ($('imprint_img'))) {
    $('imprint_img').set('width',iwidth);
  }
  if ((!scoor) && (last_scoor)) {
    scoor = last_scoor;
  }
  if (scoor) {
    last_scoor = scoor;
    img_size = scoor.split("x");
    img_height = parseInt(img_size[0]);
    img_width  = parseInt(img_size[1]);
    if ((img_height > 0) && (img_width > 0)) {
      iheight  = parseInt(((iwidth * img_height) / img_width));
      adj_top  = parseInt(iheight / 2);
      adj_left = parseInt(iwidth / 2);
      $('imprint_img').setStyles({
      	'top':'-'+adj_top+'px',
      	'left':'-'+adj_left+'px',
      	'height':iheight+'px',
      	'width':iwidth+'px'
      });
//      alert("h:"+iheight+", w:"+iwidth);
//		alert("L:-"+adj_left+", T:-"+adj_top);
    }
  }
}

function cgui_create_text(item_id) {
  if ($('imprint_font').value == "") {
    alert("Please select a font.");
    $('imprint_font').focus();
  }
  else if ($('imprint_text').value == "") {
    alert("Please enter some text.");
    $('imprint_text').focus();
  }
  else {
    cgui_update_text(item_id);
  }
}

function cgui_update_text(item_id) {
  if (($('imprint_font').value != "")  && ($('imprint_text').value != "")) {
  	if ($('cgui_value_'+$('imprint_font').value)) {
  	  ifont  = $('cgui_value_'+$('imprint_font').value).value;
  	  if ($('option_000_iclr')) {
  	    icolor = $('option_000_iclr').value;
  	  }
  	  else {
 	    icolor = $('cgui_value_'+$('imprint_color').value).value;
 	  }
      new Request({
        url: '/ajax/create_text?item_id='+item_id+'&imprint_text='+URLEncode($('imprint_text').value)+'&imprint_text2='+URLEncode($('imprint_text2').value)+'&imprint_font='+URLEncode(ifont)+'&imprint_color='+URLEncode(icolor)+'&imprint_size_id='+$('imprint_size').value+'&imprint_font_id='+$('imprint_font').value+'&imprint_color_id='+$('imprint_color').value+'&rn='+rn(),
        onSuccess:function(serverData) {
	      if (serverData.substring(0, 8) === "SUCCESS:") {
			sdata = serverData.substring(8).split("%%");
			sfile = sdata[0];
			scoor = sdata[1];
	        if ($('cgui_app_elem')) {
		      $('cgui_app_elem').destroy();
		    }
		    new Element('img').set({'id':'cgui_app_elem','src':'/cgui/onetone/'+sfile}).inject($('cgui_app'));
		    cgui_update_imprint('/cgui/onetone/'+sfile,scoor);
		    $('current_logo_file').value = sfile;
	      }
	      else {
//	        alert(serverData.substring(6));
	      }
        }
      }).send();
    }
    else {
      alert("Please select an imprint font.");
    }
  }
}

function chk_cgui_form() {
  if ($('cgui_type').value == "") {
    alert("Please select whether you wish to customize a logo or text.");
    $('cgui_type').focus();
    return false;
  }
  else if ($('imprint_size').value == "") {
    alert("Please select an imprint size.");
    $('imprint_size').focus();
    return false;
  }
  else if (($('imprint_color').value == "") || ($('imprint_color').value == "0")) {
    alert("Please select an imprint color.");
    return false;
  }
  else if (($('cgui_type').value == "logo") && ($('current_logo_file').value == "")) {
    alert("Please upload a photo or image for your logo.");
    return false;
  }
  else if (($('cgui_type').value == "text") && ($('imprint_font').value == "")) {
    alert("Please select an imprint font for your text.");
    $('imprint_font').focus();
    return false;
  }
  else if (($('cgui_type').value == "text") && ($('imprint_text').value == "")) {
    alert("Please select enter something for your imprint text.");
    $('imprint_text').focus();
    return false;
  }
  else if (($('cgui_type').value == "text") && ($('current_logo_file').value == "")) {
    alert("Please generate some imprint text.");
    $('imprint_text').focus();
    return false;
  }
  else {
	$('cgui_save_btn').value= "Saving customization";
	$('cgui_save_btn').disabled = true;
	return true;
  }
}

function cgui_clear_sample() {
  $('current_logo_file').value = "";
  $('cgui_app_imprint').set('html','');
  if ($('cgui_app_elem')) {
	$('cgui_app_elem').destroy();
  }
  last_scoor = false;
}

function check_out_sales_tax(this_state, tax_state, sales_tax) {
  order_total = (parseFloat($('sub_total').value) + parseFloat($('total_shipping').value));
  if (this_state == tax_state) {
    tax_total = (parseFloat($('sub_total').value) * (parseFloat(sales_tax) / 100));
    order_total = (order_total + tax_total);
    $('sales_tax_tr').setStyle('display','');
    $('sales_tax_total').set('html','$'+tax_total.toFixed(2));
    $('order_total').set('html','$'+order_total.toFixed(2));
  }
  else {
    $('sales_tax_tr').setStyle('display','none');
    $('order_total').set('html','$'+order_total.toFixed(2));
  }
}

function cClr(trg,clr,btype,ctxt,ctrg) {
	$(trg).setStyle('border','2px '+btype+' '+clr);
	if (ctxt == "") {
	  clr  = $('option_'+ctrg+'_iclr').value;
	  ctxt = $('option_'+ctrg+'_itxt').value;
	}
	if (clr == "#FFFFFF") { clr = "#000"; }
	$('option_'+ctrg+'_txt').setStyle('color',clr).set('html',ctxt);
}

function cgui_new_update(trg,ximg,foption,fvalue,iclr,itxt) {
  $(trg).set("html","");
  new Element('img').set('src',ximg).inject($(trg));
  $('option_'+foption).value = fvalue;
  $('option_'+foption+'_iclr').value = iclr;
  $('option_'+foption+'_itxt').value = itxt;
}

function cgui_set_default_options(ctrg,xtrg,ximg) {
  clr  = $('option_'+ctrg+'_iclr').value;
  ctxt = $('option_'+ctrg+'_itxt').value;
  $('option_'+ctrg+'_txt').setStyle('color',clr).set('html',ctxt);
  if (ximg != "") {
    $(xtrg).set("html","");
    new Element('img').set('src',ximg).inject($(xtrg));
  }
}

function pop_tip(lnk) {
  window.open ("/"+lnk,"TIP","menubar=0,resizable=0,width=520,height=730"); 
}

cur_sel_font = false;

function cgui_select_font(fid,item_id) {
  if ($('cgui_type').value == "text") {
    $('imprint_font').value = fid;
    cgui_update_text(item_id);
    if (cur_sel_font) {
      $(cur_sel_font).setStyle('background-color','#FFF'); // clear currently selected font
    }
    cur_sel_font = $('font'+fid); // set new font
    $('font'+fid).setStyle('background-color','#9DC4FD');
    new Fx.Scroll($('fonts'), {'offset': {'x':0,'y':-3}}).toElement($('font'+fid));
  }
}

function cgui_imprint_clr_update(foption,fvalue,iclr,itxt) {
  $('imprint_color').value = fvalue;
  $('option_'+foption).value = fvalue;
  $('option_'+foption+'_iclr').value = iclr;
  $('option_'+foption+'_itxt').value = itxt;
}

