function blank(s){//returns true if the element is blank
	for(var i=0; i<s.length; i++){
		var c=s.charAt(i);
		if((c!=' ') && (c!='') && (c!='\n')) return false;
	}
	return true;
}
function allblank(f){
	for (var i = 0; i<f.elements.length; i++){
		if(f.elements[i].type=="text" || f.elements[i].type=="textarea"){
			if(!blank(f.elements[i].value)){
				return true;
			}
		}
	}
	return false;
}
function alert_array(arr){
	var m="";
  if(!arr.length){
    alert("Not an array");
    return false;
  }
	for(var i=0;i<arr.length;i++){
		m+=i+")"+arr[i]+"\n";
	}
	alert(m);
}
function get_element(elm){
	if(document.getElementById){
		if(document.getElementById(elm)) var el=document.getElementById(elm);
		else return false;
	}
  else if(document.all){
    if(document.all[elm]) var el=document.all[elm];
    else return false;
  }  
	return el;
}
function preload(url){
	var im = new Image();
	im.src=url;
}
function removeSpaces(string) {
	var tstring = "";
	string = '' + string;
	splitstring = string.split(" ");
	for(i = 0; i < splitstring.length; i++)
	tstring += splitstring[i];
	return tstring;
}
function update_all_page_links(){
  var allLinks = document.getElementsByTagName('a');
  for (var i=0;i<allLinks.length;i++) {
    var lnk = allLinks[i];
    lnk.href=lnk.href;
    if(lnk.href && lnk.href.indexOf('javascript')== -1){
      if(lnk.href.indexOf('&addtocart') != -1){
        lnk.href=lnk.href.substring(0,lnk.href.indexOf('&addtocart'));
        if(get_element("cartadds").value.length) lnk.href+="&addtocart="+get_element("cartadds").value;
      }
      else if(lnk.href.indexOf('?addtocart') != -1){
        lnk.href=lnk.href.substring(0,lnk.href.indexOf('?addtocart'));
        if(get_element("cartadds").value.length) lnk.href+="?addtocart="+get_element("cartadds").value;
      }
      else if(lnk.href && lnk.href.indexOf('?') != -1){
        if(get_element("cartadds").value.length) lnk.href+="&addtocart="+get_element("cartadds").value;
      }
      else{
        if(get_element("cartadds").value.length) lnk.href+="?addtocart="+get_element("cartadds").value;
      }
    }
  }  
  for (i=0;i<document.forms.length;i++) {
    var form = document.forms[i];
    if(form.action.indexOf('?addtocart') != -1){
      form.action=form.action.substring(0,form.action.indexOf('?addtocart'));
      if(get_element("cartadds").value.length) form.action+="?addtocart="+get_element("cartadds").value;
    }
    else if(form.action.indexOf('&addtocart') != -1){
      form.action=form.action.substring(0,form.action.indexOf('&addtocart'));
      if(get_element("cartadds").value.length) form.action+="&addtocart="+get_element("cartadds").value;
    }
    else if(form.action && form.action.indexOf('?') != -1){
      if(get_element("cartadds").value.length) form.action+="&addtocart="+get_element("cartadds").value;
    }
    else{
      if(get_element("cartadds").value.length) form.action+="?addtocart="+get_element("cartadds").value;
    }
  }
}
var basket_startpos=1;
var basket_timeout;
var basket_slowj;
var basket_speed=1;
var basket_pos=1;
var max_speed=20;
/*
var b_zone=0;
for(var ti=0;ti<max_speed;ti++) b_zone+=ti;
b_zone+=max_speed+1;
*/
var b_zone=211;
function move_basket_back(){
  if(basket_startpos>(b_zone*2)){
    if(basket_pos>b_zone){
      basket_pos-=basket_speed;
      basket_speed++;
      if(basket_pos<b_zone) basket_pos=b_zone;
      if(basket_pos<1) basket_pos=1;
    }
    else if(basket_pos>1){
      if(basket_speed>max_speed) basket_speed=max_speed;
      basket_pos-=basket_speed;
      basket_speed--;
      if(basket_speed<1) basket_speed=1;
      if(basket_pos<1) basket_pos=1;
    }
  }
  else{
    if(basket_pos>1){
      basket_speed=7;
      basket_pos-=basket_speed;
      if(basket_pos<1) basket_pos=1;
    }
  }
  get_element("small_basket").style.top=basket_pos+"px";
  if(basket_pos>1)
      basket_timeout=setTimeout("move_basket_back()",(max_speed*10)/basket_speed);
  else basket_speed=1;
}
function put_basket_back(){
  clearTimeout(basket_timeout);
  basket_pos=1;
  basket_speed=1;
  get_element("small_basket").style.top=basket_pos+"px";
}
var cart_line=new Array();
var cart_line_price=new Array();
var cart_line_title=new Array();
function addtocart(prodid){
  prodid+="";
  if(get_element("addcartqty_"+prodid).value>0 || !get_element("addcartqty_"+prodid).id){
    if(get_element("addcartqty_"+prodid).value>0)
      var addqty=new Number(get_element("addcartqty_"+prodid).value);
    else
      var addqty=new Number(1);
    if(!get_element('cart_'+prodid)){
      get_element('sm_basket_inner').innerHTML+="<div id='cart_"+prodid+"' class='sm_basket_line'>"+cart_line[prodid]+"</div>";
    }
  }
  var cdata=get_element("cartadds").value;
  cdata=str_replace("::",":",cdata);
  cdata=cdata.split(":"); 
  var id,qty;
  var new_cdata="";
  var ya=false;
  for(var i=0;i<cdata.length;i++){
    if(cdata[i].length && cdata[i].indexOf("[")){
      id=cdata[i].substr(0,cdata[i].indexOf("["));
      qty=cdata[i].substr(cdata[i].indexOf("[")+1,2);
      qty*=1;
      if(id==prodid){
        ya=true;        
        qty+=addqty;
        if(qty>99) qty=99;
      }
      if(qty<10) qty="0"+qty;
      new_cdata+=":"+id+"["+qty+"]:";
    }
  }
  if(!ya){
    if(addqty<10) addqty="0"+addqty;
    new_cdata+=":"+prodid+"["+addqty+"]:";
  }
  get_element('cartadds').value=new_cdata;
  update_all_page_links();
  update_basket();
  if(basket_type=="small"){
    if(addqty>1) var has="have";
    else var has="has";
    get_element("add_cart_info_"+prodid).innerHTML="Qty "+addqty+"<br />"+cart_line_title[prodid]+"<br /><span style='font-weight:normal;font-size:11px;'>"+has+" been added to your basket</span><br /><br /><span style='font-style:italic;font-weight:normal;font-size:11px;'>View your basket in the top right of the page.<br /><br /><a href='javascript:close_add_cart_info(\""+prodid+"\")'>close</a></span>";
    get_element("add_cart_info_"+prodid).style.display="block";
    basket_startpos=new Number(f_scrollTop());
    basket_startpos-=1;
    get_element("small_basket").style.top=basket_startpos+"px";
    basket_pos=basket_startpos;
    clearTimeout(basket_timeout);
    basket_timeout=setTimeout("move_basket_back()",2500);
    clearTimeout(basket_slowj);
    basket_slowj=setTimeout("put_basket_back()",3500);
  }
}

function removefromcart(prodid){
  prodid+="";
  var cdata=get_element("cartadds").value;
  cdata=str_replace("::",":",cdata);
  cdata=cdata.split(":"); 
  var id,qty;
  var new_cdata="";
  for(var i=0;i<cdata.length;i++){
    if(cdata[i].length && cdata[i].indexOf("[")){
      id=cdata[i].substr(0,cdata[i].indexOf("["));
      qty=cdata[i].substr(cdata[i].indexOf("[")+1,2);
      qty*=1;
      if(id==prodid){
        qty-=1;
        if(qty<=0){
          qty=0;
          if(get_element("cart_"+prodid) && basket_type=="small"){
            get_element("cart_"+prodid).parentNode.removeChild(get_element("cart_"+prodid));
          }
        }
      }
      if(qty<10) qty="0"+qty;
      new_cdata+=":"+id+"["+qty+"]:";
    }
  }
  get_element('cartadds').value=new_cdata;
  update_all_page_links();
  update_basket();
}
function update_basket(){
  var cdata=get_element("cartadds").value;
  cdata=str_replace("::",":",cdata);
  cdata=cdata.split(":"); 
  var id,qty,price;
  var total=new Number(0);
  for(var i=0;i<cdata.length;i++){
    if(cdata[i].length && cdata[i].indexOf("[")){
      id=cdata[i].substr(0,cdata[i].indexOf("["));
      qty=cdata[i].substr(cdata[i].indexOf("[")+1,2);
      qty*=1;
      total+=(qty*cart_line_price[id]);
      if(currency=="GBP") price="&pound;"+number_format(qty*cart_line_price[id],2,".",",");
      else if(currency=="EUR") price="&euro;"+number_format(qty*cart_line_price[id],2,".",",");
      else  price="&euro;"+number_format(qty*cart_line_price[id],2,".",",");
      get_element("sm_basket_qty_"+id).innerHTML=qty;
      if(qty==0) get_element("sm_basket_price_"+id).innerHTML=price;
      else if(basket_type=="small" || qty==0) get_element("sm_basket_price_"+id).innerHTML=price+"<br /><span style='font-size:10px;font-style:italic'>inc vat</span>";
      else if(basket_type=="main") get_element("sm_basket_price_"+id).innerHTML=price+"<br /><span class='subtle'>inc. vat</span>";
    }
  }
  if(currency=="GBP") get_element("sm_basket_total").innerHTML="&pound;"+number_format(total,2,".",",");
  else if(currency=="EUR") get_element("sm_basket_total").innerHTML="&euro;"+number_format(total,2,".",",");
  else  get_element("sm_basket_total").innerHTML="&euro;"+number_format(total,2,".",",");
  if(basket_type=="small"){
    if(total>0){
      get_element("sm_basket_view").style.visibility="visible";
      get_element("sm_basket_empty").style.visibility="hidden";
    }
    else {
      get_element("sm_basket_view").style.visibility="hidden";
      get_element("sm_basket_empty").style.visibility="visible";
    }
  }
}
function str_replace(search, replace, subject) {
  var f = search, r = replace, s = subject;
  var ra = r instanceof Array, sa = s instanceof Array, f = [].concat(f), r = [].concat(r), i = (s = [].concat(s)).length;
  while (j = 0, i--) {
    if (s[i]) {
      while (s[i] = (s[i]+'').split(f[j]).join(ra ? r[j] || "" : r[0]), ++j in f){};
    }
  };
  return sa ? s : s[0];
}
function number_format( number, decimals, dec_point, thousands_sep ) {
    // *     example 1: number_format(1234.5678, 2, '.', '');
    // *     returns 1: 1234.57     
    var n = number, c = isNaN(decimals = Math.abs(decimals)) ? 2 : decimals;
    var d = dec_point == undefined ? "." : dec_point;
    var t = thousands_sep == undefined ? "," : thousands_sep, s = n < 0 ? "-" : "";
    var i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "", j = (j = i.length) > 3 ? j % 3 : 0;
    return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
}
function close_add_cart_info(prodid){
  get_element("add_cart_info_"+prodid).style.display="none";
//      get_element("small_basket").style.top="1px";

}
function f_clientWidth() {
  return f_filterResults (
    window.innerWidth ? window.innerWidth : 0,
    document.documentElement ? document.documentElement.clientWidth : 0,
    document.body ? document.body.clientWidth : 0
  );
}
function f_clientHeight() {
  return f_filterResults (
    window.innerHeight ? window.innerHeight : 0,
    document.documentElement ? document.documentElement.clientHeight : 0,
    document.body ? document.body.clientHeight : 0
  );
}
function f_scrollLeft() {
  return f_filterResults (
    window.pageXOffset ? window.pageXOffset : 0,
    document.documentElement ? document.documentElement.scrollLeft : 0,
    document.body ? document.body.scrollLeft : 0
  );
}
function f_scrollTop() {
  return f_filterResults (
    window.pageYOffset ? window.pageYOffset : 0,
    document.documentElement ? document.documentElement.scrollTop : 0,
    document.body ? document.body.scrollTop : 0
  );
}
function f_filterResults(n_win, n_docel, n_body) {
  var n_result = n_win ? n_win : 0;
  if (n_docel && (!n_result || (n_result > n_docel)))
    n_result = n_docel;
  return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
}
function fill_options(el,opts,vals){
  var optel=get_element(el);
  optel.options.length=0;
  for(var i=0;i<opts.length;i++){
    optel.options[i] = new Option(opts[i],vals[i]);
  }
}
function isNumberKey(evt){
   var charCode = (evt.which) ? evt.which : event.keyCode
   if (charCode > 31 && (charCode < 48 || charCode > 57)) return false;
   return true;
}
function lightup_resdiv(id){
  get_element("resdiv_"+id).style.borderColor="#FF0000";
}
function darken_resdiv(id){
  get_element("resdiv_"+id).style.borderColor="#CCCCCC";
}
function select_all(id){
  get_element(id).focus();
  get_element(id).select();
}
function set_fixed_div_position(){
  var top_scr=new Number(f_scrollTop());
  get_element("fixed_div").style.top=top_scr+"px";
  setTimeout("set_fixed_div_position()",2000);
}
function fade_images(){
  setTimeout("fade_in_image()",12000);
  setTimeout("fade_out_image()",24000);
  setTimeout("fade_images()",24000);
}

function fade_in_image(){
  f_step+=1;
  if(f_step>25){
    f_step=25;
    var im1=get_element("bfade");
    im_current++;
    if(im_current==ims_head.length) im_current=0;
    im1.src=ims_head[im_current];
  }
  else{
    var im2=get_element("tfade");
    im2.className="fade_"+f_step;
    setTimeout("fade_in_image()",fade_speed);
  }
}
function fade_out_image(){
  f_step--;
  if(f_step<0){
    f_step=0;
    var im1=get_element("tfade");
    im_current++;
    if(im_current==ims_head.length) im_current=0;
    im1.src=ims_head[im_current];
  }
  else{
    var im2=get_element("tfade");
    im2.className="fade_"+f_step;
    setTimeout("fade_out_image()",fade_speed);
  }
}
