$(document).ready(function(){

  /**********************
  ** Font Size Control **
  **********************/

  $('div#headerFontControls').fadeIn('fast');
  $('div#headerFontControls a.minus, div#headerFontControls a.plus').corner('4px');

  // get current font size from session variable
  currentFontSize = String(sessvars.fontSize) != 'undefined' ? Number(sessvars.fontSize) : 100

  if(parseInt(currentFontSize) < 50 || parseInt(currentFontSize) > 170) currentFontSize = 100;
  $('div#container').css('font-size', currentFontSize + '%');

  // function to decrease the font size
  function decreaseFontSize(){
    currentFontSize >= 60 ? currentFontSize -= 10 : null;
    $('div#container').css('font-size', currentFontSize + '%');
    sessvars.fontSize = currentFontSize;
  }

  // function to increase the font size
  function increaseFontSize(){
    currentFontSize <= 160 ? currentFontSize += 10 : null;
    $('div#container').css('font-size', currentFontSize + '%');
    sessvars.fontSize = currentFontSize;
  }

  // function to set font size to default
  function defaultFontSize(){
      currentFontSize = 100;
      $('div#container').css('font-size', currentFontSize + '%');
      sessvars.fontSize = currentFontSize;
  }

  // decrease font size
  $('div#headerFontControls a.minus').bind('click keypress', function(event){
    if(event.keyCode == '13' || event.type == 'click'){
      decreaseFontSize();
    }
  });

  // increase font size
  $('div#headerFontControls a.plus').bind('click keypress', function(event){
    if(event.keyCode == '13' || event.type == 'click'){
      increaseFontSize();
    }
  });

  // default font size
  $('div#headerFontControls div.default a').bind('click keypress', function(event){
    if(event.keyCode == '13' || event.type == 'click'){
      defaultFontSize();
    }
  });


  /***********
  ** E-mail **
  ***********/

  // show e-mail addresses that are obfuscated
  $('a.email').each(function(){
    $(this).attr('rel', $(this).siblings('.e-mail-hidden').text());
    $(this).nospam();
    if($(this).attr('href') != null) $(this).attr('title', $(this).attr('href').slice(7));
    $(this).append('&nbsp;<span>' + $(this).attr('title') + '</span>');
  });


  /**************************
  ** General Configuration **
  **************************/

  // apply word wrap css (causes validator to mark document as invalid even though it's recommended by the CSS (an obvious bug on their end)
  $('footer#footer, aside#side1, aside#side2, .wordWrapBreakWord, table.datatables td').css('word-wrap', 'break-word');

  // make some links buttons
  $('nav#menuMain a, nav#menuAlt a, a#menuAdminToggler, nav#menuAdmin a, aside#pageSubSidebar .pageSubContainer a, input:submit, input:button:not(.deleteButton), button')
    .button()
    .fadeTo(0, '0.7')
    .bind('mouseover focusin', function(){
      $(this).stop().animate({'opacity': '1.0'}, 'slow');
    }).bind('mouseout focusout', function(){
      $(this).stop().animate({'opacity': '0.7'}, 'slow');
    });

  if($('body').hasClass('admin')){
    // create icons in admin section
    var icons = $('a#menuItemAdminControlPanel').button('option', 'icons');
    $('a#menuItemAdminControlPanel').button('option', 'icons', { primary: 'ui-icon-home' });
    var icons = $('a#menuItemAdminManageSite').button('option', 'icons');
    $('a#menuItemAdminManageSite').button('option', 'icons', { primary: 'ui-icon-bookmark' });
    var icons = $('a#menuItemAdminManageAccounts').button('option', 'icons');
    $('a#menuItemAdminManageAccounts').button('option', 'icons', { primary: 'ui-icon-person' });
    var icons = $('a#menuItemAdminManageContent').button('option', 'icons');
    $('a#menuItemAdminManageContent').button('option', 'icons', { primary: 'ui-icon-pencil' });
    var icons = $('a#menuItemAdminManageImages').button('option', 'icons');
    $('a#menuItemAdminManageImages').button('option', 'icons', { primary: 'ui-icon-image' });
    var icons = $('a#menuItemAdminManageLinks').button('option', 'icons');
    $('a#menuItemAdminManageLinks').button('option', 'icons', { primary: 'ui-icon-link' });
    var icons = $('a#menuItemAdminManageStorefront').button('option', 'icons');
    $('a#menuItemAdminManageStorefront').button('option', 'icons', { primary: 'ui-icon-cart' });
    var icons = $('a#menuItemAdminManageProducts').button('option', 'icons');
    $('a#menuItemAdminManageProducts').button('option', 'icons', { primary: 'ui-icon-tag' });
    var icons = $('a#menuItemAdminManageShipping').button('option', 'icons');
    $('a#menuItemAdminManageShipping').button('option', 'icons', { primary: 'ui-icon-mail-closed' });
    var icons = $('a#menuItemAdminReports').button('option', 'icons');
    $('a#menuItemAdminReports').button('option', 'icons', { primary: 'ui-icon-note' });
  }


  // add underline to checkbox focus
  $('input:checkbox').focusin(function(){
    $('label[for="' + $(this).attr('id') + '"]').addClass('checkboxFocus');
  }).focusout(function(){
    $('label[for="' + $(this).attr('id') + '"]').removeClass('checkboxFocus');
  });
  /*
  // the old button hover classes
  $('input:submit, input:button').addClass('ui-state-default').hover(function(){
    $(this).toggleClass('ui-state-default');
    $(this).toggleClass('ui-state-hover');
  }).focusin(function(){
    $(this).toggleClass('ui-state-default');
    $(this).toggleClass('ui-state-focus');
  }).focusout(function(){
    $(this).toggleClass('ui-state-default');
    $(this).toggleClass('ui-state-focus');
  });*/


  /************************
  ** Admin Configuration **
  ************************/

  // admin menu toggler
  if(String(sessvars.adminMenuOpen) == 'undefined') sessvars.adminMenuOpen = true;
  if(sessvars.adminMenuOpen){
    openAdminMenu();
  }else{
    closeAdminMenu();
    $('nav#menuAdmin').hide();
  }

  $('a#menuAdminToggler').bind('click', function(){
    $('nav#menuAdmin').slideToggle();
    return false;
  });

  function openAdminMenu(){
    $('a#menuAdminToggler').text('Click to hide Administration menu').attr('title', 'Click here to hide the Administration menu').addClass('open');
    sessvars.adminMenuOpen = true;
  }

  function closeAdminMenu(){
    $('a#menuAdminToggler').text('Click to show Administration menu').attr('title', 'Click here to show the Administration menu').removeClass('open');
    sessvars.adminMenuOpen = false;
  }

  $('a#menuAdminToggler').toggle(function(){
    (sessvars.adminMenuOpen) ? closeAdminMenu() : openAdminMenu();
  }, function(){
    (sessvars.adminMenuOpen) ? closeAdminMenu() : openAdminMenu();
  });


  // admin submenu toggler
 /* var options = {};

  $('aside#pageSubSidebar').hide();
  $('a#pageSubSidebarToggler').bind('click', function(){
    $('aside#pageSubSidebar').toggle('slide', options, 500);
    return false;
  });
  $('a#pageSubSidebarToggler').toggle(function(){
    $(this).attr('title', 'Click here to hide the Administration submenu').addClass('open');
  }, function(){
    $(this).attr('title', 'Click here to show the Administration submenu').removeClass('open');
  });*/

  if(!$.browser.msie){
    // Non-IE Browser configuration
    $('nav#menuAdmin').corner('bottom');
    $('a#menuAdminToggler').uncorner();
    $('aside#pageSubSidebar').corner('right');
    $('a#pageSubSidebarToggler').corner('5px left');

    // links page
    if($('body').attr('id') == 'bodyLinks'){
      $('section.sectionLink').corner();
    }
  }else{
    // IE configuration
    $('nav#menuMain a').css('padding', '5px 8px 5px 5px').corner('7px');
    $('nav#menuAlt a').css('padding', '5px 5px 5px 8px').corner('7px');
    $('header#header, aside#side1').corner('7px top cc:#85815a');
    $('header#header').corner('7px bottom cc:#646232');
    $('footer#footer').corner('7px top cc:#2c231e');
    $('footer#footer').corner('7px bottom cc:#2c231e');
    DD_roundies.addRule('fieldset', '7px')
    DD_roundies.addRule('header#content-title', '7px 7px 0px 0px');
    DD_roundies.addRule('div#content', '0px 0px 7px 7px');
    $('legend').css('margin-top', '-15px').css('background', '#fff');
  }
});
