function OpenCatSelect(strURL) {
  _cs.winKS = window.open(strURL+_cs.getSelected(), 'winKS', 'location=no,status=no,toolbar=no,menubar=no,scrollbars=yes,width=670,height=600');
  _cs.winKS.focus();
}

/***CAT SELECTOR***/
function CatSelector() {

	 this.arrBoxes = new Array();

	 this.createCatBox = createCatBox;
	 this.rmvCatBox = rmvCatBox;
	 this.rmvCategory = rmvCategory;

	 this.setSelection = setSelection;
	 this.getSelected = getSelected;

	 this.getBoxDataAsJson = getBoxDataAsJson;
}

function setSelection(jsnStr) {
	if(jsnStr == null) return;

	//save selection obj in hidden field
	$("catselectId").value = jsnStr;

	if(_cs.arrBoxes.length > 0) {
		var i=0;
		while(_cs.arrBoxes[i] != undefined) {
			if($("cbox_"+_cs.arrBoxes[i].id) != null)
				$("cbox_"+_cs.arrBoxes[i].id).remove();
			i++;
		}
		
		_cs.arrBoxes.length = 0;
	}

	//addBoxes(eval(jsnStr));
	addBoxes(jsnStr.evalJSON(true));
}

function getSelected() {
	if(_cs.arrBoxes.length == 0) return "";
	var returnStr = "";

	for(var x = 0; x<_cs.arrBoxes.length; x++) {
		returnStr += (((returnStr.length == 0)? "" : ",") + _cs.arrBoxes[x].id);
	}

	return ("?cat=" + returnStr);
}

/*
visually create category box
*/
function createCatBox(catObj) {
	var box = $('catBoxContainer');

	var div = document.createElement("div");
	div.setAttribute("class", "catBox");
	div.setAttribute("className", "catBox");
	div.setAttribute("id", "cbox_"+catObj.id);

	var editA = document.createElement("a");
	editA.setAttribute("href", "javascript:_cs.rmvCatBox('" + catObj.id + "');")


	var img = document.createElement("img");
	img.setAttribute("class", "catBoxBtnX");
	img.setAttribute("className", "catBoxBtnX");
	img.setAttribute("src", "images/btn_x.png");
	img.setAttribute("width", "10");
	img.setAttribute("height", "10");
	img.setAttribute("alt", catObj.value);
	img.setAttribute("title", catObj.value);
	//img.setAttribute("onclick", "_cs.rmvCatBox('" + catObj.id + "');");

	editA.appendChild(img);

	var label = document.createTextNode(catObj.value);
	div.appendChild(editA);
	div.appendChild(label);

	box.appendChild(div);
}


/*
remove category box
*/
function rmvCatBox(id) {
	var box = $("cbox_"+id);
	
	$(box).remove();
	
	try
	{
	  if(_cs.winKS.uncheckBox) {
		_cs.winKS.uncheckBox(id);
	  }
	}
	  catch(err)
	{
	   //popup is not open anymore
	}

	for(var x = 0; x<_cs.arrBoxes.length; x++) {
		if(_cs.arrBoxes[x].id == id) {
			_cs.arrBoxes.splice(x, 1);
			break;
		}
	}
	
	//check if all is gone, then display info...
	if($('catBoxContainer')) {
		 $('catselectinfo').style.display = (_cs.arrBoxes.length>0)? "none" : "block";
		 $('catBoxContainer').style.display = (_cs.arrBoxes.length>0)? "block" : "none";
	}

	//update hidden field content
	var jsnStr = _cs.getBoxDataAsJson();
	$("catselectId").value = jsnStr;

}

/*
collect selected categories
*/
function addBoxes(arrCats) {
	if(arrCats != undefined) {
		if(arrCats.length>0) {
			if($('catBoxContainer')) {
				 $('catBoxContainer').style.display = "block";
				 $('catselectinfo').style.display = "none";
			 }

			for(var x = 0; x<arrCats.length; x++) {
				_cs.arrBoxes.push(arrCats[x]);
				createCatBox(arrCats[x]);
			}
		}
		else {
			if($('catBoxContainer')) {
			 	$('catBoxContainer').style.display = "none";
				$('catselectinfo').style.display = "block";
			}
		}
	}
	else {
		if($('catBoxContainer')) {
			 $('catBoxContainer').style.display = "none";
			 $('catselectinfo').style.display = "block";
		}
	}
}

/*
remove deselected categories
*/
function rmvCategory(arrCats) {
	for(var x = 0; x<arrCats.length; x++) {
		for(var y=0; y<_cs.arrBoxes.length; y++) {
			if(_cs.arrBoxes[y].id == arrCats[x].id) {
				rmvCatBox(_cs.arrBoxes[y]);
				break;
			}
		}
	}
}

if(opener == null)
var _cs = new CatSelector();

/*function getFormDataAsJson() {
	var strIds = "";
	var theForm = $('cbform');
	for(var x = 0; x<theForm.elements.length; x++) {
		var obj = theForm.elements[x];

		if(obj.type != undefined && obj.type.toLowerCase() == "checkbox" && obj.checked) {
			if(strIds.length == 0) {
				strIds += "[";
			}
			else {
				strIds += ",";
			}

			strIds += ("{id:'"+obj.id+"',value:'"+ obj.parentNode.childNodes[obj.parentNode.childNodes.length-1].data +"'}");
		}
	}
	if(strIds.length > 0) strIds += "]";
	return String(strIds).toJSON();
}*/


function getFormDataAsJson() {
	var theForm = $('cbform');	
	var arrIds = new Array;
	
	for(var x = 0; x<theForm.elements.length; x++) {
		var obj = theForm.elements[x];

		if(obj.type != undefined && obj.type.toLowerCase() == "checkbox" && obj.checked) {
			var objVal = new Object();
			objVal["id"] = obj.id;
			objVal["value"] = obj.parentNode.childNodes[obj.parentNode.childNodes.length-1].data;
			arrIds.push(objVal);
		}
	}
	return arrIds.toJSON();
}


function getBoxDataAsJson() {
	var strIds = "";
	
	for(var x = 0; x<_cs.arrBoxes.length; x++) {
		var obj = _cs.arrBoxes[x];
		if(strIds.length == 0) {
			strIds += "[";
		}
		else {
			strIds += ",";
		}
		
		var box = $("cbox_"+obj.id);
		var label = box.childNodes[1].data;
		
		strIds += ('{id:"'+obj.id+'",value:"'+ label +'"}');
	}
	
	if(strIds.length > 0) strIds += "]";
	return String(strIds).toJSON();
}

function submitSelection() {
	if(opener._cs != null) {
	 var selected = getFormDataAsJson();
 	 opener._cs.setSelection(selected);
  }
  opener.focus();
}

function uncheckBox(id) {
	$(id).checked = false;
}

function closePopup() {
	opener.focus();
	window.close();
}