var GreatDealsInterface = Class.create();

GreatDealsInterface.prototype = Object.extend( (new CCnfDialog('cnf-container')), {

	initialize: function (config)
	{
		this.body = null;
		this.winContainer = 'win-form';
		this.options = {};
		this.options['navigatorContainer'] 			= config['navigatorContainer'];
		this.options['navigatorContainerUrl'] 		= config['navigatorContainerUrl'];
		this.options['societyDepartmentContainer'] 	= config['societyDepartmentContainer'];

		this.options['loadingEffectID'] = 'loadingEffect';
		this.options['navigatorLoadingEffect']= 'winLoadingEffectTopMenu';
		this.popupObject = null;
		this.ajaxLoadingEffect = null;

	},

	setAdditionalOptions: function(key,value)
	{
		this.options[key] = value;
	},

	init: function()
	{
		initializeWindow();
		this.initAdditionalActions();
		this.initAjaxForm('category_select_filter');
	},

	initAjaxForm: function(formName)
	{
		var form = ($(formName));
		form.onsubmit = function() { return false }
		Event.observe ( form, 'submit', this.applyFilter.bindAsEventListener(this) );
		var save = form.getElementsBySelector('a[rel="save"]');
		
		if ( save )
		{
			save.each(function(el) { el.onclick = function() { return false } } )
            save.invoke('observe', 'click', this.applyFilter.bindAsEventListener(this) );
		}
		/*
		var search = form.getElementsBySelector('a[rel="search"]');
		alert(search);
		*/ 

	},
	
	
	applyFilter: function(evt)
	{
		this.setLoadingEffect('great_deals_nav'); 
		var f = Event.findElement(evt,'form');
		var formParams = f.serialize();
        
        if (f.method == 'post')
        {
            new Ajax.Request(f.action, {
                //onCreate: this.onCreateLoading.bind(this),
                //onFailure: this.onFailureLoading.bind(this),
                'onSuccess':this.successLoading.bind(this),
                'postBody':formParams,
                'evalJS':true	
            });
        }
        else
        {
            new Ajax.Request(f.action+'?'+formParams, {
                //onCreate: this.onCreateLoading.bind(this),
                //onFailure: this.onFailureLoading.bind(this),
                'onSuccess':this.successLoading.bind(this),
                'evalJS':true	                
            });
        }
        return false;
	},	
	
	initAjaxLinks: function(container)
	{
		var aAjaxLinks = $(container).getElementsBySelector('a[rel="showWindow"]');
	},


	successLoading: function (response)
    {
		this.removeLoadingEffect();
		$('great_deals_nav').innerHTML = response.responseText;
        return false;
    },

	removeLoadingEffect: function()
    {
		if(this.ajaxLoadingEffect != null){
			this.ajaxLoadingEffect.removeLoadingEffect();
			this.ajaxLoadingEffect =null;
		}	
    },

	setLoadingEffect: function(objContainer)
    {
    	if(this.ajaxLoadingEffect != null){
    		this.removeLoadingEffect();
    	}    	
		this.ajaxLoadingEffect = new AjaxLoadingEffect({'containerId':objContainer,cssLoadingEffect: 'winLoadingEffectTopMenu'});
		this.ajaxLoadingEffect.setLoadingEffect();
    },


	onSuccessUpdating: function ()
	{
		var navId = this.options['navigatorContainer'];

		navId.each (function(nId,v){
			var navObj = interfaceObj.getNavigator(nId);
			//this.setLoadingEffect(nId);
			var urls = this.options['navigatorContainerUrl'];
			if (!urls) return;
            var url = $H(urls).get(nId);
			if (url)
			{
				navObj.reload(url);
			}
		}.bind(this));
	},
	/*** additional action ***/

	initAdditionalActions: function()
    {
		var navId = this.options['navigatorContainer'];

        navId.each (function(nId){
            var navObj = interfaceObj.getNavigator(nId);
			if (!navObj) return;
			var navEl = (navObj.getElement());
			if (navEl)
			{
				var actionBtns = navEl.getElementsBySelector('a[rel="action"]');

                if (actionBtns)
                {
                    actionBtns.each(function(el) { el.onclick = function() { return false } } )
                    /*
                    actionBtns.invoke('observe', 'click', this.openActionDialog.bindAsEventListener(this) );
                    */ 
                }
			}
        }.bind(this));
    }

	
});


var navGreatDealsObj = new GreatDealsInterface({
	'navigatorContainer':['great_deals_nav'],
	'navigatorContainerUrl':  ''
});
Event.observe(document, 'dom:loaded', navGreatDealsObj.init.bindAsEventListener(navGreatDealsObj) );
