/* functions using jQuery */
function serializeForPHP(o){
  var rtn = '', ct = 0;
  $.each(o, function(n,v){
      if(typeof v == 'function'){ ;/*do nowt*/ }
      else{
        ct++;
        rtn += 's:'+n.length+':"'+n+'";';
        if(v == null){ rtn += 's:0:"";'; }
        else if(typeof v == 'object'){ rtn += serializeForPHP(v); }
        else if(typeof v == 'number'){
          var _v = v.toString();
          if(/^\d+$/.test(_v)) rtn += 'i:'+_v+';';
          else if(/^\d+\.\d+$/.test(_v)) rtn += 'd:'+_v+';';
          else rtn += 's:'+_v.length+':"'+_v+'";';
        }
        else{ rtn += 's:'+v.length+':"'+v+'";'; }
      }
    });
  rtn = 'a:'+ct+':{'+rtn+'}';
  return rtn;
}
function add2basket(bskt){
  var wrap = bskt==999 ? $('#purchaseOnCD') : $('.hsWrap'+bskt)
    , sel = $('.purchaseOption_'+bskt,wrap)[0]
    , opt = sel.options[sel.selectedIndex].value
    , amt = $.trim(sel.options[sel.selectedIndex].text).match(/[0-9.]+$/)
    , itm = $.trim($('.purchaseItem_'+bskt,wrap).val())
    , gly = $.trim($('.purchaseGallery_'+bskt,wrap).val())
    ;
  var a2b = $('.a2bButton',wrap).width();
  $.getJSON('gallery2.php', {addbasket:itm, option:opt, amount:amt, menu:gly}, function(json){
      if(json.ok){
        var pad = $('.purchaseAdded_'+bskt,wrap);
        pad.addClass('purchaseAdded').css({width:a2b,top:6,opacity:100}).text('Added').fadeIn('fast', function(){
            pad.animate({top:-100,opacity:0},1500,function(){
                pad.hide().empty().removeClass('purchaseAdded'); }); });
      }
    });
}
function delFromBasket(item){
  $.getJSON('gallery2.php', {delbasket:item}, function(json){
      if(json.count==0){
        $('#basketForm').remove();
        $('#basketEmpty').show();
      }else{
        $('.basketLine_'+item).remove();
        resizeBasket();
      }
      setBasketScroll();
    });
}
function clearDownBasket(){
  $.getJSON('gallery2.php', {clrbasket:1}, function(json){
      $('#basketForm').remove(); $('#basketEmpty').show(); setBasketScroll();
    });
  return false;
}
function resizeBasket(){
  var ttl = 0, chkout = ($('#basketCheckout:visible').length>0), changed = false, pandp = new Array(), pandpCount = 0, updt = '';
  $('#basketForm select').each(function(){
      var splt = this.id.split('_')
        , prc = $.trim($('#basketPrice_'+splt[1]).text()).match(/[0-9.]+$/)[0]
        , oval = $('#x_'+this.id).val()
        , qtty = this.options[this.selectedIndex].value
        , rule = $('#basketRule_'+splt[1]).val()
        ;
      updt += splt[1]+'u'+qtty+'b';
      ttl += qtty*prc;
      pandp[pandpCount++] = {qtty:(1*qtty), rule:rule};
      if(!changed && oval != this.options[this.selectedIndex].value) changed = true;
    });
  if(changed && chkout){
    $('#basketPage .checkoutUpdate').toggle();
  }
  $.get('gallery2.php?_cb='+cacheBust(), {updbasket:updt});
  var postPacking = postAndPack(pandp).toFixed(2);
  ttl = ttl.toFixed(2);
  var net = parseFloat(postPacking)+parseFloat(ttl);
  $('#basketTotal').text(ttl);
  $('#basketPandP').text(postPacking);
  $('#basketNet').text(net.toFixed(2));
}
function updateBasket(){
  $('#basketFoot input').unbind('click');
  window.location = window.location.href;
}
function checkoutBasket(typ){
  $('#basketShow').hide();
  $('#basketHide_'+typ).show();
  $.getJSON('gallery2.php', {checkout:typ}, function(json){
      if(json.ok){
        var nme, fm = $('#checkoutForm');
        $.each(json, function(n,v){
            switch(n){
              case 'ok': break;
              case 'action': fm.attr({action:json.action}); break;
              default:
                nme = n.substr(1);
                fm.dom('input',false,'',{type:'hidden', name:nme, value:v});
            }
          });
        fm[0].submit();
      }
    });
  return false;
}
function setBasketScroll(){
  $('#basketScroll').jScrollPane({showArrows:true, scrollbarWidth:10, scrollbarMargin:0});
}

function hoverImage(obj,over){
  obj.src = (over ? obj.src.replace(/\.gif/,'_on.gif') : obj.src.replace(/_on\.gif/,'.gif'));
}
function obfuscatedEmail(){
  // Email obfuscator script 2.1 by Tim Williams, University of Arizona
  // Random encryption key feature by Andrew Moulden, Site Engineering Ltd
  // This code is freeware provided these four comment lines remain intact
  // A wizard to generate this code is at http://www.jottings.com/obfuscator/
  var zCoded="8sl7@Qi0lTQQg0TQ.k0.B7"
    , zKey="30YHSTAgw64QU5Kk8zJbydrf1WNxnauEjLCFX7RpIoqMltZhPG9sBOecm2VvDi"
    , zShift=zCoded.length
    , zLink="";var zLtr
    ;
  for(var i=0;i<zCoded.length;i++){
    if(zKey.indexOf(zCoded.charAt(i))==-1){
      zLtr=zCoded.charAt(i);
      zLink+=(zLtr);
    }else{
      zLtr=(zKey.indexOf(zCoded.charAt(i))-zShift+zKey.length)%zKey.length;
      zLink+=(zKey.charAt(zLtr));
    }
  }
  return "<a href='mailto:"+zLink+"' title='opens your email client'>email me</a>";
}
function cacheBust(){
  var dt = new Date();
  return (dt.getTime());
}


