var isTable = Class.create({
	initialize: function(oAjax, sName, sModule, sLoadPageEvent, sTableOrderEvent, sFilterEvent, sItemBlockEvent, sItemUnBlockEvent)
	{
		this.oAjax = oAjax;
		this.sName = sName;
		this.sModule = sModule;

		// events
		this.sLoadPageEvent = sLoadPageEvent;
		this.sTableOrderEvent = sTableOrderEvent;
		this.sFilterEvent = sFilterEvent;
		this.sItemBlockEvent = sItemBlockEvent;
		this.sItemUnBlockEvent = sItemUnBlockEvent;

		this.sTargetForm = this.sName + "_list_form";
		this.sTargetCheckboxGroup = "checkbox_" + this.sName + "_item";
	},

	resetAjax : function()
	{
		this.oAjax.resetData();
		this.oAjax.requestFile	= "index.php";
		this.oAjax.method		= "POST";
		this.oAjax.Synchron		= false;
		this.oAjax.setVar("module", this.sModule);
	},

	loadPage : function(iPage)
	{
		this.resetAjax();
		this.oAjax.setVar("iPage", iPage);
		this.oAjax.setVar("sTable", this.sTable);
		this.oAjax.setVar("event", this.sLoadPageEvent);
	},

	tableOrder : function(sFilterOrder, sFilterOrderDir)
	{
		this.resetAjax();
		this.oAjax.setVar("sFilterOrder", sFilterOrder);
		this.oAjax.setVar("sFilterOrderDir", sFilterOrderDir);
		this.oAjax.setVar("event", this.sTableOrderEvent);
	},

	filter : function()
	{
		this.resetAjax();
		this.oAjax.setVar('event', this.sFilterEvent);
		this.addFormValuesToAjax();
	},

	addFormValuesToAjax : function()
	{
		var oForm = _gel(this.sTargetForm);

		if (oForm) {
			var i, oElement;
			for (i=0; i<oForm.elements.length; i++) {
				var oElement = oForm.elements[i];//alert(oElement.type + ": " + oElement.value);

				// get input fields values
				if (oElement.type=="text" || oElement.type=="hidden" || oElement.type=="password" || oElement.type=="select-one" || oElement.type=="textarea") {
					this.oAjax.setVar(oElement.name, oElement.value);
				}

				if (oElement.type=="radio" || oElement.type=="checkbox") {
					if (oElement.checked == true) {
						this.oAjax.setVar(oElement.name, oElement.value);
					}
				}

				if (oElement.type=="select-multiple") {
					for (var j = 0; j < oElement.options.length; j++) {
						sName = oElement.name + '[' + j + ']';
						if (oElement.options[j].selected) {
							this.oAjax.setVar(sName, oElement.options[j].value);
						}
					}
				}
			}
		}
	},

	actionItemListCheckBox : function()
	{
		var aItems = new Array();
		var iPage;
		var oElement = _gel(this.sTargetForm);
		var oElements = oElement.getElementsByTagName("img");

		for (i = 0; i < oElements.length; i++) {

			var tmpstr = oElements[i].name;
			var erg = tmpstr.search(this.sTargetCheckboxGroup);

			if (erg >= 0 && oElements[i].getAttribute("nosubmit") == "0" && oElements[i].getAttribute("rel") == "checked") {
				aItems.push(oElements[i].getAttribute("rowid"));
			}
		}

		return aItems;
	},

	block : function(sItems)
	{
		this.resetAjax();
		this.oAjax.setVar('sBlockItem', sItems);
		this.oAjax.setVar('iBlock', 1);
		this.oAjax.setVar('event', this.sItemBlockEvent);
	},

	unblock : function(sItems)
	{
		this.resetAjax();
		this.oAjax.setVar('sBlockItem', sItems);
		this.oAjax.setVar('iBlock', 0);
		this.oAjax.setVar('event', this.sItemUnBlockEvent);
	},

	changeCheckAllItems : function()
	{
		this.changeAllCheckboxImage();
	},

	changeCheck : function(oCheckboxItem)
	{
		this.changeCheckboxImage(oCheckboxItem.id);
	},

	changeCheckSingle : function(oCheckboxItem)
	{
		this.changeCheckboxSingleImage(oCheckboxItem.id);
	},

	changeCheckboxSingleImage : function ( sID )
	{

		var oElement = _gel(this.sTargetForm);


		if (oElement) {
			var oElements = oElement.getElementsByTagName("img");
			for (i = 0; i < oElements.length; i++) {

			var tmpstr = oElements[i].name;
			var erg = tmpstr.search(this.sTargetCheckboxGroup);

				if (erg >= 0) {
					var sActive = oElements[i].getAttribute("rel");
					switch(sActive){

						case "checked":
							oElements[i].setAttribute("rel","unchecked");
							oElements[i].src = _gel('checkbox-icon-deactivated').value;
							break;
					}
				}
			}
		}

		var oElement = _gel(sID);
			if (oElement) {
				var sActive = oElement.getAttribute("rel");
				switch(sActive){
					case "deactivated-unchecked":
					case "deactivated-checked":
						break;
					case "checked":
						oElement.setAttribute("rel","unchecked");
						oElement.src = _gel('checkbox-icon-deactivated').value;
						break;
					case "unchecked":
						oElement.setAttribute("rel","checked");
						oElement.src = _gel('checkbox-icon-activated').value;
						break;
					default :
						break;
				}
			}
	},


	changeCheckboxImage : function ( sID )
	{
			var oElement = _gel(sID);
				if (oElement) {
					var sActive = oElement.getAttribute("rel");
					switch(sActive){
						case "deactivated-unchecked":
						case "deactivated-checked":
							break;
						case "checked":
							oElement.setAttribute("rel","unchecked");
							oElement.src = _gel('checkbox-icon-deactivated').value;
							break;
						case "unchecked":
							oElement.setAttribute("rel","checked");
							oElement.src = _gel('checkbox-icon-activated').value;
							break;
						default :
							break;
					}
				}
	},

	changeAllCheckboxImage : function ( )
	{
			var oElement = _gel(this.sTargetForm);

			if (oElement) {
				var oElements = oElement.getElementsByTagName("img");
				for (i = 0; i < oElements.length; i++) {

				var tmpstr = oElements[i].name;
				var erg = tmpstr.search(this.sTargetCheckboxGroup);

					if (erg >= 0) {
						var sActive = oElements[i].getAttribute("rel");
						switch(sActive){
							case "deactivated-unchecked":
							case "deactivated-checked":
								break;
							case "checked":
								oElements[i].setAttribute("rel","unchecked");
								oElements[i].src = _gel('checkbox-icon-deactivated').value;
								break;
							case "unchecked":
								oElements[i].setAttribute("rel","checked");
								oElements[i].src = _gel('checkbox-icon-activated').value;
								break;
							default :
								break;
						}
					}
				}
			}
	}
});