BarISPage = function()
{    
    this.content = null;
    this.errors = new Array();      
}

BarISError = function()
{
    this.type = '';
    this.message = '';
    this.time = null;
}

BarISPage.isdefined = function(object, variable)
{
    return (typeof(eval(object)[variable]) != 'undefined');
}

BarISPage.CollectPostData = function(el,splitName /*def false*/)
{
    
    if( typeof splitName === 'undefined'  || splitName == '')
        splitName = false;            
    var ret='';
    if( el != null )
    {   
        inputs = el.getElementsByTagName('INPUT');   
        var name ='';             
        for( var i = 0 ; i != inputs.length ; i++ )
        {            
            name = inputs[i].name;
            if( splitName)
             name = name.substr(name.lastIndexOf(':')+1);
            if( inputs[i].type == 'radio' && !inputs[i].checked )            
                continue;            
            ret += ';' + name + ';' + inputs[i].value            
        }                
        inputs = el.getElementsByTagName('SELECT');
        for( i = 0 ; i != inputs.length ; i++ )
        {
            name = inputs[i].name;
            if( splitName)
                name = name.substr(name.lastIndexOf(':')+1);
            ret += ';' + name + ';' + inputs[i].value            
        }
        ret = ret.substr(1);                         
    }
    return ret;
}

BarisPageEventFunction = function()
{
    this.eventFunctionName = '';
    this.argsCount = 0;
    this.functionArgs = '';
}

BarISPage.prototype = 
{
    init: function(pageId)
    {    
        this.content = pageId;            
    },
    showInfo : function() 
    {
        alert(this.content);
    } , 
        
    chainEvent : function(eventName,functionName)
    {
        if(arguments.length>1)
        {
            var efargs = new Array();
            var argsc = 0;
            for(i=2;i<arguments.length;i++)
            {
                efargs[i-2] = arguments[i];
                argsc = i+1;
            }
            try
            {
                var event = eval("this."+eventName);
                var eventFunction = new BarisPageEventFunction;
                eventFunction.eventFunctionName = functionName;
                eventFunction.functionArgs = efargs;
                event[event.length] = eventFunction;
                
            }
            catch(Error)
            {
                var event = eval("this."+eventName+" = new Array();");
                var eventFunction = new BarisPageEventFunction;
                eventFunction.eventFunctionName = functionName;
                eventFunction.functionArgs = efargs;
                event[0] = eventFunction;
                
            }
        }
        
    },
    
    fireEvent : function(eventName)
    {
        try{
            var event = eval("this."+eventName)
            if(event == null)
            {
                return;
            }
            var eventCount = event.length; 
            for(i = 0; i<eventCount; i++)
            {
                var eventF = event[i]
                var f = eventF.eventFunctionName + '('
                var first = true;
                for(j = 0;j<eventF.functionArgs.length; j++)
                {
                    if(!first)
                    {
                        f = f + ', '
                    }
                    f = f + event[i].functionArgs[j]
                }
                f = f + ');'
                eval(f);
            }
        }
        catch(err)
        {
            
        }
        
    }, 
    
    fireRefreshDataSource : function()
    {
        this.fireEvent('refreshDataSource')
    },
    
    fireLayoutChangedFn : function()
    {
        this.fireEvent('layoutChanged')
    },
    
    registerError : function(type,message)
    {
        if((type!='error') && (type!='warning') && (type!='notice'))
        {
            registerError('error','No error type '+type+' available. Check barispage.js for more info.')
        }
        var time = new Date();
        var error = new BarISError();
        error.type = type;
        error.message = message;
        error.time = time;
        this.errors[time.toString()] = error;
    },
    
    checkErrors : function()
    {
        var win = $get('errorDiv');
        var errorsWin = $get('errorDivTabsErrors');
        var warningsWin = $get('errorDivTabsWarnings');
        var noticesWin = $get('errorDivTabsNotices');
        if((errorsWin==null) || (warningsWin==null) || (noticesWin==null) ||(win==null))
        {
            return;
        }
        
        errorsWin.innerHTML = "";
        warningsWin.innerHTML = "";
        noticesWin.innerHTML = "";
        
        for(index in this.errors)
        {
            if(this.errors[index].type=='error')
            {
                errorsWin.innerHTML += this.errors[index].message
            }
            if(this.errors[index].type=='warning')
            {
                warningsWin.innerHTML += this.errors[index].message
            }
            if(this.errors[index].type=='notice')
            {
                noticesWin.innerHTML += this.errors[index].message
            }
        } 
        
        win.style.visibility="visible";
    }
}
/*
registerer events

layoutChanged - zmena rozlozenia panelov na stranke
refreshDataSource - nacitenie dat zo servera
dataLoaded - data boli nacitane zo zdroja
*/

/*
  error types
  
  notice
  warning
  error
*/