var RepositionTimer;
var TooltipTimer;
var MagnifyTimer;
var TooltipObjId='';
var RepositionY=0;
var PreloadImgLst = new Array();

//filled by main page witty
var suitsupply_shoppingcart;
var suitsupply_wishlist;
var isOrderConfirm=false;

var scrollers = {};

$(document).ready(function()
{

  // make sure all <enters> fire the nearest "submit" button
  $('input').keyup(function(e) {
    if(e.keyCode == 13) {
      if($(this).parent().find('.submit').length > 0) {
        $(this).parent().find('.submit').click();
      }
    }
    return;
  });

  $('a[rel="extern"]').attr('target','_blank');

  //Nav links naast content, evt. correctie lijn onder item
  // als volgend item actief is
  var ChkContentNav=$('.subsubnav ul li.active').prev();
  if(ChkContentNav.length>0)
    $(ChkContentNav).children('a').attr('style','border-bottom-color:white');

  //Nav links naast content, mouseover/out
  $('.subsubnav ul li').mouseover(function(){
    if(!$(this).hasClass('active'))
    {
      $(this).addClass('over');
      if($(this).hasClass('first'))
      {
        $(this).attr('style','border-color:white');
      }
      else
      {
        if(!$(this).prev().hasClass('active'))
          $(this).prev().children('a').attr('style','border-bottom-color:white');
      }
    }

  });
  $('.subsubnav ul li').mouseout(function(){
    if(!$(this).hasClass('active'))
    {
      $(this).removeClass('over');
      if($(this).hasClass('first'))
      {
        $(this).attr('style','border-color:#ecf1ee');
      }
      else
      {
        if(!$(this).prev().hasClass('active'))
          $(this).prev().children('a').attr('style','border-bottom-color:#ecf1ee');
      }
    }

  });


  if(myBrowserChk().mobilesafari)
  {

    $('#footermenu').css('position','absolute');
    RepositionElements();

  }
});
// TODO: merge
$(document).ready(function()
{
  if($('#custom_header').length > 0) {
    $('#custom_header').css('visibility', 'hidden');

    setTimeout(function() {
      $('#custom_header img').css({'top': (($('#custom_header img').height()/2) - ($('#custom_header').height()/2))*-1});
      $('#custom_header').css({'visibility': 'visible'});
    }, 800);

    $('#superbgimage').remove();
  }

  var p = $("#mainnav li a.active");
  if(p) //reposition submenu to align it with its main menu item
  {
    var position = p.position();
    if ($('#subnav').length > 0 && position)
    {
      $('#subnav').css('left', position.left + 110);
    }
  }

  $('#clientnav li, #footernav li').each(function(i)
  {
    var navListItem = $(this);
    var window = $(this).find('div.clientWindow');
    $(window).hide();

    var t = 0;
    $(this).hover(function()
    {
      // hide all other windows except this
      $('li div.clientWindow').each(function(i) {

        if($(window).attr('id') != undefined && $(this).attr('id') != $(window).attr('id')) {
          $(this).hide();
        }
      });

      clearTimeout(t);
      $(window).fadeIn();

      updateScrollbar('basketScroller');
      updateScrollbar('wishlistScroller');
    }, function()
    {
      t = setTimeout(function() { $(window).fadeOut(); }, 1500);
    });
    /* Chrome fix */
    $(this).find('input').hover(function(event)
    {
      clearTimeout(t);
      $(window).show();
      updateScrollbar('basketScroller');
      updateScrollbar('wishlistScroller');
    }, $.noop);

    $(this).find('input').keydown(function(event) {
      clearTimeout(t);
    });
  });

  standardInputText('#footernav input.text', 'Your e-mail address');
  standardInputText('#notifymeemail', 'Your e-mail address');
  standardInputText('#notifyme', 'Your e-mail address');
  standardInputText('#login_username', 'Your e-mail address');
  standardInputText('#login_password', 'Your password');
  $('.create_account_form').hide();
  $('#create_account_btn').click(function() {
    standardInputText('#createaccountemail', 'Your e-mail address');
    $('.create_account_text').hide();
    $('.create_account_form').slideDown();
  });

  $('#newsletter_subscribe_btn').click(function() {
    suitsupply_subscribe();
  });
  $('#notifyme_btn').click(function() {
    suitsupply_notifyme_homepage();
  });

  if(getCookie('nossbg')!='true')
  {
    $.fn.superbgimage.options = {
        randomtransition: 0,
        transition: 1,
        slideshow: 1,
        slide_interval: 5000,
        randomimage: 0,
        speed: 1000
    };
    if($("body").hasClass("headerpic"))
    {
      $.fn.superbgimage.options.inlineMode = 1;
      $.fn.superbgimage.options.z_index = 100;
    }

    // start SuperBGImage
     $.fn.superbgimage();
  }

  if(document.getElementById("faqbody"))
    initialize_faq_document();

  //initialze dynamic parts of the webpage
  if($('#basketScroller').length && $('#wishlistScroller').length) {
    var basketScroller = $('#basketScroller');
    basketScroller.tinyscrollbar({size:235});
    var wishlistScroller = $('#wishlistScroller');
    wishlistScroller.tinyscrollbar({size:235, axis:'y'});
    registerScrollbar('basketScroller', basketScroller);
    registerScrollbar('wishlistScroller', wishlistScroller);

    suitsupply_updateloginstatus(getCookie('suitsupplylogin'));
    if(suitsupply_shoppingcart)
      suitsupply_setbasket(suitsupply_shoppingcart);
    if(suitsupply_wishlist)
      suitsupply_setwishlist(suitsupply_wishlist);
  }

  suitsupply_applycategoryfilters(); //initialize filters using the has, if needed
  suitsupply_loadscrolledinimages();

  window.onscroll = suitsupply_loadscrolledinimages;
  window.onresize = suitsupply_loadscrolledinimages;

  initImageCheckbox();
  initImageRadioButtons();
});

/* Open lightbox */
$.fn.openLightbox = function(content, width, height) {
  Shadowbox.open({
        content:    content,
        player:     "html",
        height:     height,
        width:      width
  });
}
$.fn.lightbox = function(width, height, callback) {

  Shadowbox.open({
    content:    $(this).html(),
    player:     "html",
    height:     height,
    width:      width,
    options: {
      onOpen: function() {},
      onFinish: function() { suitsupply_refresh_cufon();  }
    }
  });
  if(typeof callback == 'function'){
    callback.call(this);
  }
}
/* TODO mooie jquery functie van schrijven */
function CloseLightbox() {
  Shadowbox.close();
}
function standardInputText(field, initialText) {
  if($(field).val() == '') {
    $(field).val(initialText);
  }

  $(field).focus(function() {
    if($(this).val() == initialText) {
      $(this).val('');
    }
  }).blur(function() {
    if($(this).val() == '') {
      $(this).val(initialText);
    }
  });
}




function ShowTooltip(curobjId,htmltxt,FnKlik,isDark)
{
  clearTimeout(TooltipTimer);

  var NewTooltipObjId=curobjId;
  if(NewTooltipObjId!=TooltipObjId)
  {
    if(TooltipObjId!='')
    {
      DoHideTooltip(NewTooltipObjId,htmltxt,FnKlik,isDark);

    }
    else if($('#tooltipholder').length==0)
    {
      TooltipObjId=NewTooltipObjId;
      CreateTooltip(NewTooltipObjId,htmltxt,FnKlik,isDark);
    }
  }
}

function ShowTooltipDark(curobjId,htmltxt,FnKlik) {
  ShowTooltip(curobjId,htmltxt,FnKlik,true);
}

function CreateTooltip(curobjId,htmltxt,FnKlik,isDark)
{
  var TooltipWidth=152;

  var curobj=$('#'+curobjId);
  var ObjPos=$(curobj).offset();

  var XPos=Math.round(ObjPos.left + ($(curobj).width()/2) - (TooltipWidth/2));

  var YPos=($(window).height() - ObjPos.top);

  var ttHolder=$(document.createElement('div')).css({'left':XPos+'px','bottom':YPos+'px','display':'none'}).attr('id','tooltipholder').appendTo('body');
  $(document.createElement('div')).attr('class','tooltipcontent').html(htmltxt).appendTo(ttHolder);

  if(isDark)
    ttHolder.addClass('dark');

  ttHolder.fadeIn(100);

  $(ttHolder).bind('mouseover',function(){
    clearTimeout(TooltipTimer);
  });
  $(ttHolder).bind('mouseout',function(){
    HideTooltip();
  });

  if(FnKlik!='')
  {
    $(ttHolder).bind('click',function(){
      eval(FnKlik);
    });
  }

}

function HideTooltip()
{
  TooltipTimer=setTimeout('DoHideTooltip("","","","")',400);
}

function DoHideTooltip(NewObjId,htmltxt,FnKlik,isDark)
{
  $('#tooltipholder').fadeOut(60,function(){
    $(this).unbind();
    $(this).remove();

    TooltipObjId='';
    clearTimeout(TooltipTimer);

    if(NewObjId!='')
      ShowTooltip(NewObjId,htmltxt,FnKlik,isDark)

  });

}


function RepositionElements()
{
  var myPos=-1*$(window).scrollTop();

  if(RepositionY!=myPos)
  {
    RepositionY=myPos;
    clearTimeout(RepositionTimer);
    $('#footermenu').css('bottom',myPos+'px').show();
  }

  RepositionTimer=setTimeout('RepositionElements()',80);
}

function UpdateBladwijzers(pagenr)
{
  $('.subsubnav ul').hide();
  $('#subsubnav'+pagenr).show();

  $('#subsubblader a').removeClass('active');

  if(BldrPageCount>BldrMaxPages)
  {//blader navigatie opnieuw opbouwen

    var BldrObj=$('#subsubblader');

    $('#subsubblader li').each(function(i){
      //alleen 1e item (de titel) blijft staan
      if(i>0) $(this).remove();
    });

    var curOffset=pagenr-((BldrMaxPages-3)/2);
    if(curOffset<1) curOffset=1;
    if(curOffset>BldrPageCount - (BldrMaxPages-3) - 2)
      curOffset=BldrPageCount - (BldrMaxPages-3) - 2;

    //eerste pagina
    var curIndex=0;
    var curHtmlLink='<a id="subsubblader'+curIndex+'" class="first" href="javascript://" onclick="UpdateBladwijzers('+curIndex+');">'+(curIndex+1)+'</a>';
    $(document.createElement('li')).html(curHtmlLink).appendTo(BldrObj);

    //inspring
    if(curOffset>1)
    {
      $(document.createElement('li')).html('...').appendTo(BldrObj);
    }

    //Rondom actieve pagina
    for(var curIndex=curOffset;curIndex<=curOffset+BldrMaxPages-3;curIndex++)
    {
      var curHtmlLink='<a id="subsubblader'+curIndex+'" href="javascript://" onclick="UpdateBladwijzers('+curIndex+');">'+(curIndex+1)+'</a>';
      $(document.createElement('li')).html(curHtmlLink).appendTo(BldrObj);
    }

    //inspring
    if(curOffset+BldrMaxPages-1<BldrPageCount)
    {
      $(document.createElement('li')).html('...').appendTo(BldrObj);
    }

    //laatste pagina
    var curIndex=BldrPageCount-1;
    var curHtmlLink='<a id="subsubblader'+curIndex+'" class="last" href="javascript://" onclick="UpdateBladwijzers('+curIndex+');">'+(curIndex+1)+'</a>';
    $(document.createElement('li')).html(curHtmlLink).appendTo(BldrObj);

  }

  $('#subsubblader'+pagenr).addClass('active');
  window.scrollTo(0,0);
}

var zoomsettings;
function InitImageZoom(mZoomsettings)
{
  zoomsettings = mZoomsettings;
  //zoomsettings

 // var zoomsettings={radius:75,previewWidth:620,previewHeight:437,originalWidth:2480,originalHeight:1748};

  //$('#magnifier').show();

  $('#zoomifyholder').css({'width':zoomsettings.previewWidth+'px','height':zoomsettings.previewHeight+'px'});

  $('#zoomifyholder').mousemove(function(e){

    var MagnifierFactor=zoomsettings.originalWidth/zoomsettings.previewWidth;

    var mPosX=e.pageX - $(this).offset().left;
    var mPosY=e.pageY - $(this).offset().top;

    if(mPosX<0) mPosX=0;
    if(mPosY<0) mPosY=0;
    if(mPosX>=zoomsettings.previewWidth) mPosX=zoomsettings.previewWidth-1;
    if(mPosY>=zoomsettings.previewHeight) mPosY=zoomsettings.previewHeight-1;

    $('#magnifier').css({'top':(mPosY-zoomsettings.radius)+'px','left':(mPosX-zoomsettings.radius)+'px'});

    var ImgPosX=Math.round((mPosX*MagnifierFactor) - zoomsettings.radius);
    var ImgPosY=Math.round((mPosY*MagnifierFactor) - zoomsettings.radius);

    //if(ImgPosX<0) ImgPosX=0;
   // if(ImgPosY<0) ImgPosY=0;
    //if(ImgPosX>=zoomsettings.originalWidth-(2*zoomsettings.radius)) ImgPosX=zoomsettings.originalWidth-1-(2*zoomsettings.radius);
    //if(ImgPosY>=zoomsettings.originalHeight-(2*zoomsettings.radius)) ImgPosY=zoomsettings.originalHeight-1-(2*zoomsettings.radius);

    $('#magnifier').css('backgroundPosition',(-1*ImgPosX)+'px '+(-1*ImgPosY)+'px');

  });
  $('#zoomifyholder').bind('click', zoomClick);


  $('#zoomifyholder').mouseover(function(){
    if($(this).hasClass('zoomcursor'))
      return;
    ShowMagnifier();
  });

  $('#zoomifyholder').mouseleave(function(){
    MagnifyTimer=setTimeout('HideMagnifier()',1);
    //
  });

}
function zoomClick() {
    $(this).removeClass('zoomcursor').unbind('click');
    ShowMagnifier();
  }
function HideMagnifier()
{
  $('#magnifier').fadeOut(200);
  $('#zoomifyholder').addClass('zoomcursor').bind('click', zoomClick);
  $(document).unbind('click', HideMagnifier);
}

function ShowMagnifier()
{
  clearTimeout(MagnifyTimer);
  if($('#magnifier').css('display')=='none')
  {

    $('#magnifier').fadeIn(500, function() {
      $(document).bind('click', HideMagnifier);
    });
    $(this).removeClass('zoomcursor');
  }
}


function StartZoeken(VormObj, defaulttxt)
{
  ZoekTerm=VormObj.words.value;

  if(ZoekTerm==defaulttxt) ZoekTerm='';

  if(ZoekTerm.length)
  {
    return true;
  }
  else
  {
    return false;
  }

}


function maximizeWindow(WindowObj)
{
  if(parseInt(navigator.appVersion)>3)
  {
    if(navigator.appName=="Netscape")
    {
      if(WindowObj.screenX>0 || WindowObj.screenY>0) WindowObj.moveTo(0,0);
      if(WindowObj.outerWidth < screen.availWidth) WindowObj.outerWidth=screen.availWidth;
      if(WindowObj.outerHeight < screen.availHeight) WindowObj.outerHeight=screen.availHeight;
    }
    else
    {
      WindowObj.moveTo(-4,-4);
      WindowObj.resizeTo(screen.availWidth+8,screen.availHeight+8);
    }
  }
}


function trim(value) {
        value = value.replace(/^\s+/,'');
        value = value.replace(/\s+$/,'');
        return value;
}


function NieuwVenster(waarheen)
{
  DetailVenster = window.open(waarheen,'Detail','toolbar=no,location=no,directories=no,status=no,scrollbars=yes,resizeable=yes,width=800,height=600');
  DetailVenster.focus();
}


function ParseYouTube()
{

  var msWordYouTubeHolders=$('div.mswordyoutube');

  if(msWordYouTubeHolders.length>0)
  {
    var flashvars = {
      autoplay: false
    };

    var params = {
      allowFullScreen: true,
      seamlesstabbing: false,
      allowScriptAccess:"always",
      swLiveConnect:true,
      wmode: 'transparent'
    };

    $(msWordYouTubeHolders).each(function(i){
      var ObjId='mswordyoutube_'+i;

      $(this).show();
      $(this).attr('id','mswordyoutube_'+i);
      var youtubeid=$(this).text();

      var attributes = {
        id: ObjId,
        name: ObjId
      };

      swfobject.embedSWF('http://www.youtube.com/v/'+youtubeid+'?version=3',ObjId,'465','283','9',webroot+'swf/ExpressInstall.swf',flashvars,params,attributes);

    });
  }
}


function NaarWebsite(waarheen)
{
  DetailVenster = window.open(waarheen,'_blank');
  DetailVenster.focus();
}


function GaNaar(naarurl)
{
  document.location.href=naarurl;
}


function onPreload(aImages, nImages)
{
  if(nImages == aImages.length){
    // BlokeerInteraktie=false;
    return;
  }
}


//Image preload routines staan hieronder
function ImagePreloader(images, callback)
{

  this.callback = callback;// store the callback

  this.nLoaded = 0;
  this.nProcessed = 0;
  this.aImages = new Array;

  this.nImages = images.length;

  for(var i=0; i < images.length; i++){// for each image, call preload()
    this.preload(images[i]);
  }

}

ImagePreloader.prototype.preload = function(image)
{

  // create new Image object and add to array
  //var oImage = new Image;
  var oImage = document.createElement("img"); // met new Image() werkt 't zeker niet!

  this.aImages.push(oImage);

  // set up event handlers for the Image object
  oImage.onload = ImagePreloader.prototype.onload;
  oImage.onerror = ImagePreloader.prototype.onerror;
  oImage.onabort = ImagePreloader.prototype.onabort;

  // assign pointer back to this.
  oImage.oImagePreloader = this;
  oImage.bLoaded = false;

  // assign the .src property of the Image object
  oImage.src = image;
}

ImagePreloader.prototype.onComplete = function()
{
  this.nProcessed++;

  if(this.nProcessed == this.nImages)
    this.callback(this.aImages, this.nLoaded);

}

ImagePreloader.prototype.onload = function()
{
  this.bLoaded = true;
  this.oImagePreloader.nLoaded++;
  this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.onerror = function()
{
  this.bError = true;
  this.oImagePreloader.onComplete();
}

ImagePreloader.prototype.onabort = function()
{
  this.bAbort = true;
  this.oImagePreloader.onComplete();

}


function myBrowserChk(){
  var userAgent = navigator.userAgent.toLowerCase();

  var browserinfo = {
    version: (userAgent.match( /.+(?:rv|it|ra|ie|me)[\/: ]([\d.]+)/ ) || [])[1],
    chrome: /chrome/.test( userAgent ),
    mobilesafari:/webkit/.test( userAgent ) && !/chrome/.test( userAgent ) && /mobile/.test( userAgent ),
    safari: /webkit/.test( userAgent ) && !/chrome/.test( userAgent ),
    opera: /opera/.test( userAgent ),
    msie: /msie/.test( userAgent ) && !/opera/.test( userAgent ),
    msie_buggy : false,
    mozilla: /mozilla/.test( userAgent ) && !/(compatible|webkit)/.test( userAgent )
  }

  if(browserinfo.msie){
    if(/msie 6/.test( userAgent )) browserinfo.msie_buggy = true;
    if(/msie 5/.test( userAgent )) browserinfo.msie_buggy = true;
  }

  return browserinfo;

}

function getCookie(c_name)
{
  var i,x,y,ARRcookies=document.cookie.split(";");
  for (i=0;i<ARRcookies.length;i++)
  {
    x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
    y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
    x=x.replace(/^\s+|\s+$/g,"");
    if (x==c_name)
      {
      return unescape(y);
      }
  }
}

function execute_rpc_function(data, callback)
{
  $.ajax({ type : 'POST'
         , url: repository_url + 'shop/rpc.shtml'
         , data: $.toJSON(data)
         , success: callback
         , dataType: 'json'
         , processDataBoolean: false
         });
/*
  (new Request.JSON( { url: "rpc.shtml"
                     , onSuccess: callback
                     , data: JSON.encode(data)
                     , urlEncoded: false
                     })).send();*/
}

function suitsupply_forgotpassword(retval)
{
  execute_rpc_function({ func: "forgotpassword"
                       , username: document.getElementById("login_username").value
                       }, suitsupply_forgotpasswordresult);
  return false;
}
function suitsupply_forgotpasswordresult(retval)
{
  if(retval.nosuchuser)
    $('#login_feedback').fadeIn().text('This email address is unknown in our system.').css({'color': 'red'}).delay(2000).fadeOut();
  else if(retval.success)
    $('#login_feedback').fadeIn().text('An email with your new password has been sent.').css({'color': 'black'}).delay(2000).fadeOut();
}

function suitsupply_login() //handles the LOGIN button on the suitsupply login thingy
{
  document.getElementById("login_feedback").style.display='none';
  execute_rpc_function({ func: "login"
                       , username: document.getElementById("login_username").value
                       , password: document.getElementById("login_password").value
                       }, suitsupply_loginresult);
  return false;
}
function suitsupply_loginresult(retval)
{



  suitsupply_updateloginstatus(retval.cookie);
  if(!retval.success)
  {
    $('#login_feedback').fadeIn().text('Username or password incorrect.').css({'color': 'red'}).delay(2000).fadeOut();
  }
  else {
    SiteCatalyst_trackEvent('event14',{},'User Login');
    location.href = webroot + 'userprofile';
  }

  return false;
}


function suitsupply_updateloginstatus(cookie) //parse cookie, update main menu
{

  var email=cookie?cookie.split('|')[0]:'';
  var isloggedin = !!email;

  //document.getElementById('login').style.display = isloggedin ? 'none' : 'block';
  //document.getElementById('mysuitsupply').style.display = isloggedin ? 'block' : 'none';'

 if(isloggedin) {
    $('#login').hide();
    $('#mysuitsupply').show();
  }
  else {
    $('#login').show();
    $('#mysuitsupply').hide();
  }

}

function suitsupply_submitpersonaldetails() //the save button on the personal details page: /userprofile/?tab=details
{
  if($('#accept_terms_conditions').is(':checked'))
  {
    $('#detailsform').submit();
  } else {
    $('#accept_terms_conditions_message').addClass('required');
  }
}

function suitsupply_logout()
{
  location.href='?action=logout'; //we can use this relative url, because only the /userprofile/ has the logout button
}



function initImageCheckbox() {
    // image checkboxes
    $('.imageCheckbox').each(function() {
      $(this).hide();


      var cb = $('<a href="#" class="bm_checkbox"><span></span></a>');
      $(this).parent().append(cb);

      var orginalCheckbox = $(this);

      // detect current state
      if($(orginalCheckbox).is(':checked')) {
        $(cb).find('span').addClass('checked');
      }

      // add click handler
      $(cb).click(function(e) {
        e.preventDefault();

        if($(orginalCheckbox).is(':checked')) {
          $(cb).find('span').removeClass('checked');
          $(orginalCheckbox).attr('checked',false);
        }
        else {
          $(cb).find('span').addClass('checked');
          $(orginalCheckbox).attr('checked',true);
        }

        $(orginalCheckbox).change();
      });
    });
}

function initImageRadioButtons() {
    // image radio buttons
    $('.imageRadio').each(function() {
      $(this).hide();

      var cb = $('<a href="#" class="bm_checkbox"><span></span></a>');
      $(this).after(cb);

      var orginalCheckbox = $(this);

      // detect current state
      if($(orginalCheckbox).is(':checked')) {
        $(cb).find('span').addClass('checked');
      }

      // add click handler
      $(cb).click(function(e) {
        e.preventDefault();

        $(cb).find('span').addClass('checked');
        $(orginalCheckbox).attr('checked',true);

        var buttonGroupName = $(orginalCheckbox).attr('name');
        var otherBoxes = $('.imageRadio[name='+buttonGroupName+']').not($(orginalCheckbox));

        $(otherBoxes).attr('checked',false);
        $(otherBoxes).next('.bm_checkbox').find('span').removeClass('checked');
      });
    });
}

function suitsupply_atbodyend() //invoked just before </body> (ie before document ready)
{
  //Init lightbox (options: http://www.shadowbox-js.com/options.html)
  Shadowbox.init();

  Cufon.replace('h1,h2,h3,h4,h5,h6',{fontFamily:'UniversLT',fontWeight: 'bold', ignoreClass: 'nocufon' /* , color: 'red' */});

  Cufon.replace('.btn_round, .lbl_border',{fontFamily:'UniversLT',fontWeight: 'normal', hover:'true'});
  Cufon.replace('#mainmenu li > a, #footermenu li > a',{fontFamily:'UniversLT',fontWeight: 'normal', hover:true});
  Cufon.replace('#orderNav li a',{fontFamily:'UniversLT', hover:true});
  Cufon.replace('#myprofileTabs li a',{fontFamily:'UniversLT', hover:true});

  Cufon.replace('#storesubgroups .buttons',{fontFamily:'UniversLT', hover:true});
  Cufon.replace('#line_info_box .title, #line_info_box .price, #yourOrderTable .price, #yourOrderTable .currency',{fontFamily:'UniversLT', hover:true});

  Cufon.replace('#cat_overview .prod_info',{fontFamily:'UniversLT', hover:true});

  Cufon.replace('.clientWindow .item .description h6, .clientWindow .item .currency, .clientWindow .item .price, .clientWindow .total_price',{fontFamily:'UniversLT', hover:true});

  Cufon.replace('.bannercontent strong',{fontFamily:'UniversLT'});

  Cufon.now();
}
function suitsupply_refresh_cufon(timeout)
{

  if(parseInt(timeout) > 0) {
    setTimeout(function() {
      Cufon.refresh();

    }, timeout);
  }
  else {
    Cufon.refresh();
  }

}
function suitsupply_remove_cufon(selector) {
  $(selector).each(function() {
    $(this).html($(this).children('cufon').children('cufontext').text());
  });
}


$(document).unload(function()
{
  if(window.UnloadMap) //invoke the googlemap unloader, if its preset
    UnloadMap();
});

/* Basket and wishlist management */
var clickedItemId = 0;
var clickedSize = 0;
function suitsupply_setitemlist(items, deleter, counterobject, itemholder, caption)
{

  //ADDME (re)apply cufon stuff?

  var totalamount = 0;
  var totalprice = 0;
  var newbasketcontents=''; //using innerHTML for quick implementation, probably not recommendable in practice (eg encoding issues)
  var currency = '';
  var newItem = false;

  for(var i=0;i<items.length;++i)
  {
    var item = items[i];

    newItem = false;
    if(item.itemclassid == clickedItemId && item.size == clickedSize) {
      newItem = true;
    }

    totalamount += item.amount;
    totalprice += (item.pricecents*item.amount);
    var deleteimg = repository_url + 'images/icon_cross.png';
    var itemimg = item.catalogbase + '1/' + item.imgurl;
    //+ 'images/orderSuitTemp.jpg';
    var line = '<table cellpadding="0" cellspacing="0" border="0" id="' + itemholder.attr('id') + '_id_' + sanitizeInputId(item.itemclassid + '_'+item.size)+'" class="item' + (newItem? ' newitem' : '') + '"><tr>'
               + '<td class="delete"><a href="#" onclick="return ' + deleter + '(' + item.itemclassid + ',\'' + item.size + '\')"><img src="' + deleteimg + '" alt="icon_cross" width="12" height="12" /></a></td>'
               + '<td class="image">'
                 + '<a href="' + item.link + '">'
                   + '<img src="' + itemimg + '" alt=""  />'
                 + '</a>'
               + '</td>'
               + '<td class="description"><h6>' + item.title + ' (' + item.amount + ')</h6>'
               + (item.size && item.isrealsize ? '<p>Size: <span class="size">' + item.size + '</span></p>' : '')
               + '</td>' /*<br />' + item.description + '*/
               + '<td class="currency">' + item.currencysign + '</td>'
               + '<td class="price">' + item.price + '</td>'
               + '</tr></table>'
               ;

    // move new item to top of the list
    if(newItem) {
      newbasketcontents = line + newbasketcontents;
          }
    else {
      newbasketcontents += line;
    }
    currency = item.currencysign;
  }

  // update basket contents
  if(items.length == 0) {
    itemholder.html('<p>Your '+caption+' is empty.</p>');
    if(itemholder.attr('id') == 'basketitems') {
      $('#basket_checkout').hide();
    }
  }
  else {
    itemholder.html(newbasketcontents);
    if(itemholder.attr('id') == 'basketitems') {
      $('#basket_checkout').show();
    }
  }
  counterobject.text(totalamount); //ADDME probably destroys cufon

  // animate new item
  $(itemholder).find('.newitem').hide();
  setTimeout(function() {
    $(itemholder).find('.newitem').fadeIn();

    // animate window size and show scrollbar only when it makes sense :)
    if(items.length < 5) {
      $(itemholder).parents('.viewport').animate({'height': (items.length*55) + 20});
      $(itemholder).parents('.viewport').prev().hide();
    }
    else {
      $(itemholder).parents('.viewport').prev().show();
      updateScrollbar('basketScroller');
      updateScrollbar('wishlistScroller');
    }
  }, 1000);

  // update totals
  $(itemholder).parents('.content').find('.total_price .price').text(currency + ' ' + number_format(totalprice/100, 2, ',', '.'));
  if(totalamount == 0) {
    $(itemholder).parents('.content').find('.total_price').hide();
  }
  else {
    $(itemholder).parents('.content').find('.total_price').fadeIn();
  }

  clickedItemId = 0;
  clickedSize = 0;

  suitsupply_refresh_cufon();
}

function number_format(number, decimals, dec_point, thousands_sep) {
    // *     example: number_format(1234.56, 2, ',', '.');
    // *     returns: '1.234,56'
    number = (number+'').replace(',', '').replace(' ', '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}

function registerScrollbar(name, ob) {
  scrollers[name] = ob;
}
function updateScrollbar(name) {

  if(scrollers[name])
    scrollers[name].update();
}

function suitsupply_setcheckoutbasketlist(basket)
{

  //there is only one checkoutlist, so hardcoding the parameters for now
  /* ADDME Dit is een aparte versie voor de checkout pagina. Moet nog aan design gaan voldoen */
  //ADDME (re)apply cufon stuff?

  var totalamount = 0;
  var newbasketcontents=''; //using innerHTML for quick implementation, probably not recommendable in practice (eg encoding issues)

  for(var i=0;i<basket.items.length;++i)
  {
    var item = basket.items[i];

    totalamount += item.amount;
    //quick code generation, it should be like above ^^
    var deleteimg = repository_url + 'images/icon_cross.png';
    var itemimg = item.catalogbase + '1/' + item.imgurl;


    /* item.sizes objecten bestaan uit: isavailable, isselected, rowkey, title */
    var dropdownSize = '';

    if(item.sizes.length)
    {
      dropdownSize = '<input type="hidden" id="size_'+sanitizeInputId(item.itemclassid+'_'+item.size)+'_input" onchange="suitsupply_updatecartsize('+item.itemclassid+', \''+item.size+'\');" />'
      + '<dl id="size_'+sanitizeInputId(item.itemclassid+'_'+item.size)+'" class="dropdown">'
      + ' <dt><a href="#"><span>'+item.size+'</span></a></dt>'
      + ' <dd>'
      + '  <ul>';

      for(var j=0;j<item.sizes.length;++j)
      {
        var size = item.sizes[j];
        if(!size.isavailable)
          continue;

        dropdownSize += '<li'+(size.isselected? ' selected="selected"' : '')+'><a href="#">'+size.title+'<span class="value">'+size.rowkey+'</span></a></li>';
      }
      //console.log(dropdownSize);

      dropdownSize += '  </ul>'
      + ' </dd>'
      + '</dl>';
    }

    /*
    for(var j=0;j<item.sizes.length;++j)
    {
      var funccall = "suitsupply_updatecartsize(" + item.itemclassid + ",'" + item.size + "','" + size.rowkey + "')";
      dropdownSize += '<span style="cursor:hand" onclick="' + funccall + '">' + size.title + '</span> ';
    }
    */

    var dropdownAmount = '<input type="hidden" id="amount_'+sanitizeInputId(item.itemclassid+'_'+item.size)+'_input" onchange="suitsupply_updatecartamount('+item.itemclassid+',\''+item.size+'\');" />'
      + '<dl id="amount_'+sanitizeInputId(item.itemclassid+'_'+item.size)+'" class="dropdown">'
      + ' <dt><a href="#"><span>'+item.amount+'</span></a></dt>'
      + ' <dd>'
      + '  <ul>';

      for(var j=1;j<=5;++j)
      {
        dropdownAmount += '<li'+(item.amount==j? ' selected="selected"' : '')+'><a href="#">'+j+'<span class="value">'+j+'</span></a></li>';
      }

      dropdownAmount += '  </ul>'
      + ' </dd>'
      + '</dl>';


    var line = ''
     + '<tr class="orderLines">'
     + ' <td class="delete"><a href="#" onclick="return suitsupply_deletefromcart(' + item.itemclassid + ',\'' + item.size + '\')"><img class="top" src="' + deleteimg + '" alt="Delete" /></a></td>'
     + ' <td class="suitImage"><img class="top" src="' + itemimg + '" alt="' + item.description + '" /></td>'
     + ' <td class="description">'
      + ' <h3>'+item.title+'</h3>'
      + ' <span class="artnr">Art. nr: ' + item.code + '</span>'
      + ' <span class="creator">' + item.description + '</span>'
      + ' <div style="width: 220px;"></div>'
     + ' </td>'
     + ' <td class="size">' + dropdownSize + '</td>'
     + ' <td class="items">' + dropdownAmount + '</td>'
     + ' <td class="currency"><h3>'+item.currencysign+'</h3></td><td class="price"><h3>'+item.lineprice+'</h3></td>'
     + '</tr>';




     // <select id="mysize"><option value="1">110</option><option value="1">112</option><option value="3">114</option><option value="2">116</option></select>
     // <select id="items"><option value="1">1</option><option value="1">2</option><option value="3">3</option><option value="2">4</option><option value="2">5</option></select>

    newbasketcontents += line;
  }

  if(totalamount == 0) {
    $('#continue_order_button').hide();
  }
  else {
    $('#continue_order_button').show();
  }

 // $('#checkoutbasket').html(newbasketcontents);
  $('.orderLines').remove();
  $('#yourOrderTableHeader').after(newbasketcontents);
  $('#checkoutbasketsubtotal').text(basket.subtotal);
  //$('#checkoutbasketshipping').text(basket.shipping);
  $('#checkoutbaskettotal').text(basket.total);

  suitsupply_refresh_cufon();
  refreshDropdowns();

}

function suitsupply_setbasket(basket)
{
  suitsupply_setitemlist(basket.items, 'suitsupply_deletefromcart', $('#baskettotal'), $('#basketitems'), 'basket');

  if(document.getElementById('yourOrderTableHeader'))
    suitsupply_setcheckoutbasketlist(basket);
}
function suitsupply_getBasketStats(basket)
{
  var prodString = '';
  var items = basket.items;
    
  for(var p in items) {
      var item = items[p];
      prodString += ';'+item.code+';;;;evar16='+item.productcat+'|evar17='+item.title+',';
  }

  return prodString.substr(0,prodString.length-1);
}
function suitsupply_getOrderedBasket(data)
{
  var prodString = '';
  var itemdata = $.parseJSON(data);
  var items = itemdata.products;
  for(var p in items) {
      var item = items[p];
      prodString += ';'+item.code+';'+item.amount+';'+(item.linepricecents/100)+';;evar16='+item.productcat+'|evar17='+item.title+',';
  }
  return prodString.substr(0,prodString.length-1);
}
function suitsupply_getShoppingCartStats() {
  return suitsupply_getBasketStats(suitsupply_shoppingcart);
}
function suitsupply_getWhishlistStats() {
  return suitsupply_getBasketStats(suitsupply_wishlist);
}

function suitsupply_setwishlist(basket)
{
  suitsupply_setitemlist(basket.items, 'suitsupply_deletefromwishlist', $('#wishlisttotal'), $('#wishlistitems'), 'wishlist');
}

var isiframe = false;
function suitsupply_addtocart(iIsiframe) //process the "order" button
{
  isiframe = iIsiframe;
  /*var size_elt = document.getElementById('mysize');
  var size = size_elt.value;
  if(!size_elt.options[size_elt.selectedIndex].getAttribute('ss_available'))
  {
    alert('product is niet op voorraad');
    return false;
  }*/
  var size_elt = document.getElementById('mysize_input');
  var size = size_elt ? size_elt.value : '';

  var itemclassid = parseInt(document.getElementById('itemclassid').value);
  var itemid = parseInt(document.getElementById('itemid').value);
  clickedItemId = itemclassid;
  clickedSize = size;

  


  execute_rpc_function({ func: "addtocart"
                       , itemclassid: itemclassid
                       , size: itemid ? itemid+'' : size
                       }, suitsupply_addtocartresult);

  return false;
}
function suitsupply_updatecartsize(itemclassid, currentsize)
{
  var newsize = $('#size_'+sanitizeInputId(itemclassid+'_'+currentsize)+'_input').val();

  execute_rpc_function({ func: "updatecartsize"
                       , itemclassid: itemclassid
                       , currentsize: currentsize
                       , newsize: newsize
                       }, suitsupply_addtocartresult);

}
function suitsupply_addtocartresult(retval)
{
  if(isiframe) {
    parent.suitsupply_setbasket(retval.newcart);
    parent.showAddToCartAnimation('basketWindow');
    parent.Shadowbox.close(); 

  }
  else {
    suitsupply_setbasket(retval.newcart);
  }
  

  if(!document.getElementById('yourOrderTableHeader'))
    showAddToCartAnimation('basketWindow');
}
function showAddToCartAnimation(clientWindow)
{
  clientWindow = '#'+clientWindow;
  $(clientWindow).fadeIn();
}
function suitsupply_updatecartamount(itemclassid, size)
{
  var newamount = parseInt($('#amount_'+sanitizeInputId(itemclassid+'_'+size)+'_input').val());

  execute_rpc_function({ func: "updatecartamount"
                       , itemclassid: itemclassid
                       , size: size
                       , newamount: newamount // <-- verwacht integer Number !
                       }, suitsupply_addtocartresult);
  return false;
}
function suitsupply_deletefromcart(itemclassid, size) //process 'x' in basket
{
  $('#basketitems_id_' + sanitizeInputId(itemclassid + '_' + size)).fadeOut();

  execute_rpc_function({ func: "updatecartamount"
                       , itemclassid: itemclassid
                       , size: size
                       , newamount: 0
                       }, suitsupply_deletefromcartresult);
  return false;
}
function suitsupply_emptycart()
{
  execute_rpc_function({ func: "deleteallfromcart"
                       }, suitsupply_deletefromcartresult);
  return false;
}
function suitsupply_deletefromcartresult(retval)
{
  suitsupply_setbasket(retval.newcart);
  //alert('artikel is verwijderd');
}
function suitsupply_addtowishlist(iIsiframe) //process the "add to wishlist" button
{
  isiframe = iIsiframe;
  
  //var size = document.getElementById('mysize').value;
  var size = (document.getElementById('mysize_input'))? document.getElementById('mysize_input').value : '';
  var itemclassid = parseInt(document.getElementById('itemclassid').value);
  var itemid = parseInt(document.getElementById('itemid').value);
  clickedItemId = itemclassid;
  clickedSize = size;

  execute_rpc_function({ func: "addtowishlist"
                       , itemclassid: itemclassid
                       , size: itemid ? itemid+'' : size
                       }, suitsupply_addtowishlistresult);
  return false;
}
function suitsupply_addtowishlistresult(retval)
{
  if(isiframe) {
    parent.suitsupply_setwishlist(retval.newcart);
    parent.showAddToCartAnimation('wishlistWindow');
    parent.Shadowbox.close(); 

  }
  else {
    suitsupply_setwishlist(retval.newcart);
  }



  showAddToCartAnimation('wishlistWindow');
}

function suitsupply_deletefromwishlist(itemclassid, size)
{
  $('#wishlistitems_id_' + sanitizeInputId(itemclassid + '_' + size)).fadeOut();

  execute_rpc_function({ func: "deletefromwishlist"
                       , itemclassid: itemclassid
                       , size: size
                       }, suitsupply_deletefromwishlistresult);
  return false;
}
function suitsupply_emptywishlist()
{
  execute_rpc_function({ func: "deleteallfromwishlist"
                       }, suitsupply_deletefromwishlistresult);
  return false;
}
function suitsupply_deletefromwishlistresult(retval)
{
  suitsupply_setwishlist(retval.newcart);
  //alert('artikel is verwijderd van wishlist');
}


function suitsupply_subscribe()
{
  var emailaddress = document.getElementById('newsletteremail').value;
  execute_rpc_function({ func: "subscribe"
                       , email: emailaddress
                       }, suitsupply_subscriberesult);
  //alert('verzoek verzonden');
  return false;
}
function suitsupply_subscriberesult(retval)
{
  //alert('verzoek ontvangen');
  if(retval.error_address) {
    $('#newsletteremail').addClass('error');
    $('#newsletterError').fadeIn().text('Invalid email address.').css({'color': 'red'}).delay(2000).fadeOut();
  }
  else if(retval.success) {
    SiteCatalyst_trackEvent('event1',{},'Newsletter');
    
    $('#newsletteremail').removeClass('error');
    $('#footernav input.text').val('');
    $('#newsletterError').fadeIn().text('Thanks for your subscription.').css({'color': 'black'}).delay(2000).fadeOut();
  }
  else {
    $('#newsletteremail').addClass('error');
    $('#newsletterError').fadeIn().text('Unknown error, please try again.').css({'color': 'red'}).delay(2000).fadeOut();
  }
}

function suitsupply_notifyme_homepage()
{
  var emailaddress = document.getElementById('notifymeemail').value;
  execute_rpc_function({ func: "informcustomer"
                       , email: emailaddress
                       }, suitsupply_notifyme_homepage_result);
  return false;
}
function suitsupply_notifyme_homepage_result(retval)
{
  if(retval.error_address) {
    $('#notifymeemail').addClass('error');
    $('#notifymeError').fadeIn().text('Invalid email address.').css({'color': 'red'}).delay(2000).fadeOut();
  }
  else if(retval.success) {
    
    $('#notifymeemail').removeClass('error');
    $('#footernav input.text').val('');
    $('#notifymeError').fadeIn().text('Thank you. You will be informed when the store opens.').css({'color': 'black'}).parent().delay(3000).fadeOut();
  }
  else {
    $('#notifymeemail').addClass('error');
    $('#notifymeError').fadeIn().text('Unknown error, please try again.').css({'color': 'red'}).delay(2000).fadeOut();
    //TODO Met delay venster uitfaden
  }
}

function suitsupply_createaccount()
{
  var emailaddress = document.getElementById('createaccountemail').value;
  execute_rpc_function({ func: "checknewaccount"
                       , email: emailaddress
                       }, suitsupply_createaccountresult);
  return false;
}
function suitsupply_createaccountresult(retval)
{
  if(retval.error_address) //addme client side check instead?
    $('#create_account_feedback').fadeIn().text('Invalid email address.').css({'color': 'red'}).delay(2000).fadeOut();
  else if(retval.exists)
    $('#create_account_feedback').fadeIn().text('Email address already exists. Already have an account?').css({'color': 'red'}).delay(2000).fadeOut();
  else
    location.href = webroot + 'userprofile/?createnewaccount=' + encodeURIComponent(retval.email);
}
function suitsupply_notifyme()
{

  var emailaddress = document.getElementById('notifyemail').value;
  var itemclassid = parseInt(document.getElementById('itemclassid').value);
  execute_rpc_function({ func: "notifyme"
                       , email: emailaddress
                       , itemclassid: itemclassid
                       }, suitsupply_notifymeresult);
  return false;
}
function suitsupply_notifymeresult(retval)
{
  if(retval.error_address)
  {
    $('#notify_result_feedback').fadeIn().text('Invalid email address.').css({'color': 'red'}).delay(2000).fadeOut();
  }
  else if(retval.success)
  {
    $('#notifyemail').val('')
    $('#notify_result_feedback').fadeIn().text('Thank you. You will be notified.').css({'color': 'black'});
    $('#notify_email_box_ipt, #notify_email_box_btn').fadeOut();
  }
  else
  {
    $('#notify_result_feedback').fadeIn().text('Unknown error, please try again.').css({'color': 'red'}).delay(2000).fadeOut();
  }
}

/*
     FAQ support
*/
function initialize_faq_document()
{
  /* we accept faqs structured as:
     <h1>
     <h2>
     <anything else>
     <anything else>
     <h1/h2/h3/h4/h5/h6>
     <anything else>
     <anything else>
     <anything else>

     etc */

  var seenquestionheader = false;
  for(var node = document.getElementById("faqbody").firstChild; node; node=node.nextSibling)
  {
    if(!node.tagName)
      continue; //probably whitespace

    var isheader = node.tagName.toUpperCase() == 'H1'; //this will accept h2

    if(isheader)
    {
      node.className = 'nocufon';
      node.onclick = toggle_faq_section;
      node.currently_open = false;
      node.style.margin = "";
      node.style.padding = "";
      node.childNodes[1].style.fontSize = "9pt";
      seenquestionheader = true;
    }
    else if(seenquestionheader)
    {
      node.style.display='none'; //content inside a faq question header, hide
      node.style.margin="";
      node.style.className="";
    }
  }
}

function toggle_faq_section()
{
  var currentsectionopen = false;
  for(var node = document.getElementById("faqbody").firstChild; node; node=node.nextSibling)
  {
    if(!node.tagName)
      continue; //probably whitespace

    var isheader = node.tagName.toUpperCase() == 'H1'; //this will accept h2
    if(isheader)
    {
      if(node == this) //start opening if this is the currently selected section
      {
        node.currently_opened=!node.currently_opened;
        currentsectionopen = node.currently_opened;
      }
      else
      {
        currentsectionopen = false;
        node.currently_opened = false;
      }
      continue;
    }
    node.style.display = currentsectionopen ? 'block' : 'none';
  }
}

/* Card support */
function suitsupply_checkgiftcard()
{
  var gifta = document.getElementById('giftcarda').value;
  var giftb = document.getElementById('giftcardb').value;
  var giftc = document.getElementById('giftcardc').value;
  var giftd = document.getElementById('giftcardd').value;
  var gifte = document.getElementById('giftcarde').value;

  $('giftcarda').removeClass('error');
  $('giftcardb').removeClass('error');
  $('giftcardc').removeClass('error');
  $('giftcardd').removeClass('error');
  $('giftcarde').removeClass('error');
  document.getElementById('invalidcode').style.display = 'none';
  document.getElementById('validcode').style.display = 'none';

  execute_rpc_function({ func: "checkgiftcard"
                       , code: [gifta,giftb,giftc,giftd,gifte]
                       }, suitsupply_checkgiftcardresult);
  return false;
}
function suitsupply_checkgiftcardresult(retval)
{
  SiteCatalyst_trackEvent('event8',{},'Gift card Check');

  if(retval.invalidcode)
  {
    $('giftcarda').addClass('error');
    $('giftcardb').addClass('error');
    $('giftcardc').addClass('error');
    $('giftcardd').addClass('error');
    $('giftcarde').addClass('error');

    document.getElementById('invalidcode').style.display = 'block';
  }
  else if(retval.success) //retval.amount is in cents
  {
    document.getElementById('validcode').style.display = 'block';
    document.getElementById('giftcardamount').firstChild.nodeValue = retval.currency + ' ' + (retval.amount/100.0);
  }
  else
  {
    alert('something went wrong');
  }
}

/* **********************************************************************************************
      Shop categories
*/

function suitsupply_updatefilterurl(name, value) //update the filter in the hash. assuming all values are safe and don't need encoding
{
  var hashelts=location.hash.split('&');
  var found=false;
  for(var i=0;i<hashelts.length;++i)
    if(hashelts[i].split('=')[0]==name)
    {
      if(value)
        hashelts[i] = name + '=' + value;
      else
        hashelts.splice(i,1);

      found=true;
      break;
    }

  if(!found && value)
    hashelts.push(name + '=' + value);

  location.hash = hashelts.join('&');
  suitsupply_applycategoryfilters();
}
function suitsupply_applycategoryfilters()
{
  var productsholder = document.getElementById('cat_overview');
  if(!productsholder)
    return;

  //decode current filters
  var filters=[];
  var hashelts=location.hash.split('&');
  for(var i=0;i<hashelts.length;++i)
  {
    var toks = hashelts[i].split('=');
    if(toks[0] != 'subgroup' && toks[0].substr(0,7) != 'filter_')
      continue; //ignore invalid/odd data on the URL

    filters.push( { name: toks[0]
                  , value: toks[1]
                  }
                );
  }

  //display/hide lis based on whether they match the filter
  var products = productsholder.getElementsByTagName('li');
  for(var i=0;i<products.length;++i)
  {
    var product=products[i];
    if(!product.getAttribute('ss_subgroup'))
      continue; //stray <li> ? ignore

    var failed_filter = false;
    for(var j=0;j<filters.length && !failed_filter;++j)
    {
      if(product.getAttribute('ss_' + filters[j].name) != filters[j].value)
        failed_filter=true;
      //console.log(filters[j].name, product.getAttribute('ss_' + filters[j].name), filters[j].value, product, failed_filter);
    }

    product.style.display = failed_filter ? 'none' : 'block'; //not eg. list-item, css already set #cat_overview li to block
  }

  suitsupply_loadscrolledinimages();
}
function suitsupply_setsubgroup(newsubgroupid)
{
  suitsupply_updatefilterurl('subgroup', newsubgroupid);
  return false;
}

function suitsuipply_filterchanged(field)
{
  //log($(field).attr('ss_statsid'));
  //log($(field).attr('ss_statsvalue'));

  SiteCatalyst_trackEvent('event21', {
    'prop3'  : $(field).attr('ss_statsid'),
    'prop7'  : $(field).attr('ss_statsvalue'),
    'eVar15' : $(field).attr('ss_statsid') + ':' + $(field).attr('ss_statsvalue')
  }, 'Search filters Used');

  location.href = decodeURIComponent($(field).val());

  /*

  //var filtername = selectelt.name;
  //var selectedoption = selectelt.options[selectelt.selectedIndex].value;
  var filtername = $(field).next('dl').attr('id');
  var selectedoption = $(field).val();

  suitsupply_updatefilterurl(filtername, selectedoption);
  return false;
  */
}

function suitsuipply_subgroupchanged(field)
{

  return false;
  var subgroupid = $(field).val();
  suitsupply_setsubgroup(subgroupid);
}

function suitsupply_loadscrolledinimages() //display all images with a ss_scrolledinsrc when scrolled in
{
  var productsholder = document.getElementById('cat_overview');
  if(!productsholder)
    return;

  var windowheight = window.innerHeight; //sane browsers
  if(!windowheight)
    windowheight = document.documentElement.clientHeight; //IE6+ strict
  if(!windowheight)
    windowheight = document.body.clientHeight; //IE quirks

  var scrolltop = document.body.scrollTop ? document.body.scrollTop : document.documentElement.scrollTop;

  var checkimages = productsholder.getElementsByTagName('img');
  for(var i=0;i<checkimages.length;++i)
  {
    var img=checkimages[i];

    if(!img.getAttribute('ss_scrolledinsrc'))
      continue;

    var imgtop = $(img).offset().top;
    if(imgtop < scrolltop+windowheight) //it's in view
    {
      img.src = img.getAttribute('ss_scrolledinsrc');
      img.setAttribute('ss_scrolledinsrc','');
      $(img).hide().fadeIn('slow');
    }
  }
}

function suitsupply_articledeeplink(link) //redirect to a link with the hashesh
{
  location.href = link+'?'+location.hash.substr(1);
  return false;
}

/* **********************************************************************************************

   Shop items

*/
function suitsupply_opentellafriend(link)
{
  Shadowbox.open({
                            player: 'iframe',
                            content: link,
                            height: 500,
                            width: 740,
                            displayNav: false,
                            displayCounter: false,
                            showMovieControls: false,
                            troubleElements: ['select']
                    });
  return false;
}
function suitsupply_sendtellafriend(itemclassid, itemid)
{
  var mailfrom = document.getElementById('mailfrom').value;
  var mailto = document.getElementById('mailto').value;
  var mailnote = document.getElementById('mailnote').value;
  var mailcc = document.getElementById('mailcc').value=="yes";

  execute_rpc_function({ func: "tellafriend"
                       , mailfrom: mailfrom
                       , mailto: mailto
                       , mailnote: mailnote
                       , mailcc: mailcc
                       , itemclassid: itemclassid
                       , itemid: itemid
                       }, suitsupply_sendtellafriend_result);

  return false;
}
function suitsupply_sendtellafriend_result(retval)
{
  if(retval.invalid_address)
  {
  }
  else if(retval.success)
  {
    $('#share_confirm').hide();
    $('#share_confirm_box').fadeOut(function() {
      $('#share_result').show();
    });
    //ADDME close?
  }
}

/* **********************************************************************************************

   User profile
*/
function suitsupply_setstatelist(pulldownid, states)
{
  /*var pulldown = document.getElementById(pulldownid);
  //while(pulldown.firstChild) //remove current options
    //pulldown.removeChild(pulldown.firstChild);

  var setselected=-1;
  //set new options
  for(var i=0;i<states.length;++i)
  {
    var opt = states[i];
    pulldown.add(new Option(opt.name, opt.stateid),null);
  }*/

  $('#'+pulldownid+'_input').val('');
  if(states.length == 0) {
    $('#'+pulldownid).parents('tr').hide();
    return;
  }
  else {
    $('#'+pulldownid).parents('tr').show();
  }

  var newContent = '';
  for(var i=0;i<states.length;++i)
  {
    var opt = states[i];
    newContent += '<li><a href="#">'+opt.name+'<span class="value">'+opt.stateid+'</span></a></li>';
  }

  $('#'+pulldownid + ' dd ul').html(newContent);
  $('#'+pulldownid + ' dd ul li:last').addClass('last');
}
function suitsupply_updatestates(pulldownid, ob)
{
  var callback = function(retval) { suitsupply_updatestatesresponse(pulldownid, retval); }
  var countryvalue = ($(ob).val() != '')? parseInt($(ob).val()) : 0;

  execute_rpc_function({ func: "getstatelist"
                       , country: countryvalue
                       }, callback);
  return false;
}
function suitsupply_updatestatesresponse(pulldownid, retval)
{
  suitsupply_setstatelist(pulldownid, retval.states);
}

function suitsuipply_lookupzip(prefix)
{
  var callback = function(response) { suitsupply_updatezipresponse(prefix, response); }

  var countryvalue = ($('#'+prefix+'country_input').val() != '')? parseInt($('#'+prefix+'country_input').val()) : 0;
  var zip = document.getElementById(prefix+'zip').value;
  var housenumber = document.getElementById(prefix+'housenumber').value;

  execute_rpc_function({ func: "lookupaddress"
                       , zipcode: zip
                       , addressnr: (!parseInt(housenumber))  ? 0 : parseInt(housenumber)
                       , countryid: countryvalue
                       }, callback);
}
function suitsupply_updatezipresponse(prefix, resp)
{
  if(resp.city && resp.street && resp.zipcode)
  {
    document.getElementById(prefix+'city').value = resp.city;
    document.getElementById(prefix+'street').value = resp.street;
    document.getElementById(prefix+'zip').value = resp.zipcode;
  }
}

function ss_refresh(isFrame) {
  if(isFrame) {
    parent.location.reload();
  }
  else {
    location.reload();
  }
}
function ss_navigateTo(href, isFrame) {
  if(isFrame) {
    parent.location.href = href;
  }
  else {
    location.href = href;
  }
}


/* **********************************************************************************************

   Order pages
*/
function submit_with_button(formname, buttonname)
{
  document.getElementById('selectedbutton').name = buttonname;
  document.getElementById(formname).submit();
  return false;
}


function get_detail_name(fileName) {
  var titles = {
    '2_button_jacket_klepzak.png'       : '2 button jacket',
    '2_comma_5_button_jacket.png'       : '2.5 button jacket',
    'double_sided_vents.png'            : 'Double sided vents',
    'drop_6_jacket.png'                 : 'Drop 6 jacket',
    'drop_7_jacket.png'                 : 'Drop 7 jacket',
    'drop_8_jacket.png'                 : 'Drop 8 jacket',
    'half_lining.png'                   : 'Half lining',
    'heavier_english_shoulder.png'      : 'Heavier English Shoulder',
    'highter_waistband.png'             : 'Highter waistband',
    'kissing_buttons.png'               : 'Kissing buttons',
    'patch_pocket_jacket.png'           : 'Patch pocket jacket',
    'peak_label.png'                    : 'Peak label',
    'real_horn_buttons.png'             : 'Real horn buttons',
    'round_italian_shoulder.png'        : 'Round italian shoulder',
    'shorter_jacket.png'                : 'Shorter jacket',
    'slim_lapel.png'                    : 'Slim lapel',
    'slimmer_hem_width.png'             : 'Slimmer hem width',
    'slimmer_upper_leg.png'             : 'Slimmer upper leg',
    'soft_shoulder.png'                 : 'Soft shoulder',
    'ticket_pocket_jacket_slaunted.png' : 'Ticket pocket jacket slaunted',
    'ticket_pocket_jacket.png'          : 'Ticket pocket jacket',
    'washed_suit_unlined.png'           : 'Washed suit unlined',
    'working_buttons.png'               : 'Working buttons'
  };

  return titles[fileName]? titles[fileName] : '';
}


function SiteCatalyst_trackEvent(iEvents, iProperties, iDescription) {
  var s=s_gi(s_account);
  s.linkTrackVars='events'; // prop1,events
  s.linkTrackEvents=iEvents; // event1

  for(var p in iProperties) {
    s.linkTrackVars += ',' + p;
    s[p] = iProperties[p];
  }
  s.events=iEvents; //event1

  s.tl(this,'o',iDescription);
}

function sanitizeInputId(string) {
  return string.replace(/[^A-Z0-9_]/gi,'');
}

