

// onload()
//   find apologytext and replace with button

// on activation:
//   read available items
//   find items on page
//   make frame
//   enter name and e-mail fields
//   enter provided items on page
//   show already selected items

// on change -> change cookie

// on send -> create request thingy
//[F9 scp shop.js surfinia:/home/devam3/site/production/woot/styles ]
//[F10 scp shop.js surfinia:/home/am3/site/production/zodd/styles 2>/dev/null]

/*--------------------------------------------------------*/
/* Cookie functions					  */
/*--------------------------------------------------------*/


function createCookie(name,value,days) {
    if (days) {
	    var date = new Date();
	    date.setTime(date.getTime()+(days*24*60*60*1000));
	    var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
	    var c = ca[i];
	    while (c.charAt(0)==' ') c = c.substring(1,c.length);
	    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

/*--------------------------------------------------------*/
/*Trim function                                           */
if(! String.prototype.trim){
 String.prototype.trim = function(){ return this.replace(/^\s+|\s+$/g,''); }
}

String.prototype.isEmail = function () { var rx = new RegExp("\\w+([-+.\’]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*"); var matches = rx.exec(this); return (matches != null && this == matches[0]); }
/*--------------------------------------------------------*/
/*readEmbeddedData                                        */
/*--------------------------------------------------------*/

function readEmbeddedData(el){
 var dlist= new Object();
 dlist.byname=new Array();
 dlist.list=new Array();
 shops[0]=new Object();
 shops[0].items=new Array();
 var pt=el.innerHTML.replace(/<(\w+)/g,function(nix,nax){return "<"+nax.toLowerCase()}).replace(/&nbsp;/g," ");
 var ar=pt.split("<h1>")
 for(var i=1;i<ar.length;i++){
   var n;
   var artikel=ar[i];
   var art=new Object();
   artikel=artikel.split(/<\/h1>/i);
   art.name=artikel[0].replace(/<.*>/g,"").trim().toUpperCase();

   artikel=artikel[1].replace(/<br/i," <br").split(/<br\s*\/*>/i);
   for(;0<artikel.length;){
     var dline=artikel.shift();
     dline=dline.replace(/\n/g,"");
     var fields=dline.split(":");
     if(fields.length>1){
       if(fields[0].match(/beschrijving/i)){
	 art.beschrijving=artikel.join("<br />")
	 //remove last <br />
         art.beschrijving=art.beschrijving.replace(/(\s*\<br \/\>\s*)*$/,"")
	 artikel=[];    
       }else{
	 fieldname=fields.shift().toLowerCase().trim();

	 art[fieldname]=fields.join(":").trim();
       }
     }
   }
   dlist.byname[art.name]=art;
   dlist.list.push(art);
   shops[0].items.push(art.name);

 }
 return dlist;
}

var catalog=0;
function getCatalog(){
  if(!catalog){
    catalog=readEmbeddedData(document.getElementById("catalog"));
  }
}

var cart=0;


var shops=new Array();

function shopload(){
  setTimeout("shopinit()",100);
}

function openshop(button){
  if(button==0){
    button=document.getElementById("bestelformulier");
  }else{
    if(button.style.display == 'none'){
      return
    }
  }
  getCatalog();

  var n;
  for(n=0;n<catalog.list.length;n++){
    catalog.list[n].shown=0;
  }

  

  button.style.display="none";
   
//  var el=button.el;
  var el=document.getElementById("shopwindow");
  if(el.showing){
    return;
  }
  el.showing=true;
  var shop=shops[button.shopid];
//  $(el).hide();
  //make table
  var toble=document.createElement("TABLE");
  $(el).hide();
//  el.innerHTML='';
  var tbody=document.createElement("TBODY");
  tbody.className="shopbody";
  el.appendChild(toble);
  toble.appendChild(tbody);
  table=tbody;
  toble.className="shoptable";
  toble.cellSpacing=0;
  toble.cellPadding=0;


  var row,col,inp;
  
  //toprow met beschrijving bestelvenster
  row=document.createElement("TR");
  table.appendChild(row);
  col=document.createElement("TD");
  col.className="shoptoprow";
  //col.colSpan=4;
  col.colSpan=4;
  row.appendChild(col);
  col.innerHTML="Opgaveformulier";


  //Naam invoerveld

  row=document.createElement("TR");
  table.appendChild(row);
  col=document.createElement("TD");
  col.setAttribute("valign","top");
  //col.colSpan=2;
  col.colSpan=2;
  col.innerHTML="Naam:";
  col.className="shoplabel";
  row.appendChild(col);
  col=document.createElement("TD");
  col.setAttribute("valign","top");
  col.colSpan=2;

  inp=document.createElement("INPUT");
  inp.value=cart.naam;
  inp.className="shopinput";
  inp.onchange=function(){
    cart.naam=this.value.trim();
    this.value=cart.naam;
    saveCart()

  }
  col.appendChild(inp);


  row.appendChild(col);


  //email adres invoerveld

  row=document.createElement("TR");
  table.appendChild(row);
  col=document.createElement("TD");
  col.setAttribute("valign","top");
  col.colSpan=2;
  col.innerHTML="Email:";
  col.className="shoplabel";
  row.appendChild(col);
  col=document.createElement("TD");
  col.setAttribute("valign","top");
  col.colSpan=2;

  inp=document.createElement("INPUT");
  inp.value=cart.email;
  inp.className="shopinput";
  inp.onchange=function(){
    cart.email=this.value.trim();
    this.value=cart.email;
    saveCart();
  }
  col.appendChild(inp);
  row.appendChild(col);

  row=document.createElement("TR");
  table.appendChild(row);
  col=document.createElement("TD");
  col.setAttribute("valign","top");
  inp=document.createElement("INPUT");
  inp.setAttribute("type","checkbox");
  col.appendChild(inp);
  row.appendChild(col);
  if(cart.orders['NIEUWSBRIEF']=="jawel"){
    inp.checked=true;
  }
  inp.onchange=function(){
    if(this.checked){
      cart.orders["NIEUWSBRIEF"]="jawel";     
    }else{
      if("NIEUWSBRIEF" in cart.orders){
	delete cart.orders["NIEUWSBRIEF"];
      }
    }
    saveCart();
  }

  col=document.createElement("TD");
  col.setAttribute("valign","top");
  col.colSpan=3;
  col.innerHTML="Stuur mij de nieuwsbrief";
  row.appendChild(col);


  row=document.createElement("TR");
  table.appendChild(row);

   col=document.createElement("TD");
   col.setAttribute("valign","top");
   col.colSpan=4;
   var but;
   but=document.createElement("BUTTON");
   but.innerHTML="Bevestig";
   but.className="shopbutton";
   but.onclick=function(){
     if(!cart.email.isEmail()){
       if(!confirm("Volgens mij is dit geen geldig e-mail adres, maar ik kan het mis hebben. Wil je toch doorgaan?")){
         return;
       }
     }
     if(!cart.naam.match(/\s+/)){
       if(!confirm("Volgens mij heb je alleen een voor of achternaam opgegeven. Ik vind het fijn om beide te hebben. Wil je toch doorgaan?")){
	 return;
       }
     }
     var url="/am/lipwig.cgi?" + "naam=" + encodeURI(cart.naam) +
     					     "&email=" +encodeURI(cart.email)+
					     "&order=";
     var nix=1;
     
     for(var i in cart.orders){
       if(cart.orders[i]=="jawel"){
	 if(nix==0){
	   url=url + encodeURI("," +i);
	 }else{
	   nix=0;
	   url=url + encodeURI(i);
	 }
       }
     }
     if(nix){
       alert("Eh, volgens mij heb je nog niets aangevinkt... (of ik doe iets verkeerd)");
       return;
     }
     cart.stat="submitting";
     saveCart();
     window.location.href=url;
   }
   col.appendChild(but);
  but=document.createElement("BUTTON");
  but.innerHTML="Wissen";
  but.className="shopbutton";
  but.onclick=function(){
    if(confirm("Weet je het zeker?")){
      cart.naam="";
      cart.email="";
      cart.orders={"NIEUWSBRIEF":"jawel"};
      saveCart();
      shopinit();
    }
  }
  col.appendChild(but);


  row.appendChild(col);
  //de items
  var n;
  for(n=0;n<shop.items.length;n++){
    if(! catalog.byname[shop.items[n]]){
      row=document.createElement("TR");
      table.appendChild(row);
      col=document.createElement("TD");
      col.setAttribute("valign","top");
      row.appendChild(col);
      col.innerHTML="<small><small>Oeps, deze cursus bestaat niet...</small></small>"
      col.colSpan=4;
      alert("Bestaat niet");
      continue;
    }
  
  var artikel=catalog.byname[shop.items[n]];
  artikel.shown=1;
  row=document.createElement("TR");
  table.appendChild(row);

  col=document.createElement("TD");
  col.setAttribute("valign","top");
  col.colSpan=4;
  col.className="shopcursusnaam";
  col.innerHTML=artikel.titel || artikel.title ;
  row.appendChild(col);
   
  row=document.createElement("TR");
  table.appendChild(row);

  // het vinkje
  col=document.createElement("TD");
  col.setAttribute("valign","top");
  row.appendChild(col);

  inp=document.createElement("input");
  inp.setAttribute("type","checkbox");
  col.appendChild(inp);
  inp.artikel=shop.items[n];
  if(cart.orders[inp.artikel]=="jawel"){
    inp.checked=true;
  }
  inp.onchange=function(){
    if(this.checked){
      cart.orders[this.artikel]="jawel";     

    }else{
      if(this.artikel in cart.orders){
	delete cart.orders[this.artikel];
      }
    }

    saveCart();
  }
      
  col=document.createElement("TD");
  col.setAttribute("valign","top");
  row.appendChild(col);
  col.innerHTML=artikel.datum || "";


  col=document.createElement("TD");
  col.setAttribute("valign","top");
  row.appendChild(col);
  col.innerHTML=artikel.prijs || "prijs onbekend";
  col.style.textAlign="right";


  col=document.createElement("TD");
  col.setAttribute("valign","top");
  row.appendChild(col);
  col.innerHTML=artikel.beschrijving || "Geen beschrijving";

  }
  var first=1;
  for(var i in cart.orders){
    if(cart.orders[i]=="jawel"){
      if(catalog.byname[i] &&
	catalog.byname[i].shown==0){
	if(first){
	  first=0;
	  row=document.createElement("TR");
	  table.appendChild(row);
	  row.className="shoptoprow";
	  td=document.createElement("TD");
	  td.setAttribute("colspan","4");
	  row.appendChild(td);
	  td.innerHTML="Reeds in mandje:";
	}
	artikel=catalog.byname[i];

  row=document.createElement("TR");
  table.appendChild(row);

  col=document.createElement("TD");
  col.setAttribute("valign","top");
  col.colSpan=4;
  col.innerHTML=artikel.titel || artikel.title ;
  row.appendChild(col);
   
  row=document.createElement("TR");
  table.appendChild(row);

  // het vinkje
  col=document.createElement("TD");
  col.setAttribute("valign","top");
  row.appendChild(col);

  inp=document.createElement("INPUT");
  inp.setAttribute("type","checkbox");
  inp.artikel=i;
  inp.checked=true;
  inp.onchange=function(){
    if(this.checked){
      cart.orders[this.artikel]="jawel";     
    }else{
      if(this.artikel in cart.orders){
	delete cart.orders[this.artikel];
      }
    }
    saveCart();
  }
  col.appendChild(inp);
  col=document.createElement("TD");
  col.setAttribute("valign","top");
  row.appendChild(col);
  col.innerHTML=artikel.datum || "";


  col=document.createElement("TD");
  col.setAttribute("valign","top");
  row.appendChild(col);
  col.innerHTML=artikel.prijs || "prijs onbekend";
  col.style.textAlign="right";


  col=document.createElement("TD");
  col.setAttribute("valign","top");
  row.appendChild(col);
  col.innerHTML=artikel.beschrijving || "Geen beschrijving";


      }
    }
  }
  row=document.createElement("TR");
  table.appendChild(row);
  col=document.createElement("TD");
  row.appendChild(col);
  col.colSpan=4;
  col.className="shoponhint";
  col.appendChild(document.createTextNode("Je kunt gerust verder kijken op de site, de inhoud van dit formulier blijft bewaard"))
  row=document.createElement("TR");
  table.appendChild(row);
  col=document.createElement("TD");
  row.appendChild(col);
  col.colSpan=4;
  col.className="shopbottomrow";


  $(el).show("slow",function(){
  scrollTo(0,$(el).offset().top);
  });
  scrollTo(0,$(el).offset().top);
}

function saveCart(){
  createCookie('cart',$.toJSON(cart),3);
}
function shopinit(){
  var n;

  var carttext=readCookie("cart");
  if(carttext){
    cart=$.evalJSON(carttext);
  }else{
    cart=new Object();
    cart.naam="";
    cart.email="";
    cart.stat="pristine";
    cart.orders={"NIEUWSBRIEF":"jawel"};
    createCookie('cart',$.toJSON(cart),3);
  }



  var shopels=new Array();
  shopels=document.getElementsByName('shopwindow');
  if(shopels){
    for( n=0;n<shopels.length;n++){
      var el=shopels[n];
      el.innerHTML="";
      el.showing=false;
      el.style.visibility="visible";
      var button=document.createElement('button');
      button.className="shopopenbutton";
      button.appendChild(document.createTextNode("Opgaveformulier"));
      button.id="bestelformulier";
      button.shopid=n;
      button.el=el;
      button.onclick=function(){
	openshop(this);
      }
      el.appendChild(button);
    }
  }
 if(0){
  $("#content").append("<textarea id='daboog' rows=5 cols=70> </textarea><br /><input id='cmndlne' size=80 />");
  $("#cmndlne").bind("keypress",function(e){
    if(e.which == 13){
      var daboog;
      try{
      daboog=eval($('#cmndlne').val())
      }catch(e){
	daboog=e.toString();
      }
      $('#daboog').val(daboog);
    }
  });
 }
}




