//---------------------------------------------------------------------------
// Utility routines used by various javascript functions to create new querys
// from existing urls.  If current browser url does not reflect current query,
// these functions are not useful (since they are not aware of the current
// application state.)  These functions are used sparingly in the reference
// implementation only in conjunction with modules that contain form element.
//---------------------------------------------------------------------------

function ConstructURL(url,removeterms,addterms) {
	var params = BuildURLArray(url);
	var newurl = "";
	for (var i=0; i<params.length; i++) {
		val = CheckArray(removeterms,params[i][0]);
		if (val == -1)
			newurl = newurl + "&" + params[i][0] + "=" + params[i][1];
	}
	for (var i=0; i<addterms.length; i++) {
		newurl = newurl + "&" + addterms[i];
	}
	if (newurl.length > 0) {
		newurl = newurl.substr(1);
		newurl = "?"+newurl;
	}
	else {
		newurl = "?N="+eneroot;
	}
	return newurl;
}
function BuildURLArray(oldurl) {
	var returnArray = new Array();
	var url;
	if (oldurl == "CURRENTURL")
		url = location.search;
	else if (oldurl == "BLANKURL") {

	}
	else {
		var tokens = oldurl.split("?");
		url = "?"+tokens[1];
	}		
	if (url) {
		url = url.substr(1);
		var params = url.split("&");
		for (var i=0; i<params.length; i++) {
			var param = params[i].split("=");
			returnArray[i] = param;
		}
	}
	return returnArray;
}
function CheckArray(removeterms,checkterm) {
	for (var i=0; i<removeterms.length; i++) {
		if (removeterms[i] == checkterm)
			return 1;
	}
	return -1;
}
function GetValue(url, term) {
	var params = BuildURLArray(url);
	for (var i=0; i<params.length; i++) {
		if (params[i][0] == term) {
			return params[i][1];
		}
	}
	return -1;
}

//---------------------------------------------------------------------------
// Function used by nav_records_header.aspx to control record list display
//---------------------------------------------------------------------------
function SetDisplayKey() {

	// Get new display key from form element
	var displayKey 	= encodeURIComponent(document.headerform.displayKey.value);

	// Alert if only dimension search is being performed
	if (displayKey == "") {

		alert("Please enter a property key to display as record name.");
	}
	else {
		// Create new url with adjusted displayKey
		var removeterms = ["displayKey","in_dym","in_dim_search"];
		var addterms = ["displayKey="+displayKey];
		var newurl = ConstructURL("CURRENTURL", removeterms, addterms);
		location.search = newurl;
	}

}


//---------------------------------------------------------------------------
// Function used by nav_range_controls.aspx to control form elements
//---------------------------------------------------------------------------
function RangeFilter() {

	// Get range filter property, function, and values from form elements
	var property 	= encodeURIComponent(document.range_prop_form.rangeprop.value);
	var func 	= document.range_func_form.rangefunc[document.range_func_form.rangefunc.selectedIndex].value;
	var value1 	= encodeURIComponent(document.range_value1_form.rangevalue1.value);
	var value2 	= encodeURIComponent(document.range_value2_form.rangevalue2.value);		

	// Alerts
	if (property == "")
		alert("Please enter a numeric property/dimension name.");
	else if (value1 == "")
		alert("Please enter a valid numeric range.");
	else if ((func == "BTWN") && (value2 == ""))
		alert("Please enter end of range.");
	else if ((func == "BTWN") && ((value1 != "") && (value2 != ""))) {

		// Create new url with range filter
		var removeterms = ["Ne","No","Nao","D","Dx","Nf","in_dym","in_dim_search"];
		var addterms = ["Nf="+property+"|"+func+"+"+value1+"+"+value2];
		var newurl = ConstructURL("CURRENTURL", removeterms, addterms);
		location.search = newurl;
	}
	else {

		// Create new url with range filter
		var removeterms = ["Ne","No","Nao","D","Dx","Nf","in_dym","in_dim_search"];
		var addterms = ["Nf="+property+"|"+func+"+"+value1];
		var newurl = ConstructURL("CURRENTURL", removeterms, addterms);
		location.search = newurl;
	}
}

//---------------------------------------------------------------------------

// Function used by misc_searchbox.aspx to control form elements

//---------------------------------------------------------------------------

function Search() {

        // Get search property and term values from form elements
        var property    = document.search_prop_form.searchprop[document.search_prop_form.searchprop.selectedIndex].value;
        var terms       = encodeURIComponent(document.search_terms_form.searchterms.value);
		var mode        = "matchallpartial";
		// document.search_mode_form.searchmode[document.search_mode_form.searchmode.selectedIndex].value;
		
		terms = terms.replace("%20","+");
		
		terms = terms.replace(/^\s+|\s+$/g,"");
		
		terms = terms.replace("S-","");
		terms = terms.replace("s-","");
		
		if(terms != "")
		 {
        // Alert if only dimension search is being performed
        if (property == "-1") {
                
                alert("Since no valid search property is available, only dimension search will be processed.");
                
                // Create new url with only dimension search
                var removeterms = ["N","Ne","No","Nao","Nty","D","Dx","in_dym","in_dim_search"];
                var addterms = ["D="+terms,"Dx=mode+"+mode];
                var newurl = ConstructURL("CURRENTURL", removeterms, addterms);
				location = "http://www.onlinefabricstore.net/search.htm" + newurl;
                // location.search = newurl; USE THIS IF YOU WANT TO SEARCH WITHIN A CATEGORY
        }
        else {
                // Create new url with property search and dimension search
                var removeterms = ["N","Ne","No","Nao","Ntk","Ntt","D","Nty","Ntx","Dx","in_dym","in_dim_search"];
                var addterms = ["Ntk="+property,"Ntt="+terms,"Nty=1","D="+terms,"Ntx=mode+"+mode,"Dx=mode+"+mode];
                var newurl = ConstructURL("CURRENTURL", removeterms, addterms);
                location = "http://www.onlinefabricstore.net/search.htm" + newurl;
				// location.search = newurl;
        }
		
		}
}

