/******************* B R O W S E R ************/
function browserObj( formObj )
{
	this.searchResultsHide = null
	this.formObj = formObj;
	this.init();
}

browserObj.prototype.init = function( )
{
	var thisObj = this;
	thisObj.formObj.onsubmit = function() { return thisObj.filtering(); };
	
	// HIDE SUBMIT BUTTON
	var submits = thisObj.formObj.getElementsByTagName('input');
	for (var x=0; x<submits.length; x++)
	{
		if (submits[x].type == 'submit')
			submits[x].style.display = 'none';
		if ( (submits[x].type == 'text') && (submits[x].name == 'search') )
		{
			thisObj.searchObj = submits[x];
			submits[x].onkeyup = function() { thisObj.waitFiltering(); }
		}
	}
	var selects = thisObj.formObj.getElementsByTagName('select');
	for (var y=0; y<selects.length; y++)
	{
		selects[y].onchange = function() { thisObj.filtering(); }
	}
	var viewmodes = $$(thisObj.formObj, 'INPUT', 'viewmode');
	for (var c=0; c<viewmodes.length; c++)
	{
		viewmodes[c].style.display = 'none';
		viewmodes[c].onclick = function() { return false; };
	}
	var viewmodes_labels = $$(thisObj.formObj, 'LABEL', 'viewmode');
	for (var cl=0; cl<viewmodes_labels.length; cl++)
	{
		viewmodes_labels[cl].onclick = function() { thisObj.check( this ); thisObj.filtering(); };
	}
	var uls = thisObj.formObj.getElementsByTagName('ul');
	for (var i=0; i<uls.length; i++)
	{
		var inputs = uls[i].getElementsByTagName('input');
		for (var k=0; k<inputs.length; k++)
		{
			if (inputs[k].type == 'checkbox' || inputs[k].type == 'radio')
			{
				inputs[k].style.display = 'none';
				inputs[k].onclick = function() { return false; }
			}
		}
		// IE
		var labels = uls[i].getElementsByTagName('label');
		for (var j=0; j<labels.length; j++)
		{
			//if (j==0)
			//{
				labels[j].childs = labels;
				labels[j].onclick = function() { thisObj.check( this ); thisObj.uncheckChilds( this ); thisObj.filtering(); }
		//	}
		//	else
		//	{
		//		labels[j].parent = labels[0];
		//		labels[j].onclick = function() { thisObj.switching( this ); thisObj.uncheckParent( this.parent ); thisObj.filtering(); }
		//	}
		}
	}
	thisObj.initDynamic( $('dynamic-content') );
	thisObj.initOrdering();
	thisObj.initFilters();
}

browserObj.prototype.initOrdering= function()
{
	var filterlistListing=document.getElementById("filterlistordering");
	if(!filterlistListing) return;
	var filterlistiitems=filterlistListing.getElementsByTagName("li");
	for(i=0;i<filterlistiitems.length;i++){
		var thisel=filterlistiitems[i];
		thisel.onclick=function(){
			if(this.className=="active") return;
			for(i=0;i<filterlistiitems.length;i++){
				filterlistiitems[i].className="";
				filterlistiitems[i].getElementsByTagName("input")[0].checked=false;
			}
			this.className="active";
			this.getElementsByTagName("input")[0].checked=true;
			browseEngine.filtering();
		}
	}
}

browserObj.prototype.initFilters= function()
{
	var filterlistListing=document.getElementById("filterlist");
	if(!filterlistListing) return;
	var filterlistiitems=filterlistListing.getElementsByTagName("li"),ALLcheck;
	for(i=0;i<filterlistiitems.length;i++){
		ALLcheck=filterlistiitems[i].getElementsByTagName("input")[0];
		if(ALLcheck.value=="all") break;
	}

	for(i=0;i<filterlistiitems.length;i++){
		(function(){
			var thisel=filterlistiitems[i];
			thisel.onclick=function (){
				var check=thisel.getElementsByTagName("input")[0];
				if(check.value=="all")
				{
					if(check.checked) return;
					for(c=0;c<filterlistiitems.length;c++)
					{
						filterlistiitems[c].getElementsByTagName("input")[0].checked=false;
						filterlistiitems[c].className="";
					}
					thisel.className="active";
					check.checked=true;
				}
				else
				{
					if(!check.checked){
						thisel.className="active";
						check.checked=true;
						ALLcheck.checked=false;
						ALLcheck.parentNode.className="";
					}
					else
					{
						thisel.className="";
						check.checked=false;
						var cha=true;
						for(c=0;c<filterlistiitems.length;c++)
						{
							if(filterlistiitems[c].getElementsByTagName("input")[0].checked){
								cha=false;
								break;
							}
						}
						if(cha)
						{
							ALLcheck.checked=true;
							ALLcheck.parentNode.className="active";
						}
					}
				}
				browseEngine.filtering();		
			}
		})();
	}
}

browserObj.prototype.initDynamic = function( obj )
{
	var thisObj = this;
	var comparisons = obj.getElementsByTagName('input');
	for (var s=0; s<comparisons.length; s++)
	{
		if ( (comparisons[s].type == 'checkbox') && (comparisons[s].getAttribute('rel') == 'comparison') )
		{
			comparisons[s].onclick = function() { thisObj.parseCompare( this ); }
		}
	}
	/*var pages = obj.getElementsByTagName('a');
	for (var i=0; i<pages.length; i++)
	{
		if (pages[i].getAttribute('rel') == 'changePage')
		{
			pages[i].onclick = function() { return thisObj.changePage( this.href ); }
		}
	}*/
}

browserObj.prototype.switching = function( label )
{
	var thisObj = this;
	if (label.className == 'paramNotSelected')
	{
		thisObj.check(label);
	}
	else
	{
		thisObj.uncheck(label);
	}
}

browserObj.prototype.check = function( label )
{
	var input = $(label.getAttributeNode('for').value);
	input.checked = true;
	label.className = 'paramSelected';
}
browserObj.prototype.uncheck = function( label )
{
	var input = $(label.getAttributeNode('for').value);
	input.checked = false;
	label.className = 'paramNotSelected';
}
browserObj.prototype.uncheckChilds = function( label )
{
	for (var i=0; i<label.childs.length; i++)
	{
		if (i>0)
			this.uncheck( label.childs[i] );
	}
}
browserObj.prototype.uncheckParent = function( parent )
{
	this.uncheck( parent );
	var oneIsSelected = false;
	for (var i=0; i<parent.childs.length; i++)
	{
		var input = $(parent.childs[i].getAttributeNode('for').value);
		if (input.checked == true)
			oneIsSelected = true;
	}
	if (!oneIsSelected)
		this.check(parent);
}

browserObj.prototype.getFilteringQuery = function( )
{
	var thisObj = this;
	var getString = '';
	//var getString = thisObj.formObj.action;/*.replace(/index.php/, 'index2.php');*/
	var selects = thisObj.formObj.getElementsByTagName('select');
	for (var j=0; j<selects.length; j++)
	{
		if (getString.charAt(getString.length-1) != '?')
			getString += '&';
		getString += selects[j].name + '=' + selects[j].options[selects[j].selectedIndex].value;
	}
	var inputs = thisObj.formObj.getElementsByTagName('input');
	for (var i=0; i<inputs.length; i++)
	{
		if ( ( (inputs[i].checked) && (inputs[i].type=='checkbox') ) || ( (inputs[i].checked) && (inputs[i].type=='radio') ) || (inputs[i].type == 'text') )
		{
			if (getString.charAt(getString.length-1) != '?')
				getString += '&';
			getString += inputs[i].name + '=' + inputs[i].value;
		}
	}
	return getString;
}
browserObj.prototype.filtering = function( )
{
	var thisObj = this;
	// disable fast search
	//thisObj.searchObj.disabled = true;
	
	var getString = thisObj.formObj.action;/*.replace(/index.php/, 'index2.php');*/
	getString += thisObj.getFilteringQuery();
	if (getString.charAt(getString.length-1) != '?')
		getString += '&';
	getString += 'onthebody=true';
	//
	var Ajax = new AjaxObj();
	Ajax.makeRequest( 'post', getString, thisObj.showResults );
	page.wait(1);
	
	return false;
}

browserObj.prototype.waitFiltering = function( )
{
	var thisObj = this;
	if (thisObj.searchObj.value.length > 2)
	{
		if (thisObj.searchResultsWait)
			clearTimeout(thisObj.searchResultsWait);
		thisObj.searchResultsWait = setTimeout("browseEngine.filtering()", 700);
	}
}

browserObj.prototype.changePage = function( href )
{
	var thisObj = this;
	var getString = href;/*.replace(/index.php/, 'index2.php');*/
	if (getString.charAt(getString.length-1) != '?')
		getString += '&';
	getString += 'onthebody=true';
	var Ajax = new AjaxObj();
	Ajax.makeRequest( 'post', getString, thisObj.showResults );
	return false;
}

browserObj.prototype.showResults = function( response )
{
	/*var thisObj = this;*/
	
	$('dynamic-content').innerHTML = response;
	browseEngine.initDynamic( $('dynamic-content') );
	page.wait(0);
	// enable fast search
	//browse.searchObj.disabled = false;
}

// C O M P A R I S O N //
browserObj.prototype.parseCompare = function( obj )
{
	var thisObj = this;
	var getString;
	var pid = obj.value;	// product id
	var cid = obj.getAttribute('categories_id');
	if (obj.checked == true)
	{
		getString = 'index.php?load=comparison&task=module&action=add&categories_id='+cid+'&products_id='+pid+'&onthefly=true';
	}
	else
	{
		getString = 'index.php?load=comparison&task=module&action=remove&categories_id='+cid+'&products_id='+pid+'&onthefly=true';
	}
	var Ajax = new AjaxObj();
	Ajax.makeRequest( 'post', getString, thisObj.updateComparisonModule );
}
browserObj.prototype.updateComparisonModule = function( response )
{
	$('comparison').innerHTML = response;
}
