﻿// Bags Configurator.

// Default Fixed query values.
function initQueryValues() {
	// Required: AttribSetCode:
	queryAttribSetCode = "BAGS";
	// Fixed Query Values:
	queryValues = {Levels:"BAGS CASES",CategoryID:"BagsCases",LinkName:"Find Your Bag"};
	// Copy queryValues to resetValues
	resetValues = {};
	for (f in queryValues){
		resetValues[f]=queryValues[f];
	}
}
// Initialize control values.
$(document).ready(
function()
{
// Default Fixed query values.
initQueryValues();
// advanced section:
$('#linkmenuAdvanced').click(function() { displayAdvSection(); });
// wire up option lists.
$.setMenuOffset("menuSpecsBrandSelect",{'eX':0,'eY':22});
$('#linkmenuSpecsBrandSelect').click( function(){ $(this).toggleMenu('#menuSpecsBrandSelect','#linkmenuSpecsBrandSelect'); } );
$('#menuSpecsBrandSelect > a').click( function(){ optionValue(this,'#menuSpecsBrandSelect','#linkmenuSpecsBrandSelect'); } );

$.setMenuOffset("menuSpecsStyle",{'eX':0,'eY':22});
$('#linkmenuSpecsStyle').click( function(){ $(this).toggleMenu('#menuSpecsStyle','#linkmenuSpecsStyle'); } );
$('#menuSpecsStyle > a').click( function(){ optionValue(this,'#menuSpecsStyle','#linkmenuSpecsStyle'); } );

$.setMenuOffset("menuSpecsGear",{'eX':-0,'eY':22});
$('#linkmenuSpecsGear').click( function(){ $(this).toggleMenu('#menuSpecsGear','#linkmenuSpecsGear'); } );
$('#menuSpecsGear > a').click( function(){ 
	var _label = this.innerHTML;
	if (this.innerHTML.length > 29) { this.innerHTML = this.innerHTML.substring(0,29); }
	optionValue(this,'#menuSpecsGear','#linkmenuSpecsGear'); 
	this.innerHTML = _label;
	} );

$.setMenuOffset("menuSpecsMaterial",{'eX':0,'eY':22});
$('#linkmenuSpecsMaterial').click( function(){ $(this).toggleMenu('#menuSpecsMaterial','#linkmenuSpecsMaterial'); } );
$('#menuSpecsMaterial > a').click( function(){ optionValue(this,'#menuSpecsMaterial','#linkmenuSpecsMaterial'); } );

// wire up sliders

$("#slider_pricerange").slider({
		  minValue: 100,
		  maxValue: 1000,
		  startValues:[100,1000],
		  slide: function(e,ui) {
			  handleSliderPrice_slide(ui.values[0],ui.values[1]);
		  },
		  stop: function(e,ui) { 
		      handleSliderPrice_stop(ui.values[0],ui.values[1]);
		  }
});

 
 $('.selectAdvanced > a').click(function(e){ 
		// Multiple selection enabled.
		var alreadySelected = (/selected/.test($(this).attr("class")));
		
		if (alreadySelected) {
			// remove from list.
			$(this).removeClass("selected");
			switch(this.title) 
			{
				case "Additional Storage": updateQueryValue("Options","","o4"); break;
				case "All Weather": updateQueryValue("Options","","o5"); break;
				case "Customizable Interior": updateQueryValue("Options","","o8"); break;
				case "Rolling": updateQueryValue("Options","","o9"); break;
				case "Tripod Attachment": updateQueryValue("Options","","o7"); break;
			}
		} else {
			$(this).addClass("selected");
			switch(this.title) 
			{
				case "Additional Storage": updateQueryValue("Options","Yes","o4"); break;
				case "All Weather": updateQueryValue("Options","Yes","o5"); break;
				case "Customizable Interior": updateQueryValue("Options","Yes","o8"); break;
				case "Rolling": updateQueryValue("Options","Yes","o9"); break;
				case "Tripod Attachment": updateQueryValue("Options","Yes","o7"); break;
			}
		}
		ajaxResultCount();
 });

// Get init data if exists.
if(!getInitData())
{
	// Update Item Count using Fixed Query Values.
	ajaxResultCount();
}

}
);

function displayAdvSection() {
	if ($.browser.msie) {
		 $('#menuAdvancedSpec').toggle(); 
	} else { 
		$('#menuAdvancedSpec').slideToggle(500); 
	}
}

// Puts the option value into the correct field.
function getOptionField(obj)
{
	//alert(obj.id);
	obj = $(obj).get(0);
	switch(obj.id)
	{
		case "menuSpecsBrandSelect": return {field:"Manuf",options:null};
		case "menuSpecsStyle": return {field:"Options",options:"o1"};
		case "menuSpecsGear": return {field:"Options",options:"o3"};
		case "menuSpecsMaterial": return {field:"Options",options:"o6"};
	}
	return {field:"unk",options:null};	
}

// Reset values
// Reverse engineer values back into the controls that contain them.
function applyResetValues(clickReset){
	// remove all queryValues and assign resetValues.
	//delete queryValues;
	if (clickReset) {  // is 'true' when reset is clicked.
		// revert to init values.
		initQueryValues(); 
	} else {
		// Reset values take over.
		queryValues = {};
		for (i in resetValues) {
			queryValues[i] = resetValues[i];
		}
	}
	// Sync UI.
	// Option Values:
	$("#linkmenuSpecsBrandSelect > span").text((resetValues.Manuf && resetValues.Manuf != "") ? resetValues.Manuf : "Select Brand");
	
	// Specs Data
	
	// Apply values to UI controls.
	var attribFields = (queryValues.af && queryValues.af != "" && queryValues.av && queryValues.av != "") ? queryValues.af.split("|") : [];
	var attribValues = (queryValues.af && queryValues.af != "" && queryValues.av && queryValues.av != "") ? queryValues.av.split("|") : [];

	// Sync specValues.
	//delete specValues;
	specValues = {};
	for (i in attribFields) {
		specValues[attribFields[i]] = attribValues[i];
	}
	
	var option_style = "", option_gear="", option_material="";
	var optionIsAdvanced = false;
	
	// Advanced Fields: key_name:[title,reset_value,optionfield,match_value,type]
	var advanced_values = [["Additional Storage", "", "o4", "Yes"], 
	["All Weather", "", "o5", "Yes"], 
	["Customizable Interior", "", "o8", "Yes"], 
	["Rolling", "", "o9", "Yes"], 
	["Tripod Attachment", "", "o7", "Yes"]];
	
	// loop through fields.
	for (i = 0; i < attribFields.length; i++) {
		
		// Style.
		if (attribFields[i] == "o1" && attribValues[i] != null && attribValues[i] != "") {
			option_style = (attribValues[i].indexOf(":")>0) ? attribValues[i].substring(0,attribValues[i].indexOf(":")) : attribValues[i]; // if ":";
		}
		//Gear Capacity.
		if (attribFields[i] == "o3" && attribValues[i] != null && attribValues[i] != "") {
			option_gear = attribValues[i];
		}
		//Material
		if (attribFields[i] == "o6" && attribValues[i] != null && attribValues[i] != "") {
			option_material = attribValues[i];
		}
		
		for (j = 0; j < advanced_values.length; j++) {
			if (attribFields[i] == advanced_values[j][2] && attribValues[i] != null && attribValues[i] == advanced_values[j][3]) {
				advanced_values[j][1] = attribValues[i];
				optionIsAdvanced=true; 
			}
		}
		
	} // end for
	// Process Specs Data.
	// flag advanced section
	if (option_material) { 
		optionIsAdvanced=true; 
	}
	if (optionIsAdvanced) { 
		if ($('#menuAdvancedSpec').css('display')=='none') { 
			displayAdvSection();
		}
	}
	
	// apply option values.
	$("#linkmenuSpecsStyle > span").text(option_style || "Carrying Style");
	$("#linkmenuSpecsMaterial > span").text(option_material || "Material");
	if (option_gear.length > 29) { option_gear = option_gear.substring(0,29); }
	$("#linkmenuSpecsGear > span").text(option_gear || "Bag Size / Capacity");
	
	// Apply advanced values.
	for (i = 0; i < advanced_values.length; i++) {
		if (advanced_values[i][1] != "") {
			$(".selectAdvanced > a[title=" + advanced_values[i][0] + "]").each(function(){
				if (!(/selected/.test($(this).attr("class")))) {
					$(this).addClass("selected");
				}
			});
		}
		else {
			$(".selectAdvanced > a[title=" + advanced_values[i][0] + "]").removeClass("selected");
		}
		//updateQueryValue("Options",advanced_values[adv_name][0],advanced_values[adv_name][1]);
	}	
	
	// Price Range
	var pr1, pr2;
	if (queryValues.pr1 && queryValues.pr2 && (parseFloat(queryValues.pr1) <= parseFloat(queryValues.pr2))) {
		queryValues.pr1 = (parseFloat(queryValues.pr1) >= slideRange_Price.lower ? parseFloat(queryValues.pr1) : slideRange_Price.lower);
		queryValues.pr2 = (parseFloat(queryValues.pr2) <= slideRange_Price.upper ? parseFloat(queryValues.pr2) : slideRange_Price.upper);
	}
	else {
		queryValues.pr1 = slideRange_Price.lower;
		queryValues.pr2 = slideRange_Price.upper;
	}
	$("#slider_pricerange").sliderMoveMultipleTo(0, queryValues.pr1, null, true, false);
	$("#slider_pricerange").sliderMoveMultipleTo(1, queryValues.pr2, null, true, false);
	// Remove from query because these are default values.
	if (parseFloat(queryValues.pr1)==slideRange_Price.lower && parseFloat(queryValues.pr2)==slideRange_Price.upper)
	{
		delete queryValues.pr1;
		delete queryValues.pr2;
	}
	
	// Update
	ajaxResultCount();
}

// Slide Ranges.
var slideRange_Price = {lower:100,upper:1000,roundDecimals:0,unit:"$",_lower:100,_upper:1000,_upperChanged:false};

var handleSliderPrice_slide = function(lower, upper)
{
	slideRange_Price._lower = lower;
	slideRange_Price._upper = upper;
	$("#slider_pr_value").html(slideRange_Price.unit + slideRange_Price._lower + " to " + slideRange_Price.unit + slideRange_Price._upper);
}
var handleSliderPrice_stop = function(lower, upper)
{
	slideRange_Price._lower = lower;
	slideRange_Price._upper = upper;
	if (slideRange_Price._lower==slideRange_Price.lower && slideRange_Price._upper==slideRange_Price.upper)
	{
		// Clear query / at default positions.
		updateQueryValue("pr1","",null);
		updateQueryValue("pr2","",null);
	}
	else
	{
		updateQueryValue("pr1",slideRange_Price._lower,null);
		updateQueryValue("pr2",slideRange_Price._upper,null);
	} 
	// Update Item Count.
	ajaxResultCount();
}

