/*** START functions for base page ***/
function set_mode(mode){
    document.MASTER.mode.value = mode;
    document.MASTER.submit();
}
function clickclear(thisfield, defaulttext) {
    if (thisfield.value == defaulttext) {
        thisfield.value = "";
    }
}
function clickrecall(thisfield, defaulttext) {
    if (thisfield.value == "") {
        thisfield.value = defaulttext;
    }
}
function check_terms() {
    var search_text = document.getElementById("search_terms");
    if(search_text.value == "Enter Keyword or Part #") {
        alert("You must enter something other than the default text in order to perform a search.");
        return;
    } else {
        set_mode('search');
    }
}
function send_to_cart(product_application_id) {
    document.MASTER2.product_application_id.value = product_application_id;
    document.MASTER2.submit();
}
/*
* this function is here so that when user clicks 'enter' after entering 
* search terms, it will submit the form
*/
function submitenter(myfield,e) {
    var keycode;
    if (window.event) 
        keycode = window.event.keyCode;
    else if (e) 
        keycode = e.which;
    else 
        return true;
    
    if (keycode == 13) {
        myfield.form.submit();
        return false;
    } else {
       return true;
    }
}
/*** END functions for base page ***/

/*** BEGIN functions for vehicle search ***/
function change_vehicle_make()
{
	var make = document.getElementById("search_make_id");
	var selected_make = make.options[make.selectedIndex].value;
	var response_div = "model_select";
	var url = "/shared/php/ajax/product_search.php?mode=get_search_models&search_make_id="+selected_make;
	call(url, response_div, '', 'Error');
}
function check_criteria()
{
	var make 			= document.getElementById("search_make_id");
	var selected_make 	= make.options[make.selectedIndex].value;	
	var make_name		= make.options[make.selectedIndex].text;
	var model 			= document.getElementById("search_model_id");
	var selected_model 	= model.options[model.selectedIndex].value;
	var model_name		= model.options[model.selectedIndex].text;
	var year 			= document.getElementById("search_year").value;
	var search_text 	= document.getElementById("search_terms");
	
	document.getElementById("search_make_name").value = make_name;
	document.getElementById("search_model_name").value = model_name;
	
	if(search_text.value == "Enter Keyword or Part #")
		search_text.value = "";
	
	if(selected_make == -1)
	{
		alert("You MUST select a Make.");
		return;
	}
	if(selected_model == -1)
	{
		alert("You MUST select a Model.");
		return;
	}
	if(year.length != 4 || year == "YYYY" || !IsNumeric(year))
	{
		alert("Please enter the 4 digit year.");
		return;
	}

	// we've passed validation, so we can submit now
	set_mode("search");
}
function show_email_results_form()
{
	document.getElementById("email_results_to").value 			= "";
	document.getElementById("email_results_to_name").value 		= "";
	document.getElementById("email_results_to2").value 			= "";
	document.getElementById("email_results_to_name2").value 	= "";
	document.getElementById("email_results_from").value 		= "";	
	document.getElementById("email_results_from_name").value 	= "";
	document.getElementById("email_results_note").value 		= "";
	document.getElementById("email_results_link").style.display = "none";
	document.getElementById("email_results_form").style.display = "block";
	document.getElementById("send_results").innerHTML 			= "";
	document.getElementById("send_results").style.display 		= "none";
}
function hide_email_results_form()
{
	document.getElementById("email_results_link").style.display = "block";
	document.getElementById("email_results_form").style.display = "none";
}
function send_email_results_link(form_object) 
{
	var message_text = "";
	if(document.getElementById("email_results_from").value == "")
		message_text += "Your email address is required.\n"
	if(document.getElementById("email_results_to").value == "" && document.getElementById("email_results_to2").value == "")
		message_text += "You must enter the email address of at least one friend."
	
	if(message_text != "")
	{
		alert(message_text);
		return;
	}

	var response_div = "send_results";
	document.getElementById(response_div).innerHTML = "";
	document.getElementById(response_div).style.display = "block";
	form_object.mode.value = "share_results";
	var params = getFormValues(form_object);
	var url = "/shared/php/ajax/product_search.php";
	var response = call_returning_response(url, params, response_div, 'POST', true, "Sending Email. Please wait ...")
	if(response.search("error") == -1 && response != "")
	{
		hide_email_results_form();
	}
}
/*** END functions for vehicle search ***/

/*** START functions for results ***/
function select_tab(tab_id) {
    if(tab_id != lasttab_id) {
        //highlight new one
        document.getElementById(tab_id).className = "active";
        document.getElementById('content_' + tab_id).className = "tab_content";

		if(document.getElementById(lasttab_id) != undefined)
		{
	        //remove from old
	        if(lasttab_id != null) {
	            if (overidden_style != 1) {
	                document.getElementById(lasttab_id).className = "tab_content";
	            }
	            document.getElementById('content_' + lasttab_id).className = "tab_hide";
	        }
        }
        lasttab_id = tab_id;
        document.getElementById("tab_selected").value = tab_id;
    }
}

function SetPage(page, per_page, tab, cache_id) {
	var sort_pieces = get_sorting_criteria(tab);
	var sort_by = sort_pieces[0];
	var sort_direction = sort_pieces[1];
	var params = get_refinement_criteria();
	
	if(tab == "general") {
		var url = "/shared/php/ajax/product_search.php?mode=get_general_results&cache_id="+cache_id+"&page="+page+"&per_page="+per_page+"&sort_by="+sort_by+"&sort_direction="+sort_direction+"&"+params;
		var results_div = "content_generalresults";
	}
	if(tab == "detailed") {
		var url = "/shared/php/ajax/product_search.php?mode=get_detailed_results&cache_id="+cache_id+"&page="+page+"&per_page="+per_page+"&sort_by="+sort_by+"&sort_direction="+sort_direction+"&"+params+"&select_product_image="+select_product_image+"&select_product_function="+select_product_function;
		var results_div = "content_detailedresults";
	}
	call(url, results_div, "Getting Results. Please wait ...", "An error has been encountered!");	
}

function change_results_per_page(per_page, tab, cache_id) {
	// set the 'per_page' value in the refine form for its use
	if(tab == "general")
		document.refine.per_page.value = per_page;
	if(tab == "detailed")
		document.refine.per_page_detailed.value = per_page;
	
	// see how we need to sort the results
	var sort_pieces = get_sorting_criteria(tab);
	var sort_by = sort_pieces[0];
	var sort_direction = sort_pieces[1];
	// get the refinement criteria
	var params = get_refinement_criteria();

	if(tab == "general") {
		var url = "/shared/php/ajax/product_search.php?mode=get_general_results&cache_id="+cache_id+"&per_page="+per_page+"&sort_by="+sort_by+"&sort_direction="+sort_direction+"&"+params;
		var results_div = "content_generalresults";
	}
	if(tab == "detailed") {
		var url = "/shared/php/ajax/product_search.php?mode=get_detailed_results&cache_id="+cache_id+"&per_page="+per_page+"&sort_by="+sort_by+"&sort_direction="+sort_direction+"&"+params+"&select_product_image="+select_product_image+"&select_product_function="+select_product_function;
		var results_div = "content_detailedresults";
	}
	call(url, results_div, "Getting Results. Please wait ...", "An error has been encountered!");	
}

function sort_results(form, per_page, tab, cache_id) {
	var sort_pieces = get_sorting_criteria(tab);
	var sort_by = sort_pieces[0];
	var sort_direction = sort_pieces[1];
	var params = get_refinement_criteria();

	if(tab == "general") {
		var url = "/shared/php/ajax/product_search.php?mode=get_general_results&cache_id="+cache_id+"&per_page="+per_page+"&sort_by="+sort_by+"&sort_direction="+sort_direction+"&"+params;
		var results_div = "content_generalresults";
	}
	if(tab == "detailed") {
		var url = "/shared/php/ajax/product_search.php?mode=get_detailed_results&cache_id="+cache_id+"&per_page="+per_page+"&sort_by="+sort_by+"&sort_direction="+sort_direction+"&"+params+"&select_product_image="+select_product_image+"&select_product_function="+select_product_function;
		var results_div = "content_detailedresults";
	}
	call(url, results_div, "Sorting Results. Please wait ...", "An error has been encountered!");
}

function refine_results(cache_id) 
{
	// get the tab that we are on
	var selected_tab = document.getElementById('tab_selected').value;
	// reset variable so tabs are no longer cached
	v_generalresults = 0;
	v_detailedresults = 0;
	// get the refining parameters
	var params = get_refinement_criteria();
	
	// if refining by make or model, make sure on 'detailed results'
	// OR if vehicle search, make sure on 'detailed results'
	var make_id		= document.getElementById("make_id").value;
	var model_id 	= document.getElementById("model_id").value;
	var is_vehicle_search = document.getElementById("is_vehicle_search").value;
	if(make_id > 0 || model_id > 0 || is_vehicle_search == 1)
	{
		selected_tab 									= "detailedresults";
		document.getElementById('tab_selected').value 	= selected_tab;
	}
	
	// determine the url
	if(document.getElementById("generalresults") != undefined)
	{
		if(selected_tab == "generalresults")
			var url = "/shared/php/ajax/product_search.php?mode=get_general_results&cache_id="+cache_id+"&"+params+"&select_product_image="+select_product_image+"&select_product_function="+select_product_function;
		else 
		{
			var url = "/shared/php/ajax/product_search.php?mode=get_general_results&cache_id="+cache_id+"&"+params+"&select_product_image="+select_product_image+"&select_product_function="+select_product_function;		
			call(url, "content_generalresults", 'Getting Results. Please wait ...', 'Error');
			select_tab("generalresults");
			v_generalresults = 1;
		}
	}
	if(document.getElementById("detailedresults") != undefined)
	{
		if(selected_tab == "detailedresults")
			var url = "/shared/php/ajax/product_search.php?mode=get_detailed_results&cache_id="+cache_id+"&"+params+"&select_product_image="+select_product_image+"&select_product_function="+select_product_function;
	}
	// refresh the selected tab	
	makeactive(selected_tab, url);
}

function get_sorting_criteria(tab) {
	var sort_name = "sort_"+tab;
	var select = document.getElementById(sort_name);
	var selected_sort_value = select.options[select.selectedIndex].value;
	var sort_pieces = selected_sort_value.split("_");
	
	return sort_pieces;
}

function get_refinement_criteria() {
	// get the values from the form
	var form = document.refine;
    var params = getFormValues(form);
    
    // need values for min and max for selected range
    var range = form.price_range;
    var selected_range = range.options[range.selectedIndex].value;
    
    if(selected_range != -1) {
    	var range_pieces = selected_range.split("_");
    	var min_price = range_pieces[0];
    	var max_price = range_pieces[1];

    	params = params + "&min_price=" + min_price + "&max_price=" + max_price;
    }
    return params;	
}

function get_brand_options(cache_id) {
	var manufacturer = document.getElementById("manufacturer_id");
	var selected_manufacturer = manufacturer.options[manufacturer.selectedIndex].value;
	var response_div = "brand_dropdown";
	var url = "/shared/php/ajax/product_search.php?mode=get_brand_list&cache_id="+cache_id+"&manufacturer_id="+selected_manufacturer;
	call(url, response_div, 'Getting Brand list. Please wait ...', 'Error');
}

function get_model_options(cache_id) {
	var make = document.getElementById("make_id");
	var selected_make = make.options[make.selectedIndex].value;
	var response_div = "model_dropdown";
	var url = "/shared/php/ajax/product_search.php?mode=get_model_list&cache_id="+cache_id+"&make_id="+selected_make;
	call(url, response_div, 'Getting Model list. Please wait ...', 'Error');
}

function get_detailed(cache_id) {
	var params = get_refinement_criteria();
	
	var url = "/shared/php/ajax/product_search.php?mode=get_detailed_results&cache_id="+cache_id+"&"+params+"&select_product_image="+select_product_image+"&select_product_function="+select_product_function;
	var results_div = "content_detailedresults";
	call(url, results_div, "Getting Results. Please wait ...", "An error has been encountered!")
}
/*** END functions for results ***/

function IsNumeric(string)
{
   	var valid_chars = "0123456789";
   	var character 	= "";
   	var result 		= true;

   	if (string.length == 0) return false;

   	//  test strString consists of valid characters listed above
   	for (i = 0; i < string.length && result == true; i++)
    {
      	character = string.charAt(i);
      	if (valid_chars.indexOf(character) == -1)
        {
        	result = false;
        }
	}
   	return result;
}