var replace_image, zoom, modal;

(function($) {
    $(function() {
	  if ($.browser.msie) {
	      fix_product_photos();
	  }
	  sideSpinners();
	  
	  // Activate cart-add validation if cart present
	  if($("form#cart_add_form").size()){ 
	       enable_cart_add_validation();
      }
	  
	  hide_default('#terms', 'Search');
	  hide_default('form.product_filter input[name=colors]', 'Specific Color');
    });

    function fix_product_photos() {
	$('#bd div.product-list, #bd div.slider').find('a:has(span.photo)').click(function(e) {
	    e.preventDefault();
	    document.location.href = this.href;
	});
    }
    
    function enable_cart_add_validation() {
        $("form#cart_add_form").submit(function(event){
            if(validate_cart_add()) {
                //submit
            }
            else {
                event.preventDefault();
            }
        });
    }
    
    function validate_cart_add() {
        var valid = cart_quantity_check();
        if (valid) {
            var sum = cart_quantity_sum();
            if (sum>0) {
                return true;
            }
            else {
                alert("No quantity entered.");
                return false;
            }
        }
        else {
            alert("Invalid quantity entered.");
            return false;
        }
    }
    
    function cart_quantity_check() {
        var qty_valid = true;
        $("input[name=quantity]").each(function(i){
           if (! IsNumeric($(this).val())){
                qty_valid = false;
           }
        });
        return qty_valid;
    }
    
    function cart_quantity_sum() {
        var qty_total = 0;
        $("input[name=quantity]").each(function(i){
           qty_total += parseInt($(this).val());
        });
        return qty_total;
    }
    
    function sideSpinners() {
        if (!$('div.side_spin').size()) { return }
        
        var spinnerItems = $('div#bd').find('div.side_spin')
        
        spinnerItems.each(function() {
            var textInput = $(this).find('input');
            var upLink = $(jQuery('<a class="up_link">up</a>'));
            var downLink = $(jQuery('<a class="down_link">down</a>'));
            $(this).append(upLink).prepend(downLink);
            
            upLink.click(function(c){
               c.preventDefault();
               if (textInput.val() == '') {textInput.val(0)}
               textInput.val(parseFloat(textInput.val()) + 1);
            });
            
            downLink.click(function(c){
               c.preventDefault();
               if (textInput.val() == '') {textInput.val(0)}
               if (textInput.val() == 0) {return}
               textInput.val(parseFloat(textInput.val()) - 1);
            });
            
            textInput.blur(function() {
               if (! IsNumeric($(this).val())) {
                   $(this).val(0)
               }
            })
            
        });
        
    }
    
    function IsNumeric(sText) {
       var ValidChars = "0123456789";
       var IsNumber=true;
       var Char;

       for (i = 0; i < sText.length && IsNumber == true; i++) 
          { 
          Char = sText.charAt(i); 
          if (ValidChars.indexOf(Char) == -1) 
             {
             IsNumber = false;
             }
          }
       return IsNumber;

       }
    
    
     function hide_default(selector, value) {
	 var item = $(selector);

	 item.focus(function() {
	    if (this.value == value) {
		this.value = '';
	    }
	 });

	 item.blur(function() {
	     if (this.value == '') {
		 this.value = value;
	     }
	 });
    }

    replace_image = function($img, href) {
	var new_img = new Image();
	new_img.onload = function() {
	    $img.replaceWith(new_img);
	};
	new_img.src = href;
    };

     zoom = function(selector, on_zoom) {
	   $(selector).click(function(e) {
	       e.preventDefault(); e.stopPropagation();
	       on_zoom.call(this);
	   });
     };

     modal = function(selector, width, height, cls) {
	 var modal = $(selector).dialog({
	       'autoOpen': false,
	       'draggable': false,
	       'height': height,
	       'width': width,
	       'resizable': false,
	       'modal': true,
	       'dialogClass': cls
	 });
	 return modal;
     };

 })(jQuery);
