$(document).ready(function() {
  // disable form submission by enter key
  $('input').keypress(
    function(event) { if (event.keyCode == 13) { return false } }
  );  
	registerWizardHandlers();
  registerAddToCartHandler();	
  product.load(); 
  initializeProductShare();
  initializeImageHandlers();

});


var registerWizardHandlers = function() {
}


var registerAddToCartHandler = function() {

  // Add to Cart Handler
  $("#add_to_cart_button").click(function () {

    // Copy over selected preview_form values (if any)
    $("#preview_form_elements").remove();		
    var new_form_element_div = $('<div id="preview_form_elements">');

    $("#preview_form input, #preview_form select").each(function() {
      var child = $(this);
      if (child.is(":radio") || child.is(":checkbox")) {
        if (child.is(":checked"))
          new_form_element_div.append( mk_input(child.attr("name"), child.val() ) );
      }
      else
        new_form_element_div.append( mk_input(child.attr("name"), child.val() ) );
    });

    $("#product_form").append(new_form_element_div);

    // If order_url exists, it means we are updating an existing item in the cart
    if ( $('#order_url').is('*') ) {
      $('#product_form').attr('action', $('#order_url').val() );
    }

    // Set cursor to busy
    $('body').css('cursor', 'wait');

    // Submit form
    $('#product_form').submit();

	});	
}


function initializeProductShare() {
  $("a#facebook_share").click(function() {
    var share_url = product.generateURL('facebook');
    var share_message = "Check this out from Jewlr.com! " + $('#product_name').text();
    open_facebook_share(share_url, share_message);
    return false;
  });

  $("a#twitter_share").click(function() {
    var share_url = product.generateURL('twitter');
    var share_message = "Check this out from Jewlr.com! " + $('#product_name').text();
    open_twitter_share(share_url, share_message);
    return false;
  });
}

// Price Functions
var setBasePrice = function(price) {
  price = Number(price);  
  $('#productBasePrice').val(price);
  updatePrice();
}

// This method may be overridden
var updatePrice = function() {
  var totalPrice = Number( $('#productBasePrice').val() ) + calculateSurcharges();
  var retailPrice = (totalPrice * 1.4);
  var savingsPrice = retailPrice - totalPrice;

  var displayTotalPrice = number_to_currency(totalPrice);
  var displayRetailPrice = number_to_currency(retailPrice);
  var displaySavingsPrice = number_to_currency(savingsPrice);
  
  
  $('.priceDisplay').html(displayTotalPrice);  
  $('.priceSaleItem').html(displayTotalPrice);  
  $('#price_original').html(displayRetailPrice);
  $('.PriceSaveLrg').html(displaySavingsPrice);
}

var calculateSurcharges = function() {
  return 0.0;  
}

// Thumbnail / Images Functions
MagicZoomPlus.options = {
  'expand-effect':'bounce',
  'disable-expand':'true',
  'click-to-initialize': 'true',
  'click-to-activate': 'false'
};

var initializeImageHandlers = function(){
  $("#main-image").data('selectedThumb', $('#main-image img').attr('src'));
  $("#productThumbnailURL").val($('#main-image img').attr('src'));
  $('ul.thumbnails li').eq(0).addClass('selected');
  $('ul.thumbnails li a').click(function() {
    $('ul.thumbnails li').removeClass('selected');
    $(this).parent('li').addClass('selected');

    if ($(this).children('img').data('tags').type == 'image') {

      $("#main-image").data('selectedThumb', $(this).attr('href'));
      $("#main-image a.MagicZoomPlus").attr('href', $(this).attr('href').replace('/product/', '/large/') );
      $("#productThumbnailURL").val($(this).attr('href'));
      $('#video-container').html('');
      $('#zoom-div img').attr('src', $('#zoom-div img').attr('src').replace('icon_360_txt','icon_zoom') );
    } else if ($(this).children('img').data('tags').type == 'video') {

      $('#main-image img.largeImage').attr('src', '/images/jewlr/misc/1x1.gif');
      $('div.MagicZoomBigImageCont img').attr('src', '/images/jewlr/misc/1x1.gif');      
      $('#zoom-div img').attr('src', $('#zoom-div img').attr('src').replace('icon_zoom','icon_360_txt') );
      var video_file_url = $(this).attr('href');
      var videoHtml =
        '<OBJECT CLASSID="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" WIDTH="220" HEIGHT="220" CODEBASE="http://active.macromedia.com/flash5/cabs/swflash.cab#version=5,0,0,0">' +
        '<PARAM NAME="MOVIE" VALUE="' + video_file_url + '">' +
        '<PARAM NAME="PLAY" VALUE="false">' +
        '<PARAM NAME="LOOP" VALUE="true">' +
        '<PARAM NAME="QUALITY" VALUE="high">' +
        '<PARAM NAME="SCALE" value="noborder">' +
        '<EMBED SRC="' + video_file_url + '" WIDTH="220" HEIGHT="220" PLAY="false" LOOP="true" QUALITY="high" scale="noborder" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"></EMBED>';
      $('#video-container').html(videoHtml);      
    }

    return false;
  }).hover(
    function() {
      if ($(this).children('img').data('tags').type == 'image' && $('#video-container').html() == '') {
        $('#main-image img.largeImage').attr('src', $(this).attr('href').replace('mini', 'product'));
        $('div.MagicZoomBigImageCont img').attr('src', $(this).attr('href').replace('/product/', '/large/'));
      }
    },
    function() {
      if ($(this).children('img').data('tags').type == 'image' && $('#video-container').html() == '') {
        $('#main-image img.largeImage').attr('src', $("#main-image").data('selectedThumb'));
      }
    }
  );
};
  
// Helper functions
function mk_input(name, val) {
    return $('<input type="hidden" name="' + name + '" />').val(val).get(0)
}

function limitChars(item, position, infodiv)
{
  var allowNum = $('#engraving_allow_numeric').val();
  var allowSpace = $('#engraving_allow_spaces').val();
  var allowSymbol = $('#engraving_allow_symbols').val();
  var multipleLimits = $('#engraving_multiple_limits').val();

  var input_suffix;
  if (multipleLimits == 'true')
    input_suffix = '_' + position;
  else
    input_suffix = '_1';
  var min = parseInt($('#engraving_min_chars' + input_suffix).val());
  var limit = parseInt($('#engraving_max_chars' + input_suffix).val());
  var caps = $('#engraving_caps').val();
  
  var text = $('#' + item).val(); 
  var textlength = text.length; 

   var regex = '[^a-zA-Z';
   var regexend = ']';
  
  if (allowNum == "true") {                          
  var regex = (regex + '0-9');
  }

  if (allowSpace == "true") {
  var regex = (regex + ' ');                             
  }
  
  if (allowSymbol == "true") {
    var regex = (regex + '&@$!%?*#,.-');                            
  }
                                    
  var regex = (regex + regexend); 
   re = new RegExp(regex,'g')                                    

  // Adjust case
  var newText = text.replace(re,'');
  if (caps == 'All Caps')
    newText = newText.toUpperCase();
  else if (caps == 'Title Caps')
    newText = newText.titleCase();
  else if (caps == 'No Caps')
    newText = newText.toLowerCase();

  $('#' + item).val(newText);
  
  if(textlength < min)
  {
    $('#' + infodiv).html('You need at least '+ min +' Characters');
    return false;
  }

  if(textlength > limit)
  {
    $('#' + infodiv).html('You cannot write more than '+limit+' characters.');
    $('#' + item).val(newText.substr(0,limit));
    return false;
  }   
  else
  {   
    $('#' + infodiv).html(''+ (limit - textlength) +' Characters Left'); 

    return true;
  } 
  
}