/**
 * @author Nivaria Innova Team
 */
var ncm = {
	version: "1.0.0"
}

ncm.loadedModules = new Array();
ncm.eventListeners = new Array();

//Custom events constants
ncm.event_calendarClick = "ncmCalendarClick";
ncm.event_calendarQueryLoaded = "ncmCalendarQueryLoaded";

ncm.load = function(filePath) {
	if(ncm.loadedModules[filePath]) return false;
	var isLoaded = true;
	$jq.ajax({
		async: false,
		cache: false,
		type: "GET",
		url: filePath,
		dataType: "script",
		contentType: "text/javascript",
		error: function(request,msg,ex) {
		   isLoaded = false;		
           ncm.showError(msg,ex,request);
        }
	});
	ncm.loadedModules[filePath] = isLoaded;
	return isLoaded;
}

ncm.initProperties = function(object,options) {
	object.datatype = options.datatype?options.datatype:null;
	object.language = options.language?options.language:null;
	object.jsp_utils = options.jsp_utils?options.jsp_utils:null;
	object.pageUrl = options.pageUrl?options.pageUrl:null;
	object.channel = options.channel?options.channel:null;
	object.inPreview = options.inPreview?options.inPreview:false;
	object.issueId = options.issueId?options.issueId:null;
	var params = new String("action=1");
	params += "&dataTypeName=";
	params += object.datatype?object.datatype:"";
	params += "&langName=";
	params += object.language?object.language:"";
	params += "&pageUrl=";
	params += object.pageUrl?object.pageUrl:"";
	params += "&issueId=";
	params += object.issueId?object.issueId:"-1";	
	$jq.ajax({
   	 async: false,
        type: "POST",
        url: object.jsp_utils,
        data: params,
        dataType: "json",
        error: function(request,msg,ex) {
           ncm.showError(msg,ex,request);
        },
        success: function(json) {
			if(json.properties!=null) {
				for(var i=0;i<json.properties.length;i++) {
					object.properties[json.properties[i].name]=json.properties[i].value;
				}				
			}
        }
    });
}

ncm.initSimpleFields = function(manager,object) {
	var jspfile = manager.jsp_utils;
	if(jspfile==null)
		jspfile = manager.getProperty("utils_jsp");
	if(jspfile=="") jspfile= new String("components/components-utils.jsp");
	var params = new String("action=2");
	params += "&objId=";
	params += object.id;
	params += "&langName="
	params += manager.language?manager.language:"";
	params += "&pageUrl=";
	params += manager.pageUrl?manager.pageUrl:"";
	params += "&channel=";
	params += manager.channel?manager.channel:"";
	params += "&issueId=";
	params += manager.issueId?manager.issueId:"-1";		
	var Me = object;		
	$jq.ajax({
   	 async: false,
       	type: "POST",
       	url: jspfile,
       	data: params,
       	dataType: "json",
       	error: function(request,msg,ex) {
       		ncm.showError(msg,ex,request);
       	},
       	success: function(json) {
			if(json.simplefields!=null) {
				for(var i=0;i<json.simplefields.length;i++) {
					Me.simplefields[json.simplefields[i].name]=json.simplefields[i].value;
				}				
			}
       	}
   	});
}

ncm.showError = function(msg,ex,request) {
	var m = msg + ":\n";
    if(ex) {
   	 m += ex.message?ex.message+"\n":"";
        m += ex.fileName?"File: "+ex.fileName+"\n":"";
        m += ex.lineNumber?"Line: "+ex.lineNumber+"\n":"";
        m += ex.stack?"Stack: "+ex.stack+"\n":"";
    }
	if(request!=null) {
		m += request.status?request.status+"\n":"";
		m += request.statusText?request.statusText+"\n":"";
	}
    alert(m);
}

ncm.openWindow = function(url) {
    if ($jq.trim(url)!= "") {
		var w = open(url);
		if(w){
			w.focus();
		}
	}
}

ncm.addEventListener = function(eventName,selector) {
	if(ncm.eventListeners[eventName]) {
		if($jq.inArray(selector,ncm.eventListeners[eventName])==-1) {
			ncm.eventListeners[eventName][ncm.eventListeners[eventName].length]=selector;
		}
	} else {
		ncm.eventListeners[eventName] = new Array(selector);
	}
}

ncm.getEventListeners = function(eventName) {
	var res = null;
	if(ncm.eventListeners[eventName]) res = ncm.eventListeners[eventName];
	return res; 
}

ncm.getEventListenersSelector = function(eventName) {
	var res = "";
	var arr = ncm.getEventListeners(eventName);
	if(arr!=null) {
		res = arr.join(",");
	}
	return res;
}

ncm.triggerEvent = function(eventName,arrParams) {
	var selector = ncm.getEventListenersSelector(eventName);
	if(selector!="") {
		$jq(selector).trigger(eventName,arrParams);
	}
}

ncm.getParametersFromUrl = function() {
	var res = new Array();
	if(window.location.search) {
		var qparams = window.location.search.replace(/\?/,"");
		var initParams = qparams.split("&");
		if(initParams!=null && initParams.length>0) {
			for(var i=0;i<initParams.length;i++) {
				var pair = initParams[i];
				var arr = pair.split("=");
				if(arr!=null && arr.length>1) {
					res[arr[0]]=arr[1];
				}
			}			
		}	
	}
	return res;
}

ncm.gatcLinks = function(selector,pageName) {
    var m_selector = selector + " a";
    $jq(m_selector).click(function(){
        if(typeof(pageTracker)=="undefined") return;
        if(pageTracker==null) return;
        var virtPath = "/"+pageName;
        var href = this.getAttribute("href");
        if(href==null) return;
        var isFile = href?(href.indexOf(".doc")!=-1 || href.indexOf(".xsl")!=-1 || href.indexOf(".pdf")!=-1 || href.indexOf(".ppt")!=-1):false; 
        var targ = this.getAttribute("target");
        var isExt = targ?targ=="_blank":false;
        var title = this.getAttribute("title");
        virtPath += "/"+(isFile?"download":(isExt?"external_link":"internal_link"));
        virtPath += "/"+(title?title:href);
        pageTracker._trackPageview(virtPath);
    });
}


