var MOST_POPULAR_SEARCH_ID = 100000;
var RECENTLY_ADDED_ID = 1;
var TOP_RATED_ID = 2;
var MOST_VIEWED_ID = 3;
var MY_ENTRIES_ID = 4;
var MY_FAVORITE_ID = 5;
var SEARCH_BY_STRING = 100001;


function SearchCriteria( category_id, choice_id, label ){
	this.category_id = category_id;
	this.choice_id = choice_id;
	this.label = label;
	return this;

}

function Viewer(  )
{
	this.criteria_has_changed = false;
	this.l_search_criteria = new Array();
	this.picture_id = 0;
	this.current_wheel_row = 0;
	this.wheel_is_busy = false;
	this.lastSearchIsTrashable = false;
	this.displaySearchObject = 0;
	this.doc = 0;
	
	this.setSearchTrashable = function()
	{
		this.lastSearchIsTrashable = true;
	}
	
	this.setDisplaySearchObject = function( dso )
	{
		this.displaySearchObject = dso;
	}
	
	this.setDocument = function( doc )
	{
		this.doc = doc;
	}
	
	this.getChildElementById = function(obj, id){
		var child = null;
		for (var i=0; i < obj.childNodes.length; ++i){
			child = obj.childNodes[i];
			if (child.id == id){
				break;
			}
			child = null;
		}
		return child;
	}
	
	this.clearSearchCriteria = function()
	{
		this.resetSearchCriteria();
		
		this.showEmptyCriteria(true);

		// remove all children from element
		while (this.displaySearchObject.firstChild) {
		  this.displaySearchObject.removeChild(this.displaySearchObject.firstChild);
		}
	}
	
	this.resetSearchCriteria = function()
	{
		this.picture_id = 0;
		this.current_wheel_row = 0;
		this.l_search_criteria = new Array();
	}
	
	this.showEmptyCriteria = function(show){
		var noCrits = document.getElementById("noCriterias");
		var someCrits = document.getElementById("someCriterias");
		if (noCrits != null && someCrits != null){
			if (show == null){
				show = true;
			}
			var re = new RegExp(/Firefox[\/\s](\d+\.\d+)/);
			var dsp = 'block';
			if (show){
				if(re.test(navigator.userAgent)){
					var ffversion = new Number(re.exec(navigator.userAgent)[1]);
					if (2 <= ffversion && ffversion < 3){
						dsp = 'table-row';
					}
				}
				noCrits.style.display = dsp;
				someCrits.style.display = "none";
			}
			else {
				if(re.test(navigator.userAgent)){
					var ffversion = new Number(re.exec(navigator.userAgent)[1]);
					if (2 <= ffversion && ffversion < 3){
						dsp = 'table-row';
					}
				}
				noCrits.style.display = "none";
				someCrits.style.display = dsp;
			}
		}
	}
	
	this.setSearchString = function(items)
	{
		if (this.displaySearchObject && items){
			// remove all children from element
			while (this.displaySearchObject.firstChild) {
			  this.displaySearchObject.removeChild(this.displaySearchObject.firstChild);
			}
			for(var i=0; i < items.length; ++i){
				this.displaySearchObject.appendChild(this.createCriteriaItem(items[i]));
			}
		}
		this.showEmptyCriteria(false);
	}
	
	this.setCriteriaTitle = function(str){
		var elem = document.getElementById('criteriaTitle');
		if (elem){
			if (arguments.length > 1 && arguments[1]){
				try {
					elem.className = arguments[1].join(' ');
				}
				catch(e){}
			}
			elem.innerHTML = str;
		}
	}
	
	this.createCriteriaItem = function(str){
		var elem = document.createElement('li');
		elem.className = "CriteriaItem";
		elem.innerHTML = str;
		return elem;
	}
	
	this.addSearchCriteria = function( category_id, choice_id, label )
	{

		if( this.lastSearchIsTrashable ){
			this.lastSearchIsTrashable = false;
			this.resetSearchCriteria();
		}
		var sc = new SearchCriteria( category_id, choice_id, label );
		this.l_search_criteria.push( sc );
		this.getCriteriaString();
	}
	
	this.getCriteriaString = function()
	{
		var l_label = new Array();
		var len = this.l_search_criteria.length;
		for( i=0 ; i<len ; i++ ){
			var searchCr = this.l_search_criteria[i];
			if (i > 0){
				l_label[l_label.length-1] += ' | ';
			}
			l_label.push( searchCr.label );
		}
		
		this.setCriteriaTitle('You searched for:', new Array(""))
		this.setSearchString(l_label);
		return;
	}
	
	this.removeSearchCriteria = function( category_id, choice_id )
	{
		var new_l_search_criteria = new Array();
	
		var len = this.l_search_criteria.length;
		for( i=0 ; i<len ; i++ ){
			var searchCr = this.l_search_criteria[i];
			if( choice_id == 0 ){
				doRemove = searchCr.category_id==category_id;
			}else{
				doRemove = searchCr.category_id==category_id && searchCr.choice_id==choice_id;
			}
			if( doRemove ){
				// leave it out
			}else{
				new_l_search_criteria.push( searchCr );
			}
		}
		
		this.l_search_criteria = new_l_search_criteria;
		
		if( this.l_search_criteria.length ){
			this.getCriteriaString();
		}else{
			this.clearSearchCriteria();
		}
		
	}
	
	return this;
}

var viewer = new Viewer();

function getWheelIsBusy()
{
	return viewer.wheel_is_busy;
}

function setWheelIsBusy( bool )
{
	viewer.wheel_is_busy = bool;
}

function viewItemPage( itemId ){
	_goto = 'phpscripts/view_item.php?item_id='+itemId ;
	document.location = _goto;
}

function clearSearchCriteria(){
	viewer.clearSearchCriteria();
}

function addSearchCriteria( category_id, choice_id, label ){
	// alert( category_id+' - '+choice_id+' - '+label);
	viewer.addSearchCriteria( category_id, choice_id, label )
}

function removeSearchCriteria( category_id, choice_id ){
	viewer.removeSearchCriteria( category_id, choice_id );
}

function getSearchCriteria(){
	return viewer.l_search_criteria ;
}
function getSearchCriteriaHasChanged(){
	return viewer.criteria_has_changed;
}
function getPictureId(){
	return viewer.picture_id;
}
function getCurrentWheelRow(){
	return viewer.current_wheel_row;
}
function setSearchCriteriaHasChanged( b ){
	viewer.criteria_has_changed = b;
}

function setSearchTrashable(){
	viewer.setSearchTrashable();
}