/////////////////
// DCJ Library //
/////////////////

//////////////////////////
// DCJ Search functions //
//////////////////////////

var twidth       = 1000;
var ajax_module  = 'dcj_ajax.php';
var browser_mode = "u";// Might be: "u" - undefined, "p" - part, "b" - brand

function search_goto( url ){
	var search_sel = document.getElementById('search_sel').value;

	search_sel = encodeURIComponent(search_sel);
	search_sel = search_sel.replace(/-/g    ,"~");
	search_sel = search_sel.replace(/%20/g  ,"-");
	search_sel = search_sel.replace(/%2520/g,"-");
	top.location.href = url + "searcher/"+search_sel+".html";
	return(false);
}

function search_clear(mode){
	if(mode == 0){
		if(document.getElementById('search_sel').value == " -- Enter search string --")
			document.getElementById('search_sel').value = "";
	}
	else if(mode == 1){
		document.getElementById('search_sel').value = "";
	}
}

function search_place( publish_url, style, search_str ){
	var out="";

	//search_str = decodeURIComponent(search_str);
	out += "<form action=\""+publish_url+"\" method=\"post\" onsubmit=\"return false;\">";
	out += "	<table style=\"width:100%; height:1%; v-align: bottom;\" border=\"0\">";
	out += "		<tr>";
	out += "			<td width=\"70\" style=\"width:70px; vertical-align: middle;\">";
	out += "				<font size=\"2\" color=\"#FFFFFF\" style=\"vertical-align: middle;\">";
	out += "					&nbsp;&nbsp;Search:&nbsp;&nbsp;&nbsp;&nbsp;";
	out += "				</font>";
	out += "			</td>";
	out += "			<td style=\"text-align:left; width:400\">";
	out += "				<input  type=\"text\" name=\"search_sel\" id=\"search_sel\"";
	out += "				        value=\""+search_str+"\"";
	out += "				        style=\""+style+"; width:95%; height:15px\" onfocus=\"search_clear(0);\">";
	out += "			</td>";
	out += "			<td style=\"text-align:left;\">";
	out += "				<input type=\"submit\" name=\"\" value=\"Clear\"";
	out += "				       style=\"background:#7b1418; color:#ffffff;";
	out += "				               border: 2px solid #626562; width:60px\"";
	out += "				       onclick=\"search_clear(1);\">";
	out += "			</td>";
	out += "      <td>&nbsp;&nbsp;</td>";
	out += "			<td style=\"text-align:left;\">";
	out += "				<input type=\"submit\" name=\"\" value=\"Search\"";
	out += "				       style=\"background:#7b1418; color:#ffffff;";
	out += "				               border: 2px solid #626562; width:60px\"";
	out += "				       onclick=\"return search_goto('"+publish_url+"');\">";
	out += "			</td>";
	out += "      <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>";
	out += "		</tr>";
	out += "    <tr height=\"1px\">";
	out += "      <td colspan=\"4\">&nbsp;</td>";
	out += "    </tr>";
	out += "	</table>";
	out += "</form>";
	document.write(out);
	if(search_str == "" || typeof(search_str) == "undefined")
		window.setTimeout("document.getElementById('search_sel').value = \" -- Enter search string --\"", 500);
}

//////////////////////////
// DCJ Browse functions //
//////////////////////////

// Place browse boxes 


function browse_place( publish_url, image_url, style ){
	var out = "";

	out += "<form action=\"\" method=\"post\" onsubmit=\"return false;\">";
	out += "  <table style=\"width:100%; height:1%; v-align: bottom;\" border=\"0\">";

	//          Row 1
	out += "    <tr>";
	out += "      <td align=\"left\" width=\"70\" style=\"width:70px; vertical-align:middle\">";
	out += "         <font size=\"2\" color=\"#FFFFFF\">&nbsp;&nbsp;Brand:</font>";
	out += "      </td>";
	out += "      <td style=\"text-align:left; width:400\">";
	out += "        <select name=\"brand_sel\" id=\"brand_sel\"";
	out += "                style=\""+style+"; width:400; height:20px\"";
	out += "                title=\"Please select Brand or Part first. Use Reset to return to initial condition.\"";
	out += "                onchange='browse_get_models(\""+image_url+"\");' width='400'>";
	out += "        </select>";
	out += "      </td>";
	out += "      <td>&nbsp;&nbsp;</td>";
	out += "      <td>";
	out += "        <input type=\"button\" name=\"browse_reset\" value=\"Reset\"";
	out += "      style=\"background:#7b1418; color:#ffffff; border:2px solid #626562; width:60px\"";
	out += "      onclick=\"return browse_rst('"+image_url+"');\">";
	out += "      </td>";
	out += "      <td>&nbsp;&nbsp;</td>";
	out += "      <td>&nbsp;&nbsp;</td>";
	out += "      <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>";
	out += "    </tr>";
	out += "    <tr>";
	out += "      <td colspan=\"6\">&nbsp;</td>";
	out += "    </tr>";

	//          Row 2
	out += "    <tr>";
	out += "      <td align=\"left\" width=\"70\" style=\"width:70px; vertical-align:middle\">";
	out += "         <font size=\"2\" color=\"#FFFFFF\">&nbsp;&nbsp;Model:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>";
	out += "      </td>";
	out += "      <td align=\"left\">";
	out += "        <select name=\"model_sel\" id=\"model_sel\"";
	out += "                style=\""+style+"; width:400; height:20px\"";
	out += "                title=\"Please select model after you've selected brand.\"";
	out += "                onchange='browse_get_years(\""+image_url+"\");' width='400'>";
	out += "        </select>";
	out += "      </td>";
	out += "      <td></td>";
	out += "    </tr>";
	out += "    <tr>";
	out += "      <td colspan=\"6\">&nbsp;</td>";
	out += "    </tr>";

	//          Row 3
	out += "    <tr>";
	out += "      <td align=\"left\" width=\"70\" style=\"width:70px; vertical-align:middle\">";
	out += "         <font size=\"2\" color=\"#FFFFFF\">&nbsp;&nbsp;Year:</font>";
	out += "      </td>";
	out += "      <td align=\"left\">";
	out += "        <select name=\"year_sel\" id=\"year_sel\"";
	out += "                style=\""+style+"; width:400; height:20px\"";
	out += "                title=\"Please select year after you've selected model.\"";
	out += "                onchange='browse_sel_years(\""+image_url+"\",2);' width='400'>";
	out += "        </select>";
	out += "      </td>";
	out += "      <td><input type=\"hidden\" name=\"bmy_sel\"";
	out += "                                   id=\"bmy_sel\" value=\"\">&nbsp;&nbsp;</td>";
	out += "      <td>&nbsp;&nbsp;</td>";
	out += "      <td>&nbsp;&nbsp;</td>";
	out += "      <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>";
	out += "    </tr>";
	out += "    <tr>";
	out += "      <td colspan=\"6\">&nbsp;</td>";
	out += "    </tr>";

	//          Row 4
	out += "    <tr>";
	out += "      <td align=\"left\" width=\"70\" style=\"width:70px; vertical-align:middle\">";
	out += "        <font size=\"2\" color=\"#FFFFFF\" style=\"vertical-align:middle\">&nbsp;&nbsp;Part:&nbsp;&nbsp;</font>";
	out += "      </td>";
	out += "      <td align=\"left\">";
	out += "        <select name=\"part_sel\" id=\"part_sel\"";
	out += "                style=\""+style+"; width:400; height:20px\"";
	out += "                title=\"Please select Part or Brand first. Use Reset to return to initial condition.\"";
	out += "                onchange=\"browse_get_brands('"+image_url+"', 1 );\" width='400'>";
	out += "        </select>";
	out += "      </td>";
	out += "      <td>&nbsp;&nbsp;</td>";
	out += "      <td>";
	out += "        <input type=\"button\" name=\"browse_reset\" value=\"Reset\"";
	out += "               style=\"background:#7b1418; color:#ffffff;  border: 2px solid #626562; width:60px\"";
	out += "               onclick=\"return browse_rst('"+image_url+"');\">";
	out += "      </td>";
	out += "      <td>&nbsp;&nbsp;</td>";
	out += "      <td>";
	out += "        <input type=\"submit\" name=\"browse_sub\" value=\"Browse\"";
	out += "               style=\"background:#7b1418; color:#ffffff;  border: 2px solid #626562; width:60px\"";
	out += "               onclick=\"return browse_goto('"+publish_url+"');\">";
	out += "      </td>";
	out += "      <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>";
	out += "    </tr>";
	out += "    <tr>";
	out += "      <td colspan=\"6\">&nbsp;</td>";
	out += "    </tr>";

	out += "  </table>";
	out += "</form>";
	document.write(out);
	//window.setTimeout("browse_rst();", 500);
	window.setTimeout("browse_get_parts(image_url, 0);" ,500) // Part names
	window.setTimeout("browse_get_brands(image_url, 0);",500) // Brand names
	window.setTimeout("browse_rst_models(image_url);"   ,500) // Model names
	window.setTimeout("browse_rst_years(image_url);"    ,500) // Years
}

// Goto browse result page

function browse_goto( url ){
	var brand_sel = getOptionSelectedText('brand_sel');
	var brand_val = getOptionSelectedValue('brand_sel');
	var model_sel = getOptionSelectedText('model_sel');
	var model_val = getOptionSelectedValue('model_sel');
	var year_sel = getOptionSelectedText('year_sel');
	var year_val = getOptionSelectedValue('year_sel');
	var part_sel = getOptionSelectedText('part_sel');
	var part_val = getOptionSelectedValue('part_sel');
	var bmy_sel  = document.getElementById('bmy_sel').value;

	part_sel = encodeURIComponent(part_sel);
	part_sel = part_sel.replace(/-/g    , "~");
	part_sel = part_sel.replace(/-/g    , "~");
	part_sel = part_sel.replace(/%20/g  , "-");
	part_sel = part_sel.replace(/%2520/g, "-");
	bmy_sel    = encodeURIComponent(bmy_sel);
	bmy_sel    = bmy_sel.replace(/-/g       , "~");
	bmy_sel    = bmy_sel.replace(/-/g       , "~");
	bmy_sel    = bmy_sel.replace(/%20/g     , "-");
	bmy_sel    = bmy_sel.replace(/%2520/g   , "-");
	if(brand_val == "null" && model_val == "null" && year_val == "null" && part_val == "null"){
		alert("Please select at least 'Brand' to browse!");
		return(false);
	}
/*
	else if(brand_val != "null" && model_val == "null" && year_val == "null" && part_val != "null"){
		alert("Please select also 'Model' (and 'year' if available)!");
		return(false);
	}
*/
	if(bmy_sel == ""){
		if(brand_val != "null")
			bmy_sel += brand_sel;
		if(model_val != "null")
			bmy_sel += " " + model_sel;
		if(year_val != "null")
			bmy_sel += " " + year_sel;
		if(bmy_sel == "")
			bmy_sel = "allbrands";
		document.getElementById('bmy_sel').value = bmy_sel;
	}
	if(part_sel == "null" && bmy_sel == "null"){
		alert("Please select at least 'Brand' to browse!");
		return(false);
	}
	else{
		if(part_val == "null")
			part_sel = "allcategories";
		if(bmy_sel == "null")
			bmy_sel = "allbrands";
		top.location.href = url+"browser/"+part_sel+"/"+bmy_sel+".html";
	}
}

// Reset functions

function browse_rst_brands( ajax_url ){
	removeOptionAll( 'brand_sel' );
	appendOptionLast('brand_sel', "null"  , "-- Select brand --");
	browse_get_brands(ajax_url, 0);
}//end function

function browse_rst_models(){
	removeOptionAll( 'model_sel' );
	appendOptionLast('model_sel', "null"  , "-- Select Model --");
}//end function

function browse_rst_years(){
	removeOptionAll( 'year_sel' );
	appendOptionLast('year_sel', "null"  , "-- Select Year --");
}//end function

function browse_rst_parts( ajax_url ){
	removeOptionAll( 'part_sel' );
	appendOptionLast('part_sel', "null"  , "-- Select Part --");
	browse_get_parts(ajax_url, 0);
}//end function

// Reset all

function browse_rst( ajax_url ){
	browse_rst_brands( ajax_url );
	browse_rst_models();
	browse_rst_years();
	browse_rst_parts( ajax_url );
	browser_mode = "u";
}

// Get data functions

function browse_get_brands( ajax_url, mode ){
	var k;
	var option_id = 'brand_sel';
	var part_id   = document.getElementById('part_sel').value - 0;

	if(mode == 0){
		//Get all brands from database
		removeOptionAll(option_id);
		appendOptionLast(option_id, "null"  , "-- Loading Available Brands ... --");
		new Ajax.Request(ajax_url+ajax_module, {
			method:'get',
			parameters: {get: 'brand'},
			requestHeaders: {Accept: 'application/json'},
			onSuccess: function(transport){
				var item = transport.responseText.evalJSON(true);
				removeOptionAll(option_id);
				appendOptionLast(option_id, "null"  , "-- Select Brand --");
				for(k = 0; k < item.length; k++)
					appendOptionLast( option_id, item[k].id, decodeURIComponent(item[k].name) );
			}
		});
	}
	else if(mode == 1 && browser_mode != "b"){
		browser_mode = "p"
		//Get all brands from database
		removeOptionAll(option_id);
		appendOptionLast(option_id, "null"  , "-- Loading Available Brands ... --");
		new Ajax.Request(ajax_url+ajax_module, {
			method:'get',
			parameters: {get: 'brand', part: part_id},
			requestHeaders: {Accept: 'application/json'},
			onSuccess: function(transport){
				var item = transport.responseText.evalJSON(true);
				removeOptionAll(option_id);
				appendOptionLast(option_id, "null"  , "-- Select Brand. Found "+item.length+" --");
				for(k = 0; k < item.length; k++)
					appendOptionLast( option_id, item[k].id, decodeURIComponent(item[k].name) );
			}
		});
	}
}//end function

function browse_get_models( ajax_url, mode){

	// Get all models by make_id

	var k;
	var option_id = 'model_sel';
	var brand_id  = document.getElementById('brand_sel').value - 0;
	var part_id   = document.getElementById('part_sel').value - 0;

	//Get all brands from database
	if(browser_mode == "u")
		browser_mode = "b";
	browse_rst_years();
	removeOptionAll(option_id);
	appendOptionLast(option_id, "null"  , "-- Loading Available Models... --");
	new Ajax.Request(ajax_url+ajax_module, {
		method:'get',
		parameters: {get: 'model', part: part_id, id: brand_id },
		requestHeaders: {Accept: 'application/json'},
		onSuccess: function(transport){
			var item = transport.responseText.evalJSON(true);
			removeOptionAll(option_id);
			if(item.length < 1){
				appendOptionLast(option_id, "null"  , "-- Nothing Found --");
			}
			else{
				appendOptionLast(option_id, "null"  , "-- Select Model. Found "+item.length+" --");
				for(k = 0; k < item.length; k++)
					appendOptionLast( option_id, item[k].id, decodeURIComponent(item[k].name) );
			}
		}
	});
};

function browse_get_years( ajax_url ){
	var k;
	var option_id  = 'year_sel';
	var part_id    = getOptionSelectedValue('part_sel')  - 0;
	var brand_id   = getOptionSelectedValue('brand_sel') - 0;
	var model_id   = getOptionSelectedValue('model_sel') - 0;

	//Get all brands from database
	removeOptionAll(option_id);
	appendOptionLast(option_id, "null"  , "-- Loading Available Years... --");
	new Ajax.Request(ajax_url+ajax_module, {
		method:'get',
		parameters: {get: 'year', id: model_id, part: part_id, brand: brand_id },
		requestHeaders: {Accept: 'application/json'},
		onSuccess: function(transport){
			var item = transport.responseText.evalJSON(true);
			removeOptionAll(option_id);
			if(item.length < 1 || item[0].error){
				appendOptionLast(option_id, "null"  , "-- Nothing Found --");
				browse_sel_years( ajax_url, 0 );
			}
			else{
				appendOptionLast(option_id, "null"  , "-- Select year. Found "+item.length+" --");
				for(k = 0; k < item.length; k++)
					appendOptionLast( option_id, item[k].id, decodeURIComponent(item[k].name) );
				browse_sel_years( ajax_url, 1 );
			}
		}
	});
};

function browse_get_parts( ajax_url, mode ){
	var k;
	var option_id = 'part_sel';

	removeOptionAll(option_id);
	appendOptionLast(option_id, "null"  , "-- Loading Available Parts... --");
	if(mode == 0){
		// Get all parts from database
		new Ajax.Request(ajax_url+ajax_module, {
			method:'get',
			parameters: {get: 'part'},
			requestHeaders: {Accept: 'application/json'},
			onSuccess: function(transport){
				var item = transport.responseText.evalJSON(true);
				removeOptionAll(option_id);
				appendOptionLast(option_id, "null"  , "-- Select Part --");
				for(k = 0; k < item.length; k++)
					appendOptionLast( option_id, item[k].id, decodeURIComponent(item[k].name) );
			}//end method
		});//end new
	}
	else if(mode == 1){
		// Get parts by brand, model and year
		bmy_sel = encodeURIComponent(document.getElementById('bmy_sel').value);
		new Ajax.Request(ajax_url+ajax_module, {
			method:'get',
			parameters: {get: 'part', brand: bmy_sel},
			requestHeaders: {Accept: 'application/json'},
			onSuccess: function(transport){
				var item = transport.responseText.evalJSON(true);
				removeOptionAll(option_id);
				appendOptionLast(option_id, "null"  , "-- Select Part. Found "+item.length+" --");
				for(k = 0; k < item.length; k++)
					appendOptionLast( option_id, item[k].id, decodeURIComponent(item[k].name) );
			}//end method
		});//end new
	}
	else{
		return(false);
	}//end if
}//end function

// Selection done functions

function browse_sel_years( ajax_url, mode ){
	var brand_text = getOptionSelectedText('brand_sel');
	var model_text = getOptionSelectedText('model_sel');
	var year_text  = getOptionSelectedText('year_sel');

	if(mode == 0){
		// Brand and model selected but year not found
		document.getElementById('bmy_sel').value = brand_text+" "+model_text;
		if(browser_mode == "b")
			browse_get_parts( ajax_url, 1 );
	}
	else if(mode == 1){
		// Brand and model selected but year not selected
		document.getElementById('bmy_sel').value = brand_text+" "+model_text;
	}
	else if(mode == 2){
		// Brand, model and year selected
		document.getElementById('bmy_sel').value = brand_text+" "+model_text+" "+year_text;
		if(browser_mode == "b")
			browse_get_parts( ajax_url, 1 );
	}
	else{
		return(false);
	}
	return(document.getElementById('bmy_sel').value);
}

/////////////////////////
// Directory functions //
/////////////////////////

/*

function dir_place_list( publish_url, image_url, style){

	var out   = "";
	out += "<form action=\"\" method=\"post\" onsubmit=\"return false;\">";
	out += "  <table style=\"width:100%; height:1%; v-align: bottom;\" border=\"0\">";

	//          Row 1
	out += "    <tr>";
	out += "      <td align=\"left\" width=\"70\" style=\"width:70px; vertical-align:middle\">";
	out += "         <font size=\"2\" color=\"#FFFFFF\">&nbsp;&nbsp;Part:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font>";
	out += "      </td>";
	out += "      <td style=\"text-align:left; width:400\">";
	out += "        <select name=\"dir_sel\" id=\"dir_sel\"";
	out += "                style=\""+style+"; width:400; height:20px\"";
	out += "                title=\"Select Part full name.\"";
	out += "                width='400'>";
	out += "        </select>";
	out += "      </td>";
	out += "      <td>&nbsp;&nbsp;</td>";
	out += "      <td>";
	out += "        <input type=\"button\" name=\"dir_reset\" value=\"Show\"";
	out += "      style=\"background:#7b1418; color:#ffffff; border:2px solid #626562; width:60px\"";
	out += "      onclick=\"\">";
	out += "      </td>";
	out += "      <td>&nbsp;&nbsp;</td>";
	out += "      <td>&nbsp;&nbsp;</td>";
	out += "      <td>&nbsp;&nbsp;&nbsp;&nbsp;</td>";
	out += "    </tr>";
	out += "    <tr>";
	out += "      <td colspan=\"6\">&nbsp;</td>";
	out += "    </tr>";
	out += "  </table>";
	out += "</form>";
	document.write(out);
	window.setTimeout("dir_get_parts(image_url);" ,500) // Part names
}//end function

function dir_get_parts( ajax_url ){
	var option_id = 'dir_sel';

	removeOptionAll(option_id);
	appendOptionLast(option_id, "null"  , "-- Select Part FULL Name --");
	new Ajax.Request(ajax_url+ajax_module, {
		method:'get',
		parameters: {get: 'allparts', letter: 'A'},
			requestHeaders: {Accept: 'application/json'},
			onSuccess: function(transport){
				var item = transport.responseText.evalJSON(true);
				removeOptionAll(option_id);
				appendOptionLast(option_id, "null"  , "-- Select Part. Found "+item.length+" --");
				for(k = 0; k < item.length; k++)
					appendOptionLast( option_id, item[k].id, decodeURIComponent(item[k].name) );
			}//end method
		});//end new
}
*/

function description_show( num, mode ){
/*
	if( !document.getElementById('des_div'+num).style.display)
		return(false);
	if( !document.getElementById('des_link'+num).style.display)
		return(false);
*/
	if(mode == 0){
		document.getElementById('des_div'+num).style.display = "none";
		document.getElementById('des_link'+num).style.display = "block";
	}
	else if(mode == 1){
		document.getElementById('des_div'+num).style.display = "block";
		document.getElementById('des_link'+num).style.display = "none";
	}
}

////////////////////////////////
// SELECT -> OPTION functions //
////////////////////////////////
//
// sel_id - the ID of the select element
// val    - value of option
// txt    - text of option

// Insert option

function insertOptionBefore(sel_id, val, txt, num){
	var elSel = document.getElementById(sel_id);
	if (elSel.selectedIndex >= 0) {
		var elOptNew  = document.createElement('option');
		elOptNew.text  = txt;
		elOptNew.value = val;
		var elOptOld = elSel.options[elSel.selectedIndex];
		try {
			// standards compliant; doesn't work in IE
			elSel.add(elOptNew, elOptOld); 
		}
		catch(ex) {
			// IE only
			elSel.add(elOptNew, elSel.selectedIndex); 
		}
	}
}

// Append Option

function appendOptionLast(sel_id, val, txt){
	var elOptNew   = document.createElement('option');
	elOptNew.text  = txt;
	elOptNew.value = val;
	var elSel      = document.getElementById(sel_id);
  try {
		// standards compliant; doesn't work in IE
		elSel.add(elOptNew, null); 
	}
	catch(ex) {
		// IE only
		elSel.add(elOptNew);
	}
}

// Remove options

function removeOptionSelected(sel_id){
	var elSel = document.getElementById(sel_id);
	var i;
	for (i = elSel.length - 1; i>=0; i--)
		if (elSel.options[i].selected)
			elSel.remove(i);
}

function removeOptionLast(sel_id){
	var elSel = document.getElementById(sel_id);
	if (elSel.length > 0)
		elSel.remove(elSel.length - 1);
}

function removeOptionAll(sel_id){
	var elSel = document.getElementById(sel_id);
	while(elSel.length > 0)
		elSel.remove(elSel.length - 1);
}

// Get option

function getOptionSelectedValue(sel_id){
	if( !document.getElementById(sel_id) )
		return(false);
	var elSel   = document.getElementById(sel_id);
	var elIndex = elSel.selectedIndex;
	var elValue = elSel.options[elIndex].value;
	return elValue;
}

function getOptionSelectedText(sel_id){
	if( !document.getElementById(sel_id) )
		return(false);
	var elSel   = document.getElementById(sel_id);
	var elIndex = elSel.selectedIndex;
	var elText  = elSel.options[elIndex].text;
	return elText;
}

