cms.modules.filter =
{
	activeElement : null,
	
    getQuery : function(formElement, queryData)
    {
		if (!queryData)
		{
            var queryData = new Object();
        }
		queryData["cms[template]"] = "ajax";
		
        var nodeNames = ["input", "select", "textarea"];
        
        var iCheck;
        
        for (var iNodeNames = 0 ; iNodeNames < nodeNames.length ; iNodeNames++)
        {
            var fields = formElement.getElementsByTagName(nodeNames[iNodeNames]);
            
            for (var iFields = 0 ; iFields < fields.length ; iFields++)
            {
                if (fields[iFields].className.match(/tinymce/))
                {
                    var tinyMceField = tinyMCE.get(fields[iFields].name);
                    fields[iFields].value = tinyMceField.getContent();
                    tinyMCE.execCommand('mceRemoveControl', false, fields[iFields].name);
                }
                
                if (fields[iFields].type == 'checkbox')
                {
                	if (queryData[fields[iFields].name] == null)
                	{
                		queryData[fields[iFields].name] = new Array();
                		
                		iCheck = 0;
                	}
                	
                	if (fields[iFields].checked == true)
                	{
                		
                		queryData[fields[iFields].name][iCheck] = fields[iFields].value;
                		
                		iCheck++;
                	}
               	}
               	else
               	{
               		queryData[fields[iFields].name] = fields[iFields].value;
               	}
            }
        }
        return queryData;
    },
	
	disableFields : function(formElement, state)
	{ 
        var nodeNames = ["input", "select", "textarea"];
        for (var iNodeNames = 0 ; iNodeNames < nodeNames.length ; iNodeNames++)
        {
            var fields = formElement.getElementsByTagName(nodeNames[iNodeNames]);
            for (var iFields = 0 ; iFields < fields.length ; iFields++)
            {
				fields[iFields].disabled = state;
            }
        }
	},

	sendHttpRequest : function(linkElement, responseElementId, queryData)
	{
		var request = new HttpRequest();
		request.element = linkElement;
		if (responseElementId)
		{
			request.responseElement = document.getElementById(responseElementId);
        }
		request.setCallback(this.handleResponse, this);
		request.sendRequest(linkElement.getAttribute("href"), queryData, true);
	},

    submitAsHttpRequest : function(formElement, responseElementId, queryData)
    {
		this.disableFields(formElement, true);
        var request = new HttpRequest();
		request.element = formElement;
		if (responseElementId)
		{
			request.responseElement = document.getElementById(responseElementId);
        }
		request.setCallback(this.handleResponse, this);
		
        request.sendRequest(formElement.action, this.getQuery(formElement, queryData), true);
    },
	
	handleResponse : function(response, request)
	{
		switch (request.element.nodeName.toLowerCase())
		{
			case "a":
				if (this.activeElement)
				{
					this.activeElement.style.fontWeight = "normal";
				}
				request.element.style.fontWeight = "bold";
				this.activeElement = request.element;
				break;
			case "form":
				this.disableFields(request.element, false);
				break;
		}
		request.responseElement.innerHTML = response;
	}
}
