/**
 * @namespace The FBN object provides a namespace for all things FBN
 */
var FBN = window.FBN || {};

FBN.refiner = {
    init : function() {
        // set events on all normal form widgets
        $(".refiner input[type='checkbox'],.refiner input[type='radio'],.refiner select").bind("change",function() {
            FBN.refiner.submit();
        });
        
        // watch for errant form submissions
        $(".refiner form").bind("submit",FBN.refiner.submit);
        
        // set events on sldier widgets
	    $(".sliderWidget").bind("slide",function(event, ui) {
	        $(ui.handle).parent().parent().find(".slideBottom input")[0].value = ui.values[0];
	        $(ui.handle).parent().parent().find(".slideBottom .value").text(ui.values[0]);
	        $(ui.handle).parent().parent().find(".slideTop input")[0].value = ui.values[1];
	        $(ui.handle).parent().parent().find(".slideTop .value").text(ui.values[1]);
	    });
	    $(".sliderWidget").bind("slidechange",function(event, ui) {
          var sSlider = $(ui.handle).parent().parent().find(".slideBottom input")[0].name;
          var sEndeca = "";
          if (sSlider == "widthStart") {sEndeca = "P_Width";}
          else if (sSlider == "depthStart") {sEndeca = "P_Depth";}
          else if (sSlider == "heightStart") {sEndeca = "P_Height";}
          else if (sSlider == "priceStart") {sEndeca = "P_Price";}
          if (sEndeca == "") {return false;}

          var sBegin = $(ui.handle).parent().parent().find(".slideBottom input")[0].value;
          var sEnd = $(ui.handle).parent().parent().find(".slideTop input")[0].value;
          var sBeginVar = $(ui.handle).parent().parent().find(".slideBottom input")[0].name;
          var sEndVar = $(ui.handle).parent().parent().find(".slideTop input")[0].name;
          
          var sURL = document.URL;
          var sReplace = sURL.substring(sURL.indexOf("Nf:"), sURL.indexOf(",")+1);
          if (sURL.indexOf("Nf:") > -1) {sURL = sURL.replace(sReplace, "");}
          sReplace = sURL.substring(sURL.indexOf("&" + sBeginVar), sURL.length);
          if (sURL.indexOf("&" + sBeginVar) > -1) {sURL = sURL.replace(sReplace, "");}
          sURL = sURL.replace("NS1=", "NS1=Nf:" + sEndeca + "%7cBTWN+" + sBegin + "+" + sEnd + ",");
          sURL += "&" + sBeginVar + "=" + sBegin + "&" + sEndVar + "=" + sEnd;
          //alert(sURL);
          location.href = sURL;

          //  FBN.refiner.submit();
	    });
    	
    	// set events on linkWidget
	    $(".linkOptions a").live("click",FBN.refiner.handleLinkClick);
	    // set events on linkWidgetSelected
	    $(".linkSelection a").live("click",FBN.refiner.handleLinkUndo);
    	
	    // watch for pagination
	    $(".pageInfo .pages a").bind("click",FBN.refiner.paginate);
    },
    submit : function() {
        alert("SUBMITTING: " + $(".refiner form").serialize());
        return false;
    },
    paginate : function() {
        alert("PAGING: Page" + $(this).text() + " + " + $(".refiner form").serialize());
        return false;
    },
    handleLinkClick : function(e) {
        if ($(this).is(".more")) { // kick off ajax request for more items
            $(this).parent().parent().load(this.href);
            e.preventDefault();
        } else { // this is a selection
            var fieldName = this.href.match(/fieldName=([^&]*)/)[1];
            var value = this.href.match(/value=([^&]*)/)[1];
            var label = $(this).parent().html();
            
            // set value
            $(".refiner input[name="+fieldName+"]").attr("value",value);
            
            // create selected label 
            $(this).closest(".linkWidget").append("<p class='linkSelection'>"+label+" <a href='?fieldName="+fieldName+"' class='undo'>undo</a></p>");
            
            // hide item selections
            $(this).closest(".linkWidget").find(".linkOptions").hide();
            
            // submit
            
            FBN.refiner.submit();
            e.preventDefault();
        }   
    },
    handleLinkUndo : function(e) {
        
        // show old options
        $(this).closest(".linkWidget").find(".linkOptions").show();
        
        // remove selected box & kill input value
        var fieldName = this.href.match(/fieldName=([^&]*)/)[1];
        $(".refiner input[name="+fieldName+"]").attr("value",null);
        
        $(this).closest(".linkWidget").find(".linkSelection").remove();
        
        // submit
        FBN.refiner.submit();
        e.preventDefault();
    }
}

$(document).ready(function() {
    FBN.refiner.init();
});