function set_persistent_string(name, value, days)
{
 var d = new Date;
 
 if(days==0)
    d.setMonth(d.getMonth()+12);
 else
    d.setDate(d.getDate()+days);
    
 document.cookie = name+"="+value+"; expires="+d.toUTCString()+"; path=/sfairadora";
}

function get_persistent_string(name, dflt)
{
 var l = name.length;
 var c = document.cookie;
 
 var i = 0;
 for(;;)
	{
	 var next = c.indexOf(";", i);
	 if(c.substr(i, l)==name)
	   {
		if(next<0)
		   return c.substring(i+l+1);
		else
		   return c.substring(i+l+1, next);
	   }
	 if(next<0)
	    break;
		
	 i = next+1;
	 while(c.charCodeAt(i)==32) i++;
	 
	 if(i>=c.length)
		break;
	}
 
 return dflt;
}

var EU_MEMBERS = "be,bg,cz,dk,de,ee,ie,es,fr,gr,it,cy,lv,lt,lu,hu,mt,nl,at,pl,pt,ro,si,sk,fi,se,gb";

function set_country(cc)
{
 if(EU_MEMBERS.search(cc) != -1)
   {
    var vat_reg = get_persistent_string("country", "").substr(2);
    cc += vat_reg;
    document.getElementById("vat_cb").style.display = '';
    document.getElementById("vat_reg_info").firstChild.checked = (vat_reg=="*");
   }
 else
   {
    document.getElementById("vat_cb").style.display = 'none';
    document.getElementById("vat_reg_info").firstChild.checked = false;
   }

 set_persistent_string("country", cc, 0);

 var vat_id_field = document.getElementById("vat_id");
 if(vat_id_field!==null)
    vat_id_field.value = "";

 window.location.reload();
}

function update_vat_reg()
{
 var cc = get_persistent_string("country", "");
 cc = cc.substr(0, 2);
 if(document.getElementById("vat_reg_info").firstChild.checked)
    cc += "*";
 set_persistent_string("country", cc, 0);
 
 var vat_id_field = document.getElementById("vat_id");
 if(vat_id_field!==null)
    vat_id_field.value = "";

 window.location.reload();
}

function find_node(root, tagname, id)
{
 var list = root.getElementsByTagName(tagname);
 var ll = list.length;
 for(var i=0; i<ll; i++)
    {
     if(list.item(i).id==id)
        return list.item(i);
     if(list.item(i).className==id)
        return list.item(i);
    }
 return null;
}

function tidy_number2(n)
{
 n = Math.round(100*n)/100;
 s = n.toFixed(2);
 var i = s.indexOf(".");
 for(;;)
    {
     i -= 3;
     if(i<=0)
        break;
     s = s.substr(0, i)+" "+s.substr(i);
    }
 return s;
}

function shc_upd_item(pcode, count)
{
 var shcstr = get_persistent_string("shcart", "");

 var l = pcode.length;
 
 var i = 0;
 for(;;)
    {
     var cln = shcstr.indexOf("%3A", i);
     if(cln<0)
        return;
        
     var next = shcstr.indexOf("%2C", i);
     
     if(shcstr.substring(i, cln)==pcode)
       {
        cln+=3;
        if(next<0)
           shcstr = shcstr.substr(0, cln)+count;
        else
           shcstr = shcstr.substr(0, cln)+count+shcstr.substr(next);
        break;
       }
       
     if(next<0)
        return;
        
     i = next+3;
    }
    
 set_persistent_string("shcart", shcstr, 1);
}

function shc_update(shc)
{
 if(shc === null)
   {
    shc = find_node(document, "table", "shc_table");
    if(shc === null)
       return;
   }
 else
   {
    var val = shc.value;
    
    while(shc.className!="shc_table")
         {
          shc = shc.parentNode;
          if(shc === null)
             return;
          if(shc.className=="shc_row" && shc.id!="" && val!="" && !/[^0-9]/.test(val))
            {
             shc_upd_item(shc.id, val);
            }
         }
   }
 
 var total = 0;
 var rc = shc.rows.length;
 for(var i=0; i<rc; i++)
    {
     var row = shc.rows.item(i);
     
     if(row.className=="shc_row")
       {
        var qty = 0;
        var price = 0;
   
        var inode = find_node(row, "input", "shc_qty"); 
        if(inode !== null)
          {
           var p = parseFloat(inode.getAttribute("unit_price"));
           if(!isNaN(p) && !/[^0-9]/.test(inode.value))
             {
              qty = Number(inode.value);
              if(isNaN(qty))
                 qty = 0;
              price = p;
             }
          }
           
        price *= qty;
        total += price;
        
        var anode = find_node(row, "span", "shc_amount");
        anode.innerHTML = tidy_number2(price);
        
        var ev_node = find_node(row, "span", "shc_ex_vat");
        if(ev_node !== null)
          {
           price /= 1+VAT_CZ;
           ev_node.innerHTML = tidy_number2(price);
          }
       }
     else if(row.className=="shc_footer")
       {
        var anode = find_node(row, "span", "shc_amount");
        anode.innerHTML = tidy_number2(total);

        var ev_node = find_node(row, "span", "shc_ex_vat");
        if(ev_node !== null)
          {
           total /= 1+VAT_CZ;
           ev_node.innerHTML = tidy_number2(total);
          }
          
        break;
       }
    }
}

var vat_http_request;
var last_vat_id;
var vat_verify_status=0; 

function shc_validate(form, msg)
{
 shc = find_node(form, "table", "shc_table");
 if(shc === null)
    return false;
 
 var rc = shc.rows.length;
 for(var i=0; i<rc; i++)
    {
     var row = shc.rows.item(i);
     
     if(row.className=="shc_row")
       {
        var inode = find_node(row, "input", "shc_qty"); 
        if(inode !== null)
          {
           if(inode.value=="" || /[^0-9]/.test(inode.value))
             {
              alert(msg);
              inode.focus();
              return false;
             }
          }
       }
    }
 
 var cc;
 
 var node = document.getElementById("country");
 cc = node.value;
 if(cc=="")
   {
    alert(node.getAttribute("err_msg"));
    node.focus();
    return false;
   }
   
 if(EU_MEMBERS.search(cc) != -1)
   {
    node = document.getElementById("vat_reg");
    if(node.checked)
      {
       node = document.getElementById("vat_id");
       if(node.value=="" || node.value!=last_vat_id)
         {
          alert(node.getAttribute("err_msg"));
          node.focus();
          return false;
         }
       if(vat_verify_status!=1)
         {
          node = document.getElementById("vat_confirm_cb");
          if(!node.checked)
            {
             alert(node.getAttribute("err_msg"));
             node.focus();
             return false;
            }
         }
      }
   }
 
 node = document.getElementById("company_cb");
 if(node.checked)
   {
    node = document.getElementById("company");
    if(node.value=="")
      {
       alert(node.getAttribute("err_msg"));
       node.focus();
       return false;
      }
   }
 else
   {
    node = document.getElementById("first_name");
    if(node.value=="")
      {
       alert(node.getAttribute("err_msg"));
       node.focus();
       return false;
      }
    node = document.getElementById("last_name");
    if(node.value=="")
      {
       alert(node.getAttribute("err_msg"));
       node.focus();
       return false;
      }
   }

 node = document.getElementById("address1");
 if(node.value=="")
   {
    alert(node.getAttribute("err_msg"));
    node.focus();
    return false;
   }
   
 node = document.getElementById("city");
 if(node.value=="")
   {
    alert(node.getAttribute("err_msg"));
    node.focus();
    return false;
   }
   
 node = document.getElementById("email");
 if(node.value.search("@")==-1 || node.value.length<6)
   {
    alert(node.getAttribute("err_msg"));
    node.focus();
    return false;
   }
 
 var d = new Date;
 document.getElementById("timestamp").value = d.toUTCString();
 
 return true;
}

function create_http_request()
{
 if(window.XMLHttpRequest) 
    return new window.XMLHttpRequest;
 else 
   {
    try {return new ActiveXObject("MSXML2.XMLHTTP.3.0");}
    catch(ex) {return null;}
   }
 return null; 
}

function vat_req_handler()
{
 if(vat_http_request.readyState == 4) 
   {
    document.getElementById("vat_loading").style.display = "none";
    document.getElementById("vat_confirm_cb").checked = false;
    
    vat_verify_status = -1;
    
    if(vat_http_request.status == 200) 
      {
       var result = vat_http_request.responseText;
       
       if(result.indexOf("@VAT_valid")!=-1)
         {
          vat_verify_status = 1;
          
          var info_idx = result.indexOf("@info:");
          if(info_idx!=-1)
            {
             info_idx += 6;
             var info;
             var ei_idx = result.indexOf("@", info_idx);
             if(ei_idx>0)
                info = result.substring(info_idx, ei_idx);
             else
                info = result.substring(info_idx);
             document.getElementById("vat_info").innerHTML = info;
            }
          document.getElementById("vat_valid").style.display = "";
         }
       else if(result.indexOf("@VAT_invalid")!=-1)
         {
          document.getElementById("vat_format").style.display = "";
          document.getElementById("vat_invalid").style.display = "";
          document.getElementById("vat_confirm").style.display = "";
         }
       else
         {
          document.getElementById("vat_format").style.display = "";
          document.getElementById("vat_err_msg").innerHTML = "<br/>Error message: "+result+"<br/>";
          document.getElementById("vat_error").style.display = "";
          document.getElementById("vat_confirm").style.display = "";
         }
      }
    else
      {
       document.getElementById("vat_format").style.display = "";
       document.getElementById("vat_err_msg").innerHTML = " (HTTP error code: "+vat_http_request.status+")";
       document.getElementById("vat_error").style.display = "";
       document.getElementById("vat_confirm").style.display = "";
      }
   } 
}

function check_vat_id(node)
{
 document.getElementById("vat_format").style.display = "none";
 document.getElementById("vat_valid").style.display = "none";
 document.getElementById("vat_invalid").style.display = "none";
 document.getElementById("vat_error").style.display = "none";
 document.getElementById("vat_confirm").style.display = "none";
 document.getElementById("vat_confirm_cb").checked = false;
 document.getElementById("vat_info").innerHTML = "";
 document.getElementById("vat_err_msg").innerHTML = "";
 
 var vat_id = node.value;
 last_vat_id = vat_id;
 vat_verify_status = 0;
 
 if(vat_id=="")
   {
    document.getElementById("vat_format").style.display = "";
    document.getElementById("vat_loading").style.display = "none";
    return;
   }
 
 var cc = node.getAttribute("vat_prefix");
 
 if(vat_http_request!=null)
    vat_http_request.abort();
 else
    vat_http_request = create_http_request();
 
 if(vat_http_request!=null)
   {
    vat_http_request.open("GET", "/sfairadora/get_vat_info.php?cc="+cc+"&vatid="+vat_id, true);
    vat_http_request.onreadystatechange = vat_req_handler;
    vat_http_request.send();
    document.getElementById("vat_loading").style.display = "";
   }
 else
   {
    document.getElementById("vat_loading").style.display = "none";
    document.getElementById("vat_confirm_cb").checked = false;
    document.getElementById("vat_format").style.display = "";
    document.getElementById("vat_err_msg").innerHTML = " (The browser scripts do not support HTTP requests)";
    document.getElementById("vat_error").style.display = "";
    document.getElementById("vat_confirm").style.display = "";
   }
}

function vat_id_changed(node)
{
 if(vat_http_request!=null)
    vat_http_request.abort();
    
 document.getElementById("vat_loading").style.display = "none";
 document.getElementById("vat_format").style.display = "";
 document.getElementById("vat_valid").style.display = "none";
 document.getElementById("vat_invalid").style.display = "none";
 document.getElementById("vat_error").style.display = "none";
 document.getElementById("vat_confirm").style.display = "none";
 document.getElementById("vat_confirm_cb").checked = false;
 document.getElementById("vat_info").innerHTML = "";
 document.getElementById("vat_err_msg").innerHTML = "";
}

function binfo_update()
{
 var company_cb = document.getElementById("company_cb");
 if(company_cb.checked)
   {
    document.getElementById("binfo_pr1").style.display = "none";
    document.getElementById("binfo_pr2").style.display = "none";
    document.getElementById("binfo_cr1").style.display = "";
    document.getElementById("binfo_cr2").style.display = "";
    document.getElementById("binfo_cr3").style.display = "";
   }
 else
   {
    document.getElementById("binfo_pr1").style.display = "";
    document.getElementById("binfo_pr2").style.display = "";
    document.getElementById("binfo_cr1").style.display = "none";
    document.getElementById("binfo_cr2").style.display = "none";
    document.getElementById("binfo_cr3").style.display = "none";
   }

 if(document.getElementById("vat_reg").checked)
   {
    var vat_id_field = document.getElementById("vat_id");
    if(vat_id_field.value != last_vat_id)
       check_vat_id(vat_id_field);
   }
}

function subst_email_str(s)
{
 if(!s) return;
 s = s.replace("eeml:", "mailto:");
 s = s.replace("eskp", "skipe:");
 s = s.replace("[a]", "@");
 s = s.replace("-cz", ".cz");
 s = s.replace("-eu", ".eu");
 s = s.replace("-com", ".com");
 return s;
}

function subst_emails()
{
 var alist = document.getElementsByTagName("a");
 for(var i=0; i<alist.length; i++)
	{
	 var a = alist[i];
	 if(a.href.indexOf("eeml:")!=-1 || a.href.indexOf("eskp:")!=-1)
	   {
		a.href = subst_email_str(a.href);
		a.innerHTML = subst_email_str(a.innerHTML);
	   }
	}
}

