var categoryselector = {
	switchtab : function (forumid,tabid) {
		var activetabs = $$('div.tabselected,div.tabselectedlast');
		activetabs.each(function(tab){
			if(tab.className == 'tabselectedlast'){
				tab.className = 'tablast';
			} else {
				tab.className = 'tab';
			}
		});
		if($('tab'+tabid).className == 'tablast'){
			$('tab'+tabid).className = 'tabselectedlast';
		}else{
			$('tab'+tabid).className = 'tabselected';
		}
		
		categoryselector.selectcat(forumid,tabid,1,0,1);		
	},
	selectcat : function (forumid,catid, haschild, level,isTab) {
		if(!isTab)categoryselector.clicked(catid);
		categoryselector.removeTree(level);
		if(haschild){
			
					
			new Ajax.Request(basehref + 'edit/form2/categoryselector/loadcategories.comp',
			{
				method:'get',
				parameters: {loadid:catid, forumid:forumid, useajax:1, level: level,rowscount:$('rowscount').value},
				onLoading: function () {
		  			categoryselector.displayLoading();
		  		},
			    onComplete: function(transport){	
					categoryselector.remLoading();			
					var text = transport.responseText;
					var ID = catid.split(".");
					if(!$('field_'+level+'_'+ID[0]+'_'+ID[1])){
						categoryselector.extendWidth();
						$('catselectbody').innerHTML += text;
					}
					categoryselector.checkIfAlreadySelected();
			    },
			    onFailure: function(){ alert('The system could not complete your request. Please reload your page and try again.') }
			  });
		  } else {
		  	categoryselector.choseCat(forumid,catid);
		  }
		  
	},
	choseCat : function (forumid,catid) {
		new Ajax.Request(basehref + 'edit/form2/categoryselector/getselectedcatbacktrace.comp',
			{
				method:'get',
				parameters: {loadid : catid, forumid : forumid, fieldname : $('fieldname').value, fieldid : $('fieldid').value},
				onLoading: function () {
		  			//form2_preparetopreview(1);		
		  		},
			    onComplete: function(transport){				
					var text = transport.responseText;
					var ID = catid.split(".");
					if(!$('catselected_'+ID[0]+'_'+ID[1])){
						$('catselectselected').innerHTML += text;
						
						if($('existingcategoriesfield') && $('existingcategoriesfield').value){
							var fieldToBeField = $($('existingcategoriesfield').value);
							
							
							var currentValues = new Array();
							if(fieldToBeField.value){
								currentValues = fieldToBeField.value.split(',');
							}
							
							if(currentValues.indexOf(catid) == -1){
								
								currentValues.push(catid);
								$($('existingcategoriesfield').value).value = currentValues.join(",");
							}
						}
					}
					
			    },
			    onFailure: function(){ alert('The system could not complete your request. Please reload your page and try again.') }
			  });
	},
	removeTree : function (level) {
		
		var fields = $('catselectbody').getElementsByClassName('fields');		
		fields = $A(fields);
		for (var i = 0; i < fields.length; i++) {
			var fid = fields[i].id;
			var fielddata = fid.split("_");
			flevel = fielddata[1];
			if(flevel >= level){
            	$('catselectbody').removeChild(fields[i]); 
			}
		}
		return 1;
	},
	removeSelected : function (removeid) {
		if(removeid){
			$('catselectselected').removeChild($(removeid));
			var elements = removeid.split("_");//catselected_<%$ID->[0]%>_<%$ID->[1]%>
			var catid = elements[1]+'.'+elements[2];
			if($('existingcategoriesfield') && $('existingcategoriesfield').value){
				var fieldToBeField = $($('existingcategoriesfield').value);
				
				var currentValues = fieldToBeField.value.split(',');
				
				currentValues = currentValues.without(catid);
				$($('existingcategoriesfield').value).value = currentValues.join(",");        		
			}
		}
	},
	clicked: function (catid) {
		var mydiv = $('row'+catid);
		var classn = mydiv.className;
		if(classn == 'catselectrow'){
			mydiv.className = 'catselectrowselected';
		}
		if(classn == 'catselectrownochild'){
			mydiv.className = 'catselectrownochildselected';
		}
		var myparentinfo = $('row'+catid).parentNode.id.split("_");
		var mylevel = myparentinfo[1];
		//var allclicked = $$('div.catselectrowselected');
		var allclicked = $('catselectbody').getElementsByClassName('catselectrowselected');	
		//alert($A(allclicked));
		$A(allclicked).each(function(c){
			var parentinfo = c.parentNode.id.split("_");
			var level = parentinfo[1];
			
			if(mylevel <=level && c.id != $('row'+catid).id){
				//alert(level + '--' + mylevel);
				c.className = "catselectrow";
			}
		});
	},
	checkIfAlreadySelected : function (){
		var allSelected = $('catselectselected').getElementsByClassName('selectedids');
		var allNoChild = $('catselectbody').getElementsByClassName('catselectrownochild');
		
		$A(allNoChild).each(function(el){
			$A(allSelected).each(function(sel){
				var catid = el.id.replace('row', '');
				//alert(catid + '----' + sel.value);
				if(catid == sel.value){
					el.className = 'catselectrownochildselected';
				} else {
					el.className = 'catselectrownochild';
				}
			});
		});
	},
	displayLoading : function () {
		var ldiv = $('loadingimg');
		
		var parent = $('catselectbody');
		parent.appendChild(ldiv);
		ldiv.show();
	},
	remLoading : function () {
		var ldiv = $('loadingimg');
		var parent = $('catselectmain');
		ldiv.hide();
		parent.appendChild(ldiv);
	},
	initialFill : function (forumid,sourcefield) {
		if($(sourcefield) && $(sourcefield).value){
			var existing = $(sourcefield).value.split(",");
			existing.each(function(catid){
				categoryselector.choseCat(forumid,catid);
			});
		}
	},
	extendWidth : function () {
		var w = (($('catselectbody').getElementsByClassName('fields').length+1)*188);
		$('widthextender').setAttribute('width', w);
	},
	resetForm : function () {
		$('catselectselected').update('Currently selected:');
		categoryselector.checkIfAlreadySelected();
		var firsttab = $('firsttab').value;
		//alert(firsttab);
		if(firsttab){
			categoryselector.switchtab(forumid, firsttab)
		}
		if($($('existingcategoriesfield').value)){
			$($('existingcategoriesfield').value).value = '';
		}
	}
};