BarISPage = function() {
    this.modulId = null;
    this.content = null;
    this.stateId = 0;
    this.kRid = '';
    this.errors = new Array();
    this.windows = new Array();
    this.nParams = new NParams("");
    this.deviceMode = '2';
	this.debug = false;
}

BarISPage.MoNetModul = 5;
BarISPage.DealerModul = 4;
BarISPage.MyNetModul = 3;
BarISPage.CrmModul = 2;
BarISPage.BarNetModul = 1;

BarISPage.CisDataFieldCompletion = function(sourceId, targetId, cisId)
{
    var value = $get(sourceId).value;
    Baris.Portal.CommonServices.GetValueForShortcut(value, cisId, BarISPage.CisDataFieldCompletionSuccess, BarISPage.CisDataFieldCompletionFail, {sourceId:sourceId, targetId:targetId, cisId:cisId});
}
/*                     my BROWSER                         */
BarISPage.BR_T_ANDROID = 0;
BarISPage.BR_T_CHROME = 1;
BarISPage.BR_T_IPHONE = 2;
BarISPage.BR_T_SYMBIAN = 3;
BarISPage.BR_T_FIREFOX = 4;
BarISPage.BR_T_EXPLORER = 5;
BarISPage.BR_T_OPERA = 6;
BarISPage.BR_T_SAFARI = 7;
BarISPage.BR_T_UNDEFINED = 8;

BarISPage.Back = function() {
    barISPage.fireEvent('Back');
}



BarISPage.myBrowser = function() {


   
        if (navigator.userAgent.indexOf("Symbian") != -1) {
            return BarISPage.BR_T_SYMBIAN;
    }
    else
        if (navigator.userAgent.indexOf("Firefox") != -1) {
            return BarISPage.BR_T_FIREFOX;
    }
    else
        if (navigator.userAgent.indexOf("MSIE") != -1) {
            return BarISPage.BR_T_EXPLORER;
    }
    else
        if (navigator.userAgent.indexOf("Opera") != -1) {
            return BarISPage.BR_T_OPERA;
    }
    else
    /* safari musi byt posledne lebo sa vyskytuje aj v inych prehliadacoch (Android,Chrome,iPhone) */
        if (navigator.userAgent.indexOf("Safari") != -1) {
			if (navigator.userAgent.indexOf("Android") != -1) 
			{
				return BarISPage.BR_T_ANDROID;
			}
			else
				 if (navigator.userAgent.indexOf("iPhone") != -1) {
					return BarISPage.BR_T_IPHONE;
				}
				else
					if (navigator.userAgent.indexOf("Chrome") != -1) {
						return BarISPage.BR_T_CHROME;
					}
					else
					{
						return BarISPage.BR_T_SAFARI;
					}
    }
    else
        return BarISPage.BR_T_UNDEFINED;

}
/*                     my BROWSER     END                    */

/*                 my OS                */
BarISPage.OS_WINDOWS = 0;
BarISPage.OS_LINUX = 1;
BarISPage.OS_IPHONE = 2;
BarISPage.OS_MAC = 3;

BarISPage.myOS = function() {
    if (navigator.userAgent.indexOf("Win") != -1) {
        return BarISPage.OS_WINDOWS;
    }
    else
        if (navigator.userAgent.indexOf("Linux") != -1) {
        return BarISPage.OS_LINUX;
    }
    else
        if (navigator.userAgent.indexOf("iPhone") != -1) {
        return BarISPage.OS_IPHONE;
    }
    else
        if (navigator.userAgent.indexOf("Mac") != -1) {
        return BarISPage.OS_MAC;
    } 
}
/*                my OS end              */

BarISPage.CisDataFieldCompletionSuccess = function(response,context,caler)
{
    var values = response.split(';');
    if(values.length>1){
        var targetEl = $get(context.targetId)
        targetEl.value = values[0];
        $get(context.targetId + "VAL").value = values[1];
        try{
            targetEl.onchange();
        }
        catch(e){
        }
        try{
            setNextFocus(context.targetId);
        }
        catch(e)
        {
        }
    }
    
    return;
}

BarISPage.CisDataFieldCompletionFail = function(a,b,c)
{
    return;
}

BarISError = function()
{
    this.type = '';
    this.message = '';
    this.time = null;
    this.name ='';
    this.adminMode=0;
}

BarISPage.extjsgrid = null
BarISPage.extjsgridgraf = null
BarISPage.extjsgridascx = new Array();


BarISPage.RefreshDataSource = function(result,context)
{
    barISPage.fireEvent('refreshDataSource');
}



BarISPage.OnAsyncOk = function(result,context)
{
    var typ = 'info';
    if(result.OK == false)    
        typ = 'alert';    
     myAlert(typ,result.Message,false)

}

BarISPage.OnAsyncFailed = function(result,context)
{
   myAlert('alert','Neúspešné vykonanie operacie na serveri',false)
}


BarISPage.Detail = function(content,nparams,showHeader)
{

	var url =  barISPage.getAspx() + '?copycontent=' + content;
	if( showHeader != true)
	    url  = url + '&hideHeader=True';
	if( nparams != null )
		url  = url + '&nparams=' + nparams;		
	var nparamsstring ='';	
	var windowName = 'DETAIL';
	var sirka = 1024;
	var vyska = 700;
	var resizable = 'yes';
	var scroll = 'no';
	MyWindowOpen(url,windowName,sirka,vyska,resizable,scroll)

}

BarISPage.ErrorMsg = function(message)
{
   if(Ext!=null)
   {
   Ext.MessageBox.show({
                                    title: 'SQL Error',
                                    msg: message,
                                    buttons: Ext.MessageBox.OK,
                                    icon: Ext.MessageBox.ERROR
                                })
   }
}

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 )
    {   
        var 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].type == 'checkbox' )  && !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            
        }
		inputs = el.getElementsByTagName('TEXTAREA');
        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;
}


BarISPage.CollectPostDataToJSon = function(el,splitName /*def false*/)
{
    var retJson = Object();
    
    if( typeof splitName === 'undefined'  || splitName == '')
        splitName = false;            
    
    if( el != null )
    {   
        var all_inputs = new Array();
        var inputs = null;
        all_inputs[0] = el.getElementsByTagName('INPUT');                   
        all_inputs[1] = el.getElementsByTagName('TEXTAREA');                   
        all_inputs[2] = el.getElementsByTagName('SELECT');                   
        var name ='';    
        var value = '';      
        var dateA = '';   
        for( var j = 0; j != 3; j++ )
        {
          inputs = all_inputs[j];
          for( var i = 0 ; i != inputs.length ; i++ )
          {            
            name = inputs[i].name;
            if( name == '' )
                continue;
            if( splitName)
             name = name.substr(name.lastIndexOf(':')+1);
            if( ( inputs[i].type == 'radio' || inputs[i].type == 'checkbox' )  && !inputs[i].checked )            
                continue;  
            
            if( inputs[i].value == '' )
            {
              value = null;
            }
            else if( inputs[i].getAttribute('btype') == 'date')
            {
              dateA = inputs[i].value.split('.');
              if( dateA.length != 3)
                value = 'null';
              else
	              value = 'new Date(Date.UTC(Number(dateA[2]),Number(dateA[1])-1,Number(dateA[0])))';	
            }
            else if( inputs[i].getAttribute('btype') == 'number' )
            {                            
              value = 'Number(\'' + inputs[i].value.replace(/,/,'.').replace(/[^0-9\.]/g,'') + '\')'            
            }
            else
            {
              value = '\'' + inputs[i].value + '\'';
            }
            try
            {
              eval('retJson.' + name + '=' + value );            
            }
            catch(e)
            {
              return e.get_Message();
            }
                   
        }  
        }                      
    }
    return retJson;
}
 
// params musi byt pole parametrov
BarISPage.ModifyQuery = function(params)
{
	var url = unescape(location.search.substr(1).replace(/\+/g, " "))
        if (url.substr(url.length - 1, 1) == ';')
           url = url.substr(0,url.length-1);
	var param = url.split("&")
	var nparams = ""
	var urlParams = new Array()
    for (var n = 0; n < param.length; n++)
    {
        if (param[n] != '')
	{
		var temp = param[n].split("=")
	if( temp.length < 2 )
		    continue;
		if(temp[0] == "nparams")
			nparams = temp[1].replace(/\'/g,"\\\'")
		else
                urlParams[temp[0]] = temp[1].replace(/\'/g, "\\\'")
        }
	}
	var nparam = nparams.split(";")
	var pocet = nparam.length
	var nparamsArr = new Array()
	if(pocet > 1)
	for(n = 0; n < pocet; n+=2)
	{
		nparamsArr[nparam[n]] = nparam[n+1].replace(/\'/g,"\\\'")
	}
	for(n in params)
	{
		nparamsArr[n] = params[n]
	}

	url = "?"
	for(n in urlParams)
	{
	  if (urlParams[n] != "" && typeof (urlParams[n]) !== 'function')
		  url += n + "=" + urlParams[n] + "&"
	}
	nparams = ""
	for(n in nparamsArr)
	{
		if(nparamsArr[n] != "" && typeof(nparamsArr[n]) !== 'function')
			nparams += n + ";" + nparamsArr[n] + ";"
	}
	if(nparams.length > 0)
		url += "nparams=" + nparams;

	return url.substr(0, url.length - 1)
}

BarisPageEventFunction = function()
{
    this.eventFunctionName = '';
    this.argsCount = 0;
    this.functionArgs = '';
}

BarISPage.prototype =
{
    init: function(pageId, pageName, adminMode, modulId,stateId,kRid) {		
        this.content = pageId;
        this.adminMode = adminMode;
        this.name = pageName;
        this.modulId = modulId;
        this.stateId = stateId;
		this.kRid = kRid;
    },
    showInfo: function() {
        alert(this.content);
    },
    
    tryForward : function(fwdParams) {    
        Baris.Portal.CommonServices.CanAccessPage({ Content : fwdParams.content , NParams : fwdParams.nparams },barISPage.tryForwardSuccess);    
    },
    tryForwardSuccess : function(result)
    {    
        if( result.Message  != null )
        {
            myAlert('alert',result.Message);
            return;
        }
        else if( result.State == false )
        {
            if( fwdParams.AccessDeniedMessage != '' )            
                myAlert('alert',fwdParams.AccessDeniedMessage);
            else
                myAlert('alert','Nemáte prístup k tejto stránke');
        }
        if( result.State == true )
        {
            var fwdUrl = barISPage.getAspx() + '?content=' + result.Content;
            if( result.NParams != '')
                fwdUrl += fwdUrl +'&nparams=' + result.NParams;        
            window.location = fwdUrl;
        }    
    },   
    ChangeStateVar: function(varName,varValue){
    
      Baris.Portal.CommonServices.ChangeStateVar(barISPage.stateId,varName,varValue,this.changeStateVarOk,this.changeStateVarFailed)
    
    }, 
    ChangeStateVar2: function(varName, varValue, type, refreshData)
    {

        Baris.Portal.CommonServices.ChangeStateVar2(barISPage.stateId, barISPage.modulId, varName, varValue, type, this.changeStateVarOk, this.changeStateVarFailed, refreshData);

    },   
    changeStateVarOk : function(result,context){    
      if( result.State == false )
        alert(result.Message);   
      else
        BarISPage.RefreshDataSource(result,context);
    },    
    changeStateVarFailed: function(error){    
      alert(error.get_Message());
    },    
    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;
                var naslo = false
                for (var i = 0; i < event.length; i++) {
                    if (event[i].eventFunctionName == eventFunction.eventFunctionName) {
                        naslo = true;
                    }
                }
                if (naslo == false) {
                    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;

            }
        }

    },

    removeEvent: function(eventName, functionName) {
        var event = eval("this." + eventName);
        var tempEvent = new Array();
        if ((event != null) && (event["length"] != null) && (event.length > 0)) {
            for (var i = 0; i < event.length; i++) {
                if (event[i].eventFunctionName != functionName) {
                    tempEvent[tempEvent.length] = event[i];
                }
            }
            eval("this." + eventName + " = tempEvent");
        }

    },

    fireEvent: function(eventName, params) {
        try {
            var event = eval("this." + eventName)
            if (event == null) {
                return;
            }
            var eventCount = event.length;
            
            var j=0;
            for (i = 0; i < eventCount; i++) {
                var eventF = event[i]
                var isFunction = '';
                eval("isFunction = (typeof "+eventF.eventFunctionName+" === 'function')");
                
                //if(isFunction) ;
				j++;
                
                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]
					}
if (params != null)
					{				
					  if( typeof(JSON) !== 'undefined' )
					  {					  
					    f = f + JSON.stringify(params);
					  }
					  else if( typeof(Ext) !== 'undefined')
					  {					  
					    f = f + Ext.util.JSON.encode(params);
					  }					              
					  else 
					  {
					     f = f + '"' + params + '"';
					  }
					}

                f = f + ');'
                try
                {
                eval(f);
            }
                catch(e)
  {
                
                  if( barISPage.adminMode  > 0 )
                  {
                    alert(e.message);
                   }
                }
                
                
               // event[j] = event[i];
            }
			/*
            if(j!=i)
                event = event.slice(0,j+1)*/
            a = event;
        }
        catch (err) {
          if( adminMode )
            alert("Nastala chyba pri spusteni eventu.[" + f + "] - " + err.message);
        }

        
        

    },

    getAspx: function() {
        switch (this.modulId) {
            case BarISPage.MoNetModul:
                return 'mo.aspx';
                break;
            case BarISPage.DealerModul:
                return 'dealer.aspx';
                break;
            case BarISPage.MyNetModul:
                return 'mynet.aspx';
                break;
            case BarISPage.CrmModul:
                return 'intranet.aspx';
                break;
            case BarISPage.BarNetModul:
                return 'baris.aspx';
                break;
            default:
                return 'default.aspx';
                break;

        }

    },

    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
*/

ItemIdes = function()
{
}

ItemIdes.commandImageId = 0;
ItemIdes.reportID = 0;


BarISPage.FilterResponse = function(result)
{

  var resultJson = null;  
  try
  {
    eval('resultJson = ' + result.responseText);    
  }
  catch(e)
  {
    myAlert('err','BarISPage:Chyba spracovania filtru');
    return;
  }
    
  if( resultJson.State != true )
  {
        myAlert('err',resultJson.Message);
        return;        
  }   
  barISPage.fireEvent('refreshDataSource');    
}


ExtJsGridButtons = function()
{
}

//tvar - cislo nalepky;id elementu;colset;image;altimage
ExtJsGridButtons.colset = new Array();


