(function()
{
	var filter = window.filter = function()
	{
		return new filter();
	};
	
	filter.wrapper=new Array();
	filter.container=new Array();
	filter.count=0;

	filter.init=function()
	{
		var i = 1;
		var j, k, n;

		while(document.getElementById('gridFilter'+i)){
			var tr=document.getElementById('gridFilter'+i);
			if(tr)filter.wrapper.push(tr);
			
			first.addEvent(tr, 'keydown', function(e)
			{
				var key=((e||window.event).keyCode||(e||window.event).charCode);
				if(key==13){
					var actionStr=filter.gatherParams();
					if(actionStr){
						var w=window.location.toString();

						if(w.indexOf('&p=')!=-1)w=w.replace(/&p=\d+/, '');
						if(w.indexOf('&f=')!=-1)w=w.substr(0,w.indexOf('&f='));
						
						window.location.href=w+'&f='+actionStr;
					}
				}
			});			
			
			i++;
		}

		if(filter.wrapper.length==0)return;

		for(i=0;i<filter.wrapper.length;i++){			
			for(j=0;j<filter.wrapper[i].childNodes.length;j++){				
				var td=filter.wrapper[i].childNodes[j];				
				var fType=td.getAttribute('name');

				filter.count++;
				filter.container.push('');
				
				if(!fType)continue;

				var objBox=fType=='text'?td.firstChild.firstChild.firstChild.firstChild.firstChild:td.firstChild.firstChild.firstChild.firstChild.firstChild.nextSibling;
				objBox.id='filterBox'+j;
				filter.container[filter.count]=objBox;
				
				if(fType=='select'||fType=='numeric'){
					if(fType=='select'){
						first.addEvent(objBox.firstChild, 'click', function()
						{
							if(this.nextSibling.firstChild.src.indexOf('chk0.gif')!=-1){
								var fromSrc='chk0.gif';
								var toSrc='chk1.gif';
							}else{
								var fromSrc='chk1.gif';
								var toSrc='chk0.gif';							
							}
							
							for(var y=0;y<this.parentNode.childNodes.length;y++){
								var elem=this.parentNode.childNodes[y];
								if(elem.firstChild&&elem.firstChild.tagName=='IMG'){
									elem.firstChild.src=elem.firstChild.src.replace(fromSrc, toSrc);
								}
							}
						});
					}
				
					first.addEvent(td, 'mouseout', function()
					{
						var cont=this.firstChild.firstChild.firstChild.firstChild.firstChild.nextSibling;

						filter.t=setTimeout(function(){
							cont.style.display='none';
						}, 2000);
					});
					
					first.addEvent(td, 'mouseover', function()
					{
						clearTimeout(filter.t);
					});					
					
					first.addEvent(td, 'click', function()
					{
						var cont=this.firstChild.firstChild.firstChild.firstChild.firstChild.nextSibling;
						
						for(var i=0;i<filter.container.length;i++){
							if(filter.container[i].style&&filter.container[i].style.display=='block'&&filter.container[i].id!=cont.id)
								filter.container[i].style.display='none';
						}
						
						if(cont.style.display=='block')
							cont.style.display='none';
						else{
							var pos=first.getElementPosition(cont.previousSibling);
							
							cont.style.display='block';
							cont.style.left=pos.left+'px';
							cont.style.top=pos.top+pos.height+'px';							
							cont.style.width=cont.parentNode.offsetWidth+50+'px';


							for(var x=1;x<cont.childNodes.length;x++){
								var elem=cont.childNodes[x];
								if(!elem)continue;
								first.addEvent(elem, 'click', function()
								{
									var img=this.firstChild;
									if(!img)return false;

									img.src.indexOf('chk0.gif')!=-1 ? 
										img.src=img.src.replace('chk0.gif', 'chk1.gif') :									
										img.src=img.src.replace('chk1.gif', 'chk0.gif');
								});
							}
						}								
					});
				}
				
				for(k=0;k<objBox.childNodes.length;k++){
					var el=objBox.childNodes[k];
					if(el.type=='text'){						
						first.addEvent(el, 'click', function(e){
							(e||event).cancelBubble=true;
						});
						
						first.addEvent(el, 'focus', function(e){
							if(first.trim(this.value.toLowerCase())=='поиск...'){
								this.value='';
								this.style.color='#000';
							}
						});						
					}else if(el.type=='button'){
						first.addEvent(el.parentNode, 'click', function(e){
							(e||event).cancelBubble=true;
						});
					
						first.addEvent(el, 'click', function()
						{						
							var actionStr=filter.gatherParams();
							if(actionStr){
								var w=window.location.toString();

								if(w.indexOf('&p=')!=-1)w=w.replace(/&p=\d+/, '');
								if(w.indexOf('&f=')!=-1)w=w.substr(0,w.indexOf('&f='));
								
								window.location.href=w+'&f='+actionStr;
							}
						});
					}
				}
			}
		}		
	};
	
	filter.gatherParams=function()
	{
		var i,j;
		var actionStr='';
		var arr=new Array();

		for(i=1;i<filter.count;i++){
			if(filter.container[i]){
				var fType=filter.container[i].getAttribute('name');
				
				switch(fType){
					case 'select':					
						for(j=0;j<filter.container[i].childNodes.length;j++){
							var el=filter.container[i].childNodes[j];
							if(el.tagName=='DIV'&&el.firstChild.tagName=='IMG'){
								el.firstChild.src.indexOf('chk1.gif')!=-1 ? 
									arr.push('1') :
									arr.push('');							
							}
						}
						actionStr+=arr.join(':');
						arr=[];
						break;

					case 'numeric':
						actionStr+=encodeURIComponent(filter.container[i].firstChild.value.replace(/\|/g, ''))+':'+
							encodeURIComponent(filter.container[i].firstChild.nextSibling.value.replace(/\|/g, ''));
						break;
						
					case 'text':						
						if(first.trim(filter.container[i].firstChild.value).toLowerCase()!='поиск...')
							actionStr+=encodeURIComponent(filter.container[i].firstChild.value.replace(/\|/g, ''));
						break;
				}			
			}
			actionStr+='|';
		}
		return actionStr.substr(0,actionStr.length-1);
	};
})();		
