// JavaScript Document
var search_servlet = "http://www.findapetonline.com/addons/category_selector/servlets/category_selector.php";
var search_controlList = new Array();
var search_parameters  = new Array();
/**
* The basic kick of the ajax category selector
* 
*/
function search_category_selector(){
	var selected_search_category  = document.getElementById('selected_search_category').value;
	var search_parameters         = new Array();
	search_parameters[search_parameters.length] = newParameter("parent_id",selected_search_category);
	search_parameters[search_parameters.length] = newParameter("showAll","true");
	search_parameters[search_parameters.length] = newParameter("showCategoryCount", "true");
	if(selected_search_category!=0){
		search_parameters[search_parameters.length] = newParameter("title", "Select A Subcategory");
	}
	AjaxRequest(search_servlet, search_select_category_handler, search_parameters);
}//END FUNCTION get_select_box

function newParameter(name, value){
	parm = new Array();
	parm["name"] = name;
	parm["value"] = value;
	return parm;
}//END FUNCTION newParameter

/**
* Response handler for the request object
*/
function search_select_category_handler(){
	if(httpRequest.readyState == 4){
		if(httpRequest.status == 200){
			responseXML = httpRequest.responseXML;
			responseText = httpRequest.responseText;
			if(responseText!=""){
				addSearchSelect();
			}else{
				updateStateSelectBox();
			}
		}else{
			//document.getElementById('readyState').innerHTML = httpRequest.status;
		}
	}else{
		//document.getElementById('status').innerHTML = httpRequest.readyState;
	}
}//END FUNCTION select_category_handler

//supporting functions

/**
* adds the new select element to the page
*/
function addSearchSelect(){
	var categories = responseXML.getElementsByTagName('category');
	var list = "";
	var newSelect = document.createElement('select');
	for(i=0;i<categories.length;i++){
		list += categories[i].getAttribute("text") + " = " + categories[i].getAttribute("value") + "\r\n";
	}
	newSelect.setAttribute("id","searchList_" + search_controlList.length);
	newSelect.setAttribute("class", "ajax_select");
	addEvent(newSelect, "change", setSelectedSearchCategory);
	for(i=0; i<categories.length;i++){
		var elOptNew = document.createElement('option');
		elOptNew.text = categories[i].getAttribute("text");
		elOptNew.value = categories[i].getAttribute("value");
		try {
			newSelect.add(elOptNew, null); // standards compliant; doesn't work in IE
		}
		catch(ex){
			newSelect.add(elOptNew); // IE only
		}
	}//END for
	search_controlList[search_controlList.length] = newSelect.id;
	document.getElementById("search_selector_controls").appendChild(newSelect);
	updateStateSelectBox();
	return true;
}//END FUNCTION addSelect

/**
* Controls the setting of the selected
* category in the appropriate field
*
*/
function setSelectedSearchCategory(){
	var category = this.options[this.selectedIndex].value;
	if(category!=0){
		document.getElementById("selected_search_category").value = category;
		if((search_controlList.length + 1)>this.id.split("_")[1]){
			removeElements(this.id.split("_")[1]);
		}
		search_category_selector();
	}
	return true;
}//END FUNCTION setSelectedCategory

function updateStateSelectBox(){
	var selected_search_category  = document.getElementById('selected_search_category').value;
	var search_parameters                = new Array();
	var thissearch_servlet               = "http://www.findapetonline.com/addons/category_selector/servlets/state_selector.php";
	search_parameters[search_parameters.length] = newParameter("selected_category",selected_search_category);
	AjaxRequest(thissearch_servlet, updateStateSelectBox_handler, search_parameters);
}

function updateStateSelectBox_handler(){
	if(httpRequest.readyState == 4){
		if(httpRequest.status == 200){
			responseXML = httpRequest.responseXML;
			responseText = httpRequest.responseText;
			if(responseXML){
				var stateSelector = document.getElementById("stateSelector")
				stateSelector.options.length=0;
				var states = responseXML.getElementsByTagName("state");
				for(i=0; i<states.length;i++){
					var elOptNew = document.createElement('option');
					elOptNew.text = states[i].getAttribute("text");
					elOptNew.value = states[i].getAttribute("value");
					try {
						stateSelector.add(elOptNew, null); // standards compliant; doesn't work in IE
					}
					catch(ex){
						stateSelector.add(elOptNew); // IE only
					}
				}
			}else if(responseText!=""){ alert(responseText); }
		}
	}
}

/**
* removes unwanted select elements from the page
*/
function removeElements(index){
	var temp_array = new Array();
	var el;
	var container = document.getElementById("search_selector_controls");
	for(i=0;i<search_controlList.length;i++){
		if(i>index){
			el = document.getElementById(search_controlList[i]);
			container.removeChild(el);
		}else{
			temp_array[i]=search_controlList[i];
		}
	}
	search_controlList = temp_array;
	return true;
}//END FUNCTION removeElements

/**
* adds an event to an element
*/
function addEvent( obj, type, fn ){ 
  if( obj.attachEvent ){ 
    obj['e'+type+fn] = fn; 
    obj[type+fn] = function(){obj['e'+type+fn]( window.event );} 
    obj.attachEvent( 'on'+type, obj[type+fn] ); 
  } else {
	  obj.addEventListener( type, fn, false ); 
  }
  return true;
}//END FUNCTION addEvent

/**
* removes an event from an element
*/
function removeEvent( obj, type, fn ){ 
  if( obj.detachEvent ){ 
    obj.detachEvent( 'on'+type, obj[type+fn] ); 
    obj[type+fn] = null; 
  } else {
    obj.removeEventListener( type, fn, false ); 
  }
  return true;
}//END FUNCTION removeEvent

function submitBrowseForm(myForm){
	try{
		var stateValue=document.getElementById("stateSelector").options[document.getElementById("stateSelector").selectedIndex].value;
	}catch(er){
		return false;
	}
	if(stateValue==0){
		var selected_search_category = document.getElementById("selected_search_category").value
		if(selected_search_category=="" || selected_search_category==0){
			return false;
		}
		window.location = "/index.php?a=5&b=" + selected_search_category;
		return false;
	}else{
		return true;
	}
}
//Kick things off
search_category_selector();