// JavaScript Document

document.aj_price_url = "http://www.folders4u.co.uk/priceserve.php";


/* ************************************************* Pricetable Functions ********************************************* */

// get price table
function PC_getStartTable(prod_code, params){
  if (!params) params = new Object();
  aj_setHandler("pricetabhandler", document.aj_price_url, true);
  var ta = document.getElementById("PC_pricetable");
  var fo = document.getElementById("PC_priceform");
  var ct = document.getElementById("PC_clickto");  
  var pf = document.getElementById("PC_footer");    
  var bt = document.getElementById("PC_order_button");
  var ud = document.getElementById("PC_updating");    
  if (ta){
    pos = new Array(ta.offsetLeft, ta.offsetTop);
	var wh = new Array(ta.offsetWidth, ta.offsetHeight);
  }	
  if (fo) fo.style.visibility="hidden";
  if (ct) ct.style.visibility="hidden";
  if (bt) bt.style.visibility="hidden";  
  if (pf) pf.style.visibility="hidden";
  if (ta && ud){
    ud.style.left = pos[0]+"px";
	ud.style.top = pos[1]+"px";
	ud.style.width = wh[0]+"px";
	ud.style.height = wh[1]+"px";
	ud.style.position = "absolute";
  }	
  if (ud) ud.style.display="block";
  params['PC_prod_code'] = prod_code;
  aj_startHandler("pricetabhandler", "getPrices", "PC_gotPriceTable", params);  
}

// got price table
function PC_gotPriceTable(){
  var lines=aj_getResponseLines("pricetabhandler");
  if (lines[0]=="") alert(lines.join("|"));
  if (lines[0]=="Error"){
    alert(aj_getResponse("pricetabhandler"));
	return;
  }
  var htm = "";
  for (var i=1; i<lines.length; i++) htm += lines[i]+"\r\n";

  var di = document.getElementById("PC_price_div");
  if (di) di.innerHTML = htm;
  else alert("Can't find it, div!");
  if (htm=="") alert("No HTM: "+lines[0]);
}

// update table from selectors
function PC_update_table(){
  var pform = document.getElementById('PC_priceform');

  // get selector values  
  var sels = pform.getElementsByTagName("SELECT");
  var params = new Object();
  for (var i=0; i<sels.length; i++){    
    var sel = sels[i];
	params[sel.name] = sel.value;
  }	

  // get input values (hidden)
  var ips = pform.getElementsByTagName("INPUT");
  for (var i=0; i<ips.length; i++) params[ips[i].name] = ips[i].value;
  
  // do the update
  PC_getStartTable(params['PC_prod_code'], params);
}


/* ************************************************* Pricetable Selections ********************************************* */

// select row
function PC_selrow(rowmember){
    var row = rowmember.parentNode;
	if (row.tagName!="TR") alert("Wrong type! : " + row.tagName);
	PC_flipsel(row);
    PC_showhidebutton(rowmember);	
}

// select column
function PC_selcol(colmember){
	cleft = colmember.offsetLeft;
	cright = colmember.offsetLeft + colmember.offsetWidth;
	var row = colmember.parentNode;
	var bod = row.parentNode;
	for (var i in bod.childNodes){
	    var rowel = bod.childNodes[i];
	    for (var j in rowel.childNodes){
		    var el = rowel.childNodes[j];
			var elleft = el.offsetLeft;
			var elright = elleft + el.offsetWidth;
			if (elleft >= cleft && elright <= cright) PC_flipsel(el);
		}
	}	
    PC_showhidebutton(colmember);	
}

// clear table selection
function PC_clearsel(cell){
    var row = cell.parentNode;
	var bod = row.parentNode;
	for (var i in bod.childNodes){
	    var rowel = bod.childNodes[i];
		if (!rowel.tagName) continue;
		if (rowel.className.indexOf("_sel")!=-1) rowel.className = rowel.className.replace(/_sel$/g, "");
		
	    for (var j in rowel.childNodes){
		    var el = rowel.childNodes[j];
			if (!el.tagName) continue;
			if (el.className.indexOf("_sel")!=-1) el.className = el.className.replace(/_sel$/g, "");
		}
	}		
    PC_showhidebutton(cell);	
}

// select price entry
function PC_sel(cell){
    var issel = (cell.className.indexOf("_sel")!=-1) && (cell.parentNode.className.indexOf("_sel")!=-1);  // col and row selected
    PC_clearsel(cell);  // clear selection
	document.PC_sel_options = false;
	document.PC_sel_qty = false;	
	if (!issel) {       // make new selection if not currently selected
      PC_selcol(cell);
	  PC_selrow(cell);
    }		
    PC_showhidebutton(cell);
}

function PC_showhidebutton(element){
    var count = PC_count_selected_cells(element);
    var butvis = (count==1)? "block" : "none";
	var pvis = (count==1)? "hidden" : "visible";
    document.getElementById("PC_clickto").style.visibility=pvis;
    document.getElementById("PC_order_button").style.display=butvis;	
}

// flip selection on an element
function PC_flipsel(element){
	var cn = element.className;
	if (cn.indexOf("_sel")!=-1) cn = cn.replace(/_sel$/g, "");
	else cn += "_sel";
	element.className = cn;    
}

// counts number of selected cells
function PC_count_selected_cells(element){
    var trow = element.parentNode;
	var tbod = trow.parentNode;
	var count = 0;
	var lastel = false;
	for (var i in tbod.childNodes){
	  var row = tbod.childNodes[i];
	  if (row.tagName!="TR") continue;	  
	  if (row.className.indexOf("_sel")==-1) continue;
	  for (var j in row.childNodes){	      
	      var el = row.childNodes[j];
		  if (el.tagName!="TD") continue;
		  if (el.className.indexOf("_sel")!=-1) { count++; lastel = el; }
	  }
	}
	// execute javascript options selection
    document.PC_sel_qty = false;		
	if (count==1) {
	    var ip = lastel.getElementsByTagName("INPUT");
		ip = ip[0];
		eval(ip.value);		
	    // get qty
	    var row = lastel.parentNode;
	    var th = row.getElementsByTagName("TH");
        var th = th[0];
	    var qty = th.innerHTML;
	    document.getElementById("PC_qty").value = qty;
        document.PC_sel_qty = qty;		
	}
	return count;	
}


/* ************************************************* Submit options ********************************************* */

// sets the table option to the form
function PC_setOption(num, name, val){
	document.getElementById("PC_tabop_"+name).value=val;
}

// submits the order
function PC_order(){
    document.getElementById("PC_priceform").submit();
}
