/**
*/


/*@cc_on
(function(f){
 window.setTimeout =f(window.setTimeout);
 window.setInterval =f(window.setInterval);
})(
	function(f)
	{
		return function(c,t)
		{
			
			var a=[].slice.call(arguments,2);
			return f(function()
			{
				if(c.apply)
				{
				c.apply(this,a)
				}
				else
					eval(c);
			},
			t)
		}
	}
);
@*/
/**  Statikus fuggveny, portletek hozzadasahoz
  ez hozza letre a PortletRefresher objektumokat
  
@portletParams  -   portletID_refreshInterval
*/

ponte.Classes.PortletRefresher=
{
    //  Tomb amiben a PortletRefresher objektumokat taroljuk
    portlets : new Array(),
	nonRefreshable : new Object(),
	_refreshing : true,
	
    addPortlet : function(portletParams)
    {
        portlet_id=portletParams.split("_")[0];
        portlet_refreshInt=portletParams.split("_")[1];
        if(this.getRefresherById(portlet_id)==null)
        {
            this.portlets.push(
            new ponte.Classes.PortletRefresher.Refresher(portlet_id, portlet_refreshInt));
        }
    }
    ,
    startRefreshing : function()
    {
        for (k=0; k<this.portlets.length; k++) {
			if(this.nonRefreshable[this.portlets[k]._id]==null)
				this.portlets[k].Start();
			else
				this.portlets[k].StartWithoutAutoRefresh(this.nonRefreshable[this.portlets[k]._id]);
		}
    },
    turnRefresh : function()
    {
    	this._refreshing=!this._refreshing;
    	if(!this._refreshing)
    	{
	        for (k=0; k<this.portlets.length; k++) {
				if(this.nonRefreshable[this.portlets[k]._id]==null)
					this.portlets[k].Stop();
			}
    	}
    	else
    	{
    		for (k=0; k<this.portlets.length; k++) {
				if(this.nonRefreshable[this.portlets[k]._id]==null)
					this.portlets[k].Start();
			}
    	}
    },
    getRefresherById : function(ID)
    {
         for (k=0; k<this.portlets.length; k++) 
        {
            if(this.portlets[k]._portlet_id==ID)
            {
                return this.portlets[k];
            }
        }
    },
	addNonRefreshablePortlet : function (portletID, buttonIds)
	{
		btns=new Array();
		for(a=1; a<arguments.length; a++)
			btns.push(arguments[a]);
		this.nonRefreshable[portletID]=btns;
	},
	sortItByHeaderValue : function(orderbycolumn, sortdir, pagenumber, move, portletID){
		var form = document.forms['form_'+portletID];
		if(orderbycolumn!='-1') form.orderbycolumn.value=orderbycolumn;
		if(sortdir!='-1') form.asc.value=sortdir;
		if(pagenumber != -1 && move != 0) form.pagenum.value=pagenumber+move;
		var refresher = ponte.Classes.PortletRefresher.getRefresherById(portletID);
		//refresher.Refresh(this);
		refresher.RefreshNow(refresher,portletID);
	}
}

/**  PortletRefresherObjektum
Megadott idonkent AJAX keressel frissiti a megadott ID-ju porteltet

@portlet_id -   portlet node id-ja
@portlet_refreshInt -   frissitesi gyakorisag
*/
ponte.Classes.PortletRefresher.Refresher = function(portlet_id, portlet_refreshInt)
{
    return{
        _portlet_id : portlet_id,                   //  portlet id-ja, az elso frissites után már ez lesz
        _id : portlet_id+"_"+portlet_refreshInt,    //  portletet tartalmazo node id-ja
        _refreshInt : portlet_refreshInt,           //  frissites gyakorisaga ms-ben megadva
		_form_id : "form_"+portlet_id,
        _intervalHandler : null,                    //  
        _portletNode : null,                        //  frissitendo NODE
        _enabled : true,                            //  frissites kikapcsolasa
        _buttons : new Array(),
		_buttonIDs : null,
		
        getRefreshInterval : function ()
        {
            return this._refreshInt;
        },
        
        setRefreshInterval : function(interval)
        {
            this._refreshInt=interval;
        },
        
        Stop : function ()
        {
            clearInterval(this._intervalHandler);
        },
        
        Start : function()
        {
            // timeout-al csinalja, mert igy 
            this._intervalHandler=setTimeout(this.Refresh, this._refreshInt, this);
            this._portletNode=document.getElementById(this._id);//.parentNode;
        },
		
		SetButtonEvent : function()
		{
			function copyFunction(func, arg, arg2){
                return function(){
                    func(arg, arg2);
                    return false;
                }
            }
			function refreshEvent(obj, id)
			{
				obj.RefreshNow(obj, id);
			}
			for(b=0; b<this._buttons.length; b++)
			{
				this._buttons[b].onclick=copyFunction(refreshEvent,this, b);
			}
		},
		
		// automatikus frissites leallitasa
		StartWithoutAutoRefresh : function(buttonIds)
		{
			this._portletNode=document.getElementById(this._id);//.parentNode;
			this._buttonIDs=buttonIds;
			
			for(b=0; b<this._buttonIDs.length; b++)
			{
				btn=document.getElementById(this._buttonIDs[b]);
				if(btn!=null)
				this._buttons.push(btn);
			}
			this.SetButtonEvent();
		},
		
		// portlet azonnali frissitese, tortli az intervalt
        RefreshNow : function(obj, id)
		{
			function onReady(resp)
            {   
                //obj._portletNode.style.border="none";
                portlet_html=resp.responseText;
                if(portlet_html.length > 37)
                {
                    //  a kezdo es zaro tr td tagek eltavolitasa
					//alert(portlet_html);
                    portlet_html=portlet_html.substr(portlet_html.indexOf("<div"),portlet_html.lastIndexOf("</div>")+6);
                    obj._portletNode.innerHTML=portlet_html;
                    //	callback fuggvenyek meghivasa
                    try
                    {
                    	for(c in ponte.Classes.PortletRefresher.callbacks)
                    		ponte.Classes.PortletRefresher.callbacks[c](obj._id);                    }catch(e){}
					// gomb esemeny tarsitasa
					if(obj._buttonIDs != null){
						obj._buttons=new Array();
						for(b=0; b<obj._buttonIDs.length; b++)
						{
							btn=document.getElementById(obj._buttonIDs[b]);
							if(btn!=null)
								obj._buttons.push(btn);
						}
						obj.SetButtonEvent();
					}
                }
            }
            function errorHandler(e)
            {
            }
            //obj._portletNode.style.border="1px solid red";
			
			//alert('2');
		    req_url=window.location.href;
		    req_url=req_url.split("?")[0];
		    
		    // opcionalis parameterek hozzafuzese
	        req_url+="?portletid="+obj._portlet_id;
				
	        //params=obj._buttons[id].getElementsByTagName("INPUT");
	        //for(p=0; p<params.length; p++)
	        //{
	        //	req_url+="&"+params[p].name+"="+params[p].value;
	        //}
			req_url = obj.BuildQuery(req_url,obj);
        //alert(req_url);
            req=ponte.Services.AjaxService.createRequest(req_url, onReady, errorHandler, 'GET', null);
            req.makeRequest();
		},
		
        Refresh : function(obj)
        {
            function onReady(resp)
            {   
			//alert('onready');
                //obj._portletNode.style.border="none";
                portlet_html=resp.responseText;
				//alert(portlet_html);
                if(portlet_html.length > 37)
                {
				//alert('vmi');
                    //  a kezdo es zaro tr td tagek eltavolitasa
					portlet_html=portlet_html.substr(portlet_html.indexOf("<div"),portlet_html.lastIndexOf("</div>")+6);
					//alert(portlet_html);
                    obj._portletNode.innerHTML=portlet_html;
                    //	callback fuggvenyek meghivasa
                    try
                    {
                    	for(c in ponte.Classes.PortletRefresher.callbacks)
                    		ponte.Classes.PortletRefresher.callbacks[c](obj._id);
                    }catch(e){}
                }
            }
            function errorHandler(e)
            {
            }
            //obj._portletNode.style.border="1px solid red";
	    
			req_url=window.location.href;
			req_url=req_url.split("?")[0];
	    
            req_url+="?portletid="+obj._portlet_id;
			
			req_url = obj.BuildQuery(req_url,obj);
			
            req=ponte.Services.AjaxService.createRequest(req_url, onReady, errorHandler, 'POST', null);
            req.makeRequest();
            
            obj._intervalHandler=setTimeout(obj.Refresh, obj._refreshInt, obj);
        },
		
		BuildQuery : function(query,obj)
		{			
		    var form = document.forms[obj._form_id];
			for(var i=0; i<form.elements.length; i++)
			{
				var key = form.elements[i].name;
				var value = obj.GetElementValue(form.elements[i]);
				if(key && value && typeof(value)!='object')
				{
					query += "&"+key +"="+ encodeURIComponent(value);
				} else if(typeof(value)=='object'){
					for(var j=0; j<value.length; j++){
						query += "&"+key +"="+ encodeURIComponent(value[j]);
					}
				}
			}
			return query;
		},

		GetElementValue : function(formElement)
		{
			if(formElement.length != null) var type = formElement[0].type;
			if((typeof(type) == 'undefined') || (type == 0)) var type = formElement.type;
			switch(type)
			{
				case 'undefined': return;

				case 'radio':
				
					var radioLength = formElement.length;
					if(radioLength == undefined)
						if(formElement.checked)
							return formElement.value;
						else
							return "";
					for(var i = 0; i < radioLength; i++) {
						if(formElement[i].checked) {
							return formElement[i].value;
						}
					}

				case 'select-multiple':
					var myArray = new Array();
					for(var x=0; x < formElement.length; x++) 
						if(formElement[x].selected == true){
							myArray[myArray.length] = formElement[x].innerHTML;
						}
					return myArray;

				case 'checkbox':
					if(formElement.checked){
						return formElement.value;
					}
					return;
			
				default: return formElement.value;
			}
		}
    };
}

/**
 * Az ajax keres valaszanak beerkezesekor meghivja ezeket a fuggvenyeket
 * A frissitett tabla ID-val hivja meg oket !!
 */
ponte.Classes.PortletRefresher.callbacks = new Array();
ponte.Classes.PortletRefresher.addReadyCallback = function(func)
{
	ponte.Classes.PortletRefresher.callbacks.push(func);
}


//	load fuggveny
ponte.Classes.PortletRefresher.loadEvent=function()
{
    ponte.Classes.PortletRefresher.startRefreshing();
}

addLoadEvent(ponte.Classes.PortletRefresher.loadEvent);
