var templateParts = Object();
var jsSearchTypeHolder;
var jsSearchSelectHolder;
var types = Object();
function init(){
	jsSearchTypeHolder = document.getElementById('jsSearchTypeHolder');
	jsSearchSelectHolder = document.getElementById('jsSearchSelectHolder');
	
	//Create jsSearchHolder content
	jsSearchTypeHolder.innerHTML = getTypeSelector();
	if( typeof(selected) == 'object' ){
		selectType( selected.type, selected.field );
	}
}
function getTypeSelector(){
	var typeSelector = templateParts['searchInType'].valueOf();
	var typeSelectorOption = templateParts['searchInTypeOption'].valueOf();
	var options = '';
	for( var type in types ){
		var replace = Array();
		replace['###JS:TYPE_NAME###'] = types[type]['title'];
		replace['###JS:TYPE_VALUE###'] = type;
		if( typeof(selected) == 'object' && selected.type == type ){
			replace['###JS:TYPE_SELECTED###'] = ' selected="selected"';
		}else{
			replace['###JS:TYPE_SELECTED###'] = '';
		}
		options += stringReplace( replace, typeSelectorOption.valueOf() );
	}
	
	var replace = Array();
	replace['###JS:OPTIONS###'] = options;
	return stringReplace( replace, typeSelector );
}
function selectType( select, selected_field ){
	var type = select.options[select.selectedIndex].value;
	selected_field = false;
	
	if( type == 'ALL' ){
		jsSearchSelectHolder.innerHTML = '';
	}else{
		var searchInTypeField = templateParts['searchInTypeField'].valueOf();
		var searchInTypeFieldOption = templateParts['searchInTypeFieldOption'].valueOf();
		var options = '';
		for( var field in types[type] ){
			if( field != 'title' ){
				var replace = Array();
				replace['###JS:TYPE_FIELD_NAME###'] = types[type][field];
				replace['###JS:TYPE_FIELD_VALUE###'] = type+'['+field+']';
				if( selected_field == field ){
					replace['###JS:TYPE_FIELD_SELECTED###'] = ' selected="selected"';
				}else{
					replace['###JS:TYPE_FIELD_SELECTED###'] = '';
				}
				options += stringReplace( replace, searchInTypeFieldOption.valueOf() );
			}
		}
		
		var replace = Array();
		replace['###JS:OPTIONS###'] = options;
		jsSearchSelectHolder.innerHTML = stringReplace( replace, searchInTypeField );
	}
}
function stringReplace(replacementArray, haystack){
	if(
		typeof(replacementArray) != "object"
		|| typeof(replacementArray.length) == "undefined"
		|| typeof(haystack) != "string"
	){
		return false;
	}
	
	for(index in replacementArray){
		var curNeedle = RegExp(index);
		var temp = haystack;
		do{
			haystack = temp;
			temp = haystack.replace(curNeedle, replacementArray[index]);
		}while(haystack != temp);
		
	}
	return haystack;
}

