
var PHP = new Object();  // global to place data going to/from php
var optLoad = 0;

function brainkrash_wddx_deserialize()
{
  var MyWDDX = new WddxDeserializer;
  MyWDDX.preserveVarCase = true;
  PHP = MyWDDX.deserialize(getDocumentObject("JS_WDDX").value);
}

function brainkrash_wddx_serialize()
{
  MyWDDX = new WddxSerializer();
  wddxPacket = MyWDDX.serialize(PHP);

  if (wddxPacket != null)
  {
    getDocumentObject("PHP_WDDX").value = wddxPacket;
  }
  else
    alert("Couldn't wddx serialize data");
}

/* Function that handles the breadcrumb navigation. */
function breadCrumbs(base, delStr, defp, cStyle, tStyle, dStyle, nl)
{
  loc = window.location.toString();
  subs = loc.substr(loc.indexOf(base) + base.length - 1).split("/");
  document.write("<a href=\"" + getLoc(subs.length - 1) + defp + "\" class=\"" + cStyle + "\">Home</a>  " + "<span class=\"" + dStyle + "\">" + delStr + "</span> ");
  a = (loc.indexOf(defp) == -1) ? 1 : 2;

  for (i = 0; i < (subs.length - a); i++)
  {
    if (subs[i].indexOf("?") > 0)
      subs[i] = subs[i].substr(0, subs[i].indexOf("?"));

    if (subs[i].indexOf(".") > 0)
      subs[i] = subs[i].substr(0, subs[i].indexOf("."));

    subs[i] = makeCaps(unescape(subs[i]));
    document.write("<a href=\"" + getLoc(subs.length - i - 2) + defp + "\" class=\"" + cStyle + "\">" + subs[i] + "</a>  " + "<span class=\"" + dStyle + "\">" + delStr + "</span> ");
  }

  if (nl == 1)
      document.write("<br>");

  document.write("<span class=\"" + tStyle + "\">" + document.title + "</span>");
}

function go(where) {
  /* A javascript method for posting the page the a new location */
  document.forms[0].action=where;
  document.forms[0].method="POST";
  document.forms[0].submit();
}

function goGet(where) {
    document.location.href = where;
}

function smartWindow(html, restricted, width, height, centered)
{
  var agt        = navigator.userAgent.toLowerCase();
  var is_major   = parseInt(navigator.appVersion);
  var is_minor   = parseFloat(navigator.appVersion);
  var is_nav     = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1)
                   && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1)
                   && (agt.indexOf('webtv')==-1));
  var is_nav3    = (is_nav && (is_major == 3));
  var is_nav4up  = (is_nav && (is_major >= 4));
  var is_navonly = (is_nav && ((agt.indexOf(";nav") != -1) || (agt.indexOf("; nav") != -1)) );
  var is_ie      = (agt.indexOf("msie") != -1);
  var is_ie3     = (is_ie && (is_major < 4));
  var is_ie4     = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")==-1) );
  var is_ie4up   = (is_ie  && (is_major >= 4));
  var is_ie5     = (is_ie && (is_major == 4) && (agt.indexOf("msie 5.0")!=-1) );
  var is_ie5up   = (is_ie  && !is_ie3 && !is_ie4);
  var is_aol     = (agt.indexOf("aol") != -1);
  var is_aol3    = (is_aol && is_ie3);
  var is_aol4    = (is_aol && is_ie4);
  var now  = new Date();
  var winname = now.getTime();
  var winParams = "";
  var left = Math.floor( (screen.width - width) / 2);
  var top = Math.floor( (screen.height - height) / 2);    
  
  if (width > 0)
    winParams += "width="+width+",";

  if (height > 0)
    winParams += "height="+height+","

  if (restricted == true)
    winParams +="scrollbars=no,resizable=no,";
    
  if (centered == true)
    winParams += "left="+left+","+"top="+top+",";  
    
  if (winParams.charAt(winParams.length-1) == ',')
    winParams = winParams.substring(0, winParams.length-1);
    
  if (html.substr(0,14) == "http://http://")
    html = html.substr(7);
      
  if (is_nav3 || is_nav4up)  {
    win1 = window.open(html,""+winname, winParams)
    win1.focus()
  }
  else if (is_ie4up) {
    win1 = window.open(html,""+winname, winParams)
    win1.focus()
  }
  else
    window.open(html,""+winname, winParams);
}

function makeRemote(where) {
  remote = window.open("","","width=322,height=242,scrollbars=no");
  remote.location.href = where;
}

function deleteItem(dtype, dname) {
  return(confirm('Are you sure you want to delete the '+dtype+', '+dname+'?  Press OK to delete.'));
}

function getDocumentObject(id) {
  if (document.all) {
    return(document.all.item(id));
  } else if (document.getElementById) {
    return(document.getElementById(id));
  } else if (document.layers) {
    return(eval("document."+id));
  } else {
    return null;
  }
}

/** GENERIC IMAGE ROLLOVER FUNCTIONS **/

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function popt_fill(nIndex, controlid, defID) {
  var sel = getDocumentObject(nIndex+"-OPT_"+controlid);
  
  if (sel && PHP.opts[controlid] && sel.type != "hidden") {
    sel.options.length = 0;  //clear
    
    var pos = controlid.lastIndexOf('_');
    if (pos == -1) { // root
      var parent_data = 0;
    } else {
      var parent = getDocumentObject(nIndex+"-OPT_"+controlid.substring(0, pos));
      if (parent) {
        var parent_data = parent.value;
      }
    }
    
    if (PHP.opts[controlid].values[parent_data]) {
      var i = 0;
      for (var x in PHP.opts[controlid].values[parent_data]) {
        sel.options[sel.options.length] = new Option(PHP.opts[controlid].values[parent_data][x], x);
        
        if (x != defID) {
          i=i+1;
        } else {
          sel.options.selectedIndex = i;
        }
      }
      
      popt_change(sel);
    }   
  }
}

function color_fill(nIndex, controlid) {

  var pos = controlid.lastIndexOf('_');
  if (pos == -1) { // root
    var parent_data = 0;
  } else {
    var parent = getDocumentObject(nIndex+"-OPT_"+controlid.substring(0, pos));
    if (parent) {
      var parent_data = parent.value;
    }
  }
  
  if (PHP.opts[controlid].values[parent_data]) {
    colors = "";
    for (var x in PHP.opts[controlid].values[parent_data]) {
      var color = PHP.opts[controlid].values[parent_data][x].toLowerCase();
      colors = colors + color.split(" (")[0] + ",";
    }

    colors = colors.substring(0,colors.length-1);
    
    if (window.reloadColors) {
      reloadColors();
    }
  }
}

function popt_init(fname, defID) {
  var form = getDocumentObject(fname);
  optLoad = 1;

  for (x=0; x < form.length; x++) {
    var cname = form.elements[x].name;
    if (cname.indexOf('-OPT_') != -1) {
      var splitid = cname.split("_");
      var cindex = parseInt(cname.split("-")[0]);
      var pid = splitid[1];

      if (splitid.length == 2) { // roots only        
        popt_fill(cindex, pid, defID);
      }      
    }
  }
  
  optLoad = 0;
}

function popt_change(sel) {  // 0-OPT_0_1_2
  var splitid = sel.name.split("_");
  var myid    = parseInt(splitid[splitid.length-1]);
  var cindex  = parseInt(splitid[0].split("-")[0]);
  var trail   = sel.name.substr(sel.name.indexOf("_")+1); 

  if (trail.indexOf("_") == -1) { // root
    var nextid = trail+"_1";
  } else {
    var nextid  = trail+"_"+(myid+1); 
  }

  if (getDocumentObject(cindex+"-OPT_"+nextid).type != 'hidden') {
    popt_fill(cindex, nextid);
  } else {
    if (sel.id.toLowerCase() == "fabric") {
      // asume if fabric that next is colors
      color_fill(cindex, nextid);
    }
  }
}

function popt_edit(pid, controlid) {
  var pos    = controlid.lastIndexOf('_');

  if (pos == -1) { // root
    var previd = controlid;
    parent_data = 0;
  } else {
    var previd = controlid.substring(0, pos);
    var parent = getDocumentObject(pid+"-OPT_"+previd);
    if (parent) {
      var parent_data = parent.value;
    }
  }

  if (PHP.opts[previd].edits[parent_data]) {
    editid = PHP.opts[previd].edits[parent_data];
    document.location.href="?p="+pid+"&op="+editid;
  }
}

function noenter() { // called as onKeyPress="return noenter();" prevents enter from submitting form
  return !(window.event && window.event.keyCode == 13); 
}
