﻿// JScript File
//Created by Ingemar Nilsson
LogFactoryGetQueryParam = function(name){
	 //...http://www.netlobo.com/url_query_string_javascript.html            
	 name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");  
	 var regexS = "[\\?&]"+name+"=([^&#]*)";  
	 var regex = new RegExp( regexS );  
	 var results = regex.exec( window.location.href );  
	 if( results == null )    
		return "";  
	 else    
		return results[1];     
	//...sample
	//...http://www.foo.com/index.html?bob=123&frank=321&tom=213#top
	//...var frank_param = gup( 'frank' );                       
}
LogFactoryGetLevel = function(defaultLevel, key){
	var level;
	var overrideLevel;
	var customLevel;
	var name;
	var prefix = 'log4js-';
	//...sample:
	//... http://server/dir/page.html?...&log4js-default=DEBUG&log4js-reseplansamord.AddressDictonary=INFO...
	//... http://server/dir/page.html?...&log4js-override=DEBUG ... will set the levels for alla debuggers
    
    name = prefix + 'override';
    overrideLevel = LogFactoryGetQueryParam(name);    
    if (overrideLevel != ''){    
        customLevel = overrideLevel;
    }else{
        name = prefix + key;
        customLevel = LogFactoryGetQueryParam(name);    
    }    
    switch(customLevel){
        case 'DEBUG': level = Log.DEBUG;break;
        case 'INFO':  level = Log.INFO; break;
        case 'WARN':  level = Log.WARN; break;
        case 'ERROR': level = Log.ERROR;break;
        case 'FATAL': level = Log.FATAL;break;
        case 'NONE':  level = Log.NONE; break;	            
        default:      level = defaultLevel;
    }
    return level;
}

var key_reseplansamord_AddressDictonary     = 'reseplansamord.AddressDictionary';
var key_reseplansamord_AutoComplete         = 'reseplansamord.AutoComplete';
var key_reseplansamord_RouteParser          = 'reseplansamord.RouteParser';


function LogFactory(){        
    var logger = Log.popupLogger;        
    //DEV: how to change logleves att runtime
    //[mypage.html]?log4js-default=ERROR&log4js-reseplansamord.AddressDictonary=INFO&log4js-reseplansamord.AutoComplete=WARN
        
    //[mypage.html]?log4js-override=NONE
    
    //TODO: change all default log levels to NONE before deployment
    this.defaultLog                        = new Log(LogFactoryGetLevel(Log.NONE, 'default'), logger);        
    this.reseplansamordAddressDictionary   = new Log(LogFactoryGetLevel(Log.NONE, key_reseplansamord_AddressDictonary), logger);        
    this.reseplansamordAutoComplete        = new Log(LogFactoryGetLevel(Log.NONE, key_reseplansamord_AutoComplete), logger);        
    this.reseplansamordRouteParser         = new Log(LogFactoryGetLevel(Log.NONE, key_reseplansamord_RouteParser),  logger);                

    
}
LogFactory.prototype.getDefault = function(){
    return this.defaultLog;
}
LogFactory.prototype.getByKey = function(key){    
    var logger;
    switch(key){        
        case key_reseplansamord_AddressDictonary:
            logger = this.reseplansamordAddressDictionary;
        break;
        case key_reseplansamord_AutoComplete:
            logger = this.reseplansamordAutoComplete;
        break;
        case key_reseplansamord_RouteParser:
            logger = this.reseplansamordRouteParser;            
        break;
        case key_rwc_SelectTool:
            logger = this.rwcSelectTool;            
        break;
        default:
            logger = this.getDefault();
    }        
    
    return logger;    
}



