
(function($){function toIntegersAtLease(n)
{return n<10?'0'+n:n;}
Date.prototype.toJSON=function(date)
{return this.getUTCFullYear()+'-'+
toIntegersAtLease(this.getUTCMonth())+'-'+
toIntegersAtLease(this.getUTCDate());};var escapeable=/["\\\x00-\x1f\x7f-\x9f]/g;var meta={'\b':'\\b','\t':'\\t','\n':'\\n','\f':'\\f','\r':'\\r','"':'\\"','\\':'\\\\'};$.quoteString=function(string)
{if(escapeable.test(string))
{return'"'+string.replace(escapeable,function(a)
{var c=meta[a];if(typeof c==='string'){return c;}
c=a.charCodeAt();return'\\u00'+Math.floor(c/16).toString(16)+(c%16).toString(16);})+'"';}
return'"'+string+'"';};$.toJSON=function(o,compact)
{var type=typeof(o);if(type=="undefined")
return"undefined";else if(type=="number"||type=="boolean")
return o+"";else if(o===null)
return"null";if(type=="string")
{return $.quoteString(o);}
if(type=="object"&&typeof o.toJSON=="function")
return o.toJSON(compact);if(type!="function"&&typeof(o.length)=="number")
{var ret=[];for(var i=0;i<o.length;i++){ret.push($.toJSON(o[i],compact));}
if(compact)
return"["+ret.join(",")+"]";else
return"["+ret.join(", ")+"]";}
if(type=="function"){throw new TypeError("Unable to convert object of type 'function' to json.");}
var ret=[];for(var k in o){var name;type=typeof(k);if(type=="number")
name='"'+k+'"';else if(type=="string")
name=$.quoteString(k);else
continue;var val=$.toJSON(o[k],compact);if(typeof(val)!="string"){continue;}
if(compact)
ret.push(name+":"+val);else
ret.push(name+": "+val);}
return"{"+ret.join(", ")+"}";};$.compactJSON=function(o)
{return $.toJSON(o,true);};$.evalJSON=function(src)
{return eval("("+src+")");};$.secureEvalJSON=function(src)
{var filtered=src;filtered=filtered.replace(/\\["\\\/bfnrtu]/g,'@');filtered=filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,']');filtered=filtered.replace(/(?:^|:|,)(?:\s*\[)+/g,'');if(/^[\],:{}\s]*$/.test(filtered))
return eval("("+src+")");else
throw new SyntaxError("Error parsing JSON, source is not valid.");};})(jQuery);/**
 * @namespace ncmjsapi
 */
var $jq = jQuery.noConflict();
//Enables for all serialization
$jq.ajaxSettings.traditional = true;

$jq.extend({
	/**	@id createNcmClass */
	createNcmClass: function(options){
		return $jq.createNcmSubClass(NcmAbstractComponent,options);
	},
	/** @id createNcmSubClass*/
	createNcmSubClass: function(superclass,options){
		if(superclass && $jq.isFunction(superclass)){
			function m_extend(Child, Parent) {
			    var F = function(){};
			    F.prototype = Parent.prototype;
			    Child.prototype = new F();
			    Child.prototype.constructor = Child;
			    Child.superclass = Parent.prototype; 
			};
			
			function m_manager(ncmClass){
				ncmClass.instances = null;
				ncmClass.properties = null;
				ncmClass.datatype = null;
				ncmClass.jsp_utils = null;
				ncmClass.language = null;
				ncmClass.pageUrl = null;
				ncmClass.channel = null;
				ncmClass.inPreview = false;
				ncmClass.issueId = null;
				ncmClass.skin = null;
				ncmClass.pageId = null;

				ncmClass.register = function(objectId,json,jsonData) {
					try {
						var aObject = new ncmClass();
						aObject.initialize(objectId,json,jsonData);
						ncmClass.instances[""+objectId] = aObject;
						if(ncm["registeredInstances"]){
							ncm["registeredInstances"].push({id:objectId,object:aObject});
						}
					} catch(mErr){
						ncm.showError("Error registering component instance",mErr,null,ncmClass.inPreview,ncmClass.jsp_utils);
					}	
				};

				ncmClass.getRegistered = function(objectId) {
					return ncmClass.instances[""+objectId];
				};

				ncmClass.get = function(objectId) {
					return ncmClass.getRegistered(objectId);
				};

				ncmClass.initProperties = function(options) {
					var Me = ncmClass;
					var m_initProperties = function(json) {
						if(json["properties"]) {
							$jq.each(json["properties"],function(i,val){
								Me.properties[this.name]=this.value;
							});
						}
					};
					
					ncmClass.properties = {};
					ncmClass.instances = {};
					ncmClass.datatype = options.datatype?options.datatype:null;
					ncmClass.language = options.language?options.language:null;
					ncmClass.jsp_utils = options.jsp_utils?options.jsp_utils:null;
					ncmClass.pageUrl = options.pageUrl?options.pageUrl:null;
					ncmClass.channel = options.channel?options.channel:null;
					ncmClass.inPreview = options.inPreview?options.inPreview:false;
					ncmClass.issueId = options.issueId?options.issueId:null;
					ncmClass.skin = options.skin?options.skin:null;
					try {
						ncmClass.pageId = options.pageId?options.pageId:null;
					} catch(mErr){}
					
					if(options["json"] && options["json"]["properties"]) {
						m_initProperties(options["json"]);
					} else {
						var params = ncm.concat("action=1&dataTypeName=",ncmClass.datatype?ncmClass.datatype:"","&langName=",ncmClass.language?ncmClass.language:"","&pageUrl=",ncmClass.pageUrl?ncmClass.pageUrl:"");
						$jq.ajax({
					    	async: false,
					        type: "GET",
					        url: ncmClass.jsp_utils,
					        data: params,
					        dataType: "json",
					        error: function(request,msg,ex) {
					           ncm.showError(msg,ex,request,Me.inPreview,Me.jsp_utils);
					        },
					        success: function(json) {
								m_initProperties(json);
					        }
					    });	
					}
				};

				ncmClass.getProperty = function(propName) {
					var res = ncmClass.properties[propName];
					if(!res) res="";
					if(typeof(res)==="undefined") res="";
					return res;
				};
			};
			
			var d = new Date();
			this[""+d.getTime()] = function(){
				if(options && options["fields"]){
					var m_fields = ncm.clone(options["fields"]); 
					$jq.extend(this,m_fields);
				}	
			};
			m_extend(this[""+d.getTime()],superclass);
			m_manager(this[""+d.getTime()]);
			if(options && options["prototype"]){
				$jq.extend(this[""+d.getTime()].prototype,options["prototype"]);
			}
			return this[""+d.getTime()];
		} else {
			return $jq.createNcmClass(options);
		}
	},
	/** @id extendNcmClass*/
	extendNcmClass: function(ncmclass,options){
		if(ncmclass && $jq.isFunction(ncmclass)){
			if(options && options["fields"]){
				$jq.extend(ncmclass,options["fields"]);
			}
			if(options && options["prototype"]){
				$jq.extend(ncmclass.prototype,options["prototype"]);
			}
		}
	}
});
/** @id linkEvents */
$jq.fn.linkEvents = function(callback){
	if(callback && $jq.isFunction(callback)){
		this.click(callback).keypress(callback);
	}
};
/** @id liveLinkEvents */
$jq.fn.liveLinkEvents = function(callback){
	if(callback && $jq.isFunction(callback)){
		this.live("click",callback).live("keypress",callback);
	}
};
var ncm = {
	version: "1.0.1",
	isIE6: $jq.browser.msie && !window["XMLHttpRequest"],
	loadedModules: {},
	eventListeners: {},
	customEventsTriggers: {},
	loadedDialogs: {},
	registeredInstances: [],
	/*Custom events definition*/
	customEvents: {
		ncmValueChange: "ncmValueChange",
		ncmScriptsLoaded: "ncmScriptsLoaded",
		ncmBeforeLoadData: "ncmBeforeLoadData",
		ncmAfterLoadData: "ncmAfterLoadData",
		ncmRollover: "ncmRollover",
		ncmSuccess: "ncmSuccess",
		ncmError: "ncmError"
	},
	/*JSON constants*/
	SIMPLE_FIELDS_JSO: "simplefields",
	PROPERTIES_JSO: "properties",
	COMPLEX_FIELDS_JSO: "complexfields",
	DS_FIELDS_JSO: "dsfields",
	DS_FIELD_PROPERTIES_JSO: "dsfieldproperties",
	QUERY_GROUPBY_FIELDS_JSO: "groupbyfields",
	QUERY_LAYOUTS_JSO: "layouts",
	QUERY_GEOFIELDS_JSO: "geofields",
	QUERY_TOTALS_JSO: "totals",
	QUERY_ORDERBY_FIELDS_JSO: "orderby",
	QUERY_PARAMS_JSO: "params",
	QUERY_SUBCATEGORY_JSO: "subcategory",
	QUERY_NODES_JSO: "nodes",
	QUERY_FILTER_JSO: "filter",
	QUERY_ITEM_IMAGE: "itemimage",
	SEARCH_FIELDS_ADV: "srchfieldsadv",
	GMAP_MORE_INFO: "gmapmoreinfo",
	GMAP_CUSTOM_CONTROLS: "gmapcustomctrl",
	GMAP_ICON: "gmapicon",
	GMAP_SEARCH: "gmapsearch",
	DT_JSO: "datatype",
	MEDIA_DESCR_FIELDS_JSO: "media_description_fields",
	MEDIA_THUMB_FIELDS_JSO: "media_thumbnail_fields",
	MEDIA_THUMBNAIL_JSO: "media_thumbnail",
	MEDIA_OBJECT_JSO: "media_object",
	MEDIA_DOWNLOAD_JSO: "media_download",
	DS_TYPE_TXT: 0,
	DS_TYPE_DB: 1,
	DS_TYPE_ITEMS: 2,
	DS_TYPE_CATEGORIES: 3,
    DS_TYPE_CATEGORIZE: 4,
    DS_TYPE_CALENDAR: 5,
    DS_TYPE_GDATA_YOUTUBE: 6,
    DS_TYPE_FILESYSTEM: 7,
    passphrase: "Mauris malesuada pretium dui a vulputate",
	/*Load JavaScript by AJAX*/
	/**@deprecated */
	load: function(filePath,async,cache,callback,triggerEvent,className) {
		if(ncm.loadedModules[filePath]) return false;
		
		var m_process = function(){
			if(callback) {
	    		if($jq.isFunction(callback)){
	    			callback();
	    		}
	    	}
	    	if(triggerEvent){
	    		ncm.triggerEvent(ncm.customEvents["ncmScriptsLoaded"]+(className?className:""));
	    	}
		};
		
		var isLoaded = true;
		$jq.ajax({
			async: async?async:false,
			cache: cache?cache:false,
			type: "GET",
			url: filePath,
			dataType: "script",
			contentType: "text/javascript",
			error: function(request,msg,ex) {
			   isLoaded = false;		
	           ncm.showError(msg,ex,request);
	        },
	        complete: function(req,status){
	        	if(!req || req.status==200 || req.status==304) {
	        		m_process();
	        	}	
	        }
		});
		ncm.loadedModules[filePath] = isLoaded;
		return isLoaded;
	},
	/*Initialize data type properties*/
	initProperties: function(object,options) {
		var m_initProperties = function(json) {
			if(json.properties) {
				$jq.each(json.properties,function(i,val){
					object.properties[this.name]=this.value;
				});
			}
		};
		
		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;
		object.skin = options.skin?options.skin:null;
		try {
			object.pageId = options.pageId?options.pageId:null;
		} catch(mErr){}
		
		if(options.json && options.json.properties) {
			m_initProperties(options.json);
		} else {
			var params = ncm.concat("action=1&dataTypeName=",object.datatype?object.datatype:"","&langName=",object.language?object.language:"","&pageUrl=",object.pageUrl?object.pageUrl:"");
			$jq.ajax({
		    	async: false,
		        type: "GET",
		        url: object.jsp_utils,
		        data: params,
		        dataType: "json",
		        error: function(request,msg,ex) {
		           ncm.showError(msg,ex,request,object.inPreview,object.jsp_utils);
		        },
		        success: function(json) {
					m_initProperties(json);
		        }
		    });	
		}
	},
	/*Initialize component simple fields*/
	/**@deprecated */
	initSimpleFields: function(manager,object,json) {
		var m_initSimpleFields = function(json) {
			if(json.simplefields) {
				$jq.each(json.simplefields,function(i,val){
					object.simplefields[this.name]=this.value;
				});
			}
		};
		
		if(json && json.simplefields) {
			m_initSimpleFields(json);
		} else {
			var jspfile = manager.jsp_utils;
			if(jspfile==null)
				jspfile = manager.getProperty("utils_jsp");
			if(jspfile=="") jspfile= new String("components/components-utils.jsp");
			var params = ncm.concat("action=2&objId=",object.id,"&langName=",manager.language?manager.language:"","&pageUrl=",manager.pageUrl?manager.pageUrl:"","&channel=",manager.channel?manager.channel:"","&issueId=",manager.issueId?manager.issueId:"-1");
			$jq.ajax({
		    	async: false,
		       	type: "GET",
		       	url: jspfile,
		       	data: params,
		       	dataType: "json",
		       	error: function(request,msg,ex) {
		       		ncm.showError(msg,ex,request,manager.inPreview,manager.jsp_utils);
		       	},
		       	success: function(json) {
					m_initSimpleFields(json);
		       	}
		   	});
		}
	},
	/*Initialize events listeners*/
	/**@deprecated */
	initEventsListeners: function(manager,object) {
		if(window["jso"+object.id] && window["jso"+object.id]["RELATIONS"]) {
			$jq.each(window["jso"+object.id]["RELATIONS"],function(index,value){
				var m_id = "";
				var m_events = new Array();
				$jq.each(this.simplefields,function(in1,val1){
					if(this.name==="DATAID") {
						m_id = this.value;
					}
					if(this.name==="EVENTS") {
						m_events = this.value;
					}
				}); 
				if(m_id!=="" && m_events.length>0) {
					$jq.each(m_events,function(in2,val2){
						if(!object.eventsListeners[this]){
							object.eventsListeners[this] = new Array();	
						}
						object.eventsListeners[this].push(parseInt(m_id));
					});	
				}
			});
		} else {
			var jspfile = manager.jsp_utils;
			if(jspfile==null)
				jspfile = manager.getProperty("utils_jsp");
			if(jspfile=="") jspfile= new String("components/components-utils.jsp");
			var params = ncm.concat("action=8&objId=",object.id,"&langName=",manager.language?manager.language:"","&pageUrl=",manager.pageUrl?manager.pageUrl:"","&channel=",manager.channel?manager.channel:"","&issueId=",manager.issueId?manager.issueId:"-1");
			$jq.ajax({
		    	async: false,
		       	type: "GET",
		       	url: jspfile,
		       	data: params,
		       	dataType: "json",
		       	error: function(request,msg,ex) {
		       		ncm.showError(msg,ex,request,manager.inPreview,manager.jsp_utils);
		       	},
		       	success: function(json) {
					if(json!=null && json.length>0) {
						$jq.each(json,function(i,val){
							object.eventsListeners[this.event]=this.ids;
						});
					}
		       	}
		   	});
		}
	},
	/*Initialize events triggers (who affects me?)*/
	/**@deprecated */
	initEventsTriggers: function(manager,object) {
		if (ncm.customEventsTriggers && ncm.customEventsTriggers["" + object.id]) {
			object.triggersMap = ncm.customEventsTriggers["" + object.id];
			$jq.each(object.triggersMap, function(i, val){
				object.triggers["" + val] = "";
			});
		} else {
			var jspfile = manager.jsp_utils;
			if (jspfile == null) 
				jspfile = manager.getProperty("utils_jsp");
			if (jspfile == "") 
				jspfile = new String("components/components-utils.jsp");
			var params = ncm.concat("action=9&objId=", object.id, "&pageId=", manager.pageId ? manager.pageId : "-1");
			$jq.ajax({
				async: false,
				type: "GET",
				url: jspfile,
				data: params,
				dataType: "json",
				error: function(request, msg, ex){
					ncm.showError(msg, ex, request, manager.inPreview, manager.jsp_utils);
				},
				success: function(json){
					if (json != null && json.length > 0) {
						$jq.each(json, function(i, val){
							object.triggersMap[i] = ncm.intval(this);
							object.triggers["" + val] = "";
						});
					}
				}
			});
		}	
	},
	/*String concatenation utility function*/
	concat: function() {
		var s = [];
		$jq.each(arguments,function(index,val){
			s.push(val);
		});
		return s.join("");
	},
	/*Clone the JavaScript object*/
	clone: function(jsobject){
		return $jq.evalJSON($jq.compactJSON(jsobject));
	},
	/*Execute one method of given object*/
	exec: function(){
		var p = [];
		var obj = null;
		var m = "";
		$jq.each(arguments,function(index,val){
			switch(index){
				case 0:
					obj = this;
					break;
				case 1:
					m = val;
					break;
				default:
					p.push(this);
					break;
			}
		});
		if(!(obj && m && obj[m] && $jq.isFunction(obj[m]))) return;
		try {
			obj[m].apply(obj,p);
		} catch(mErr){}
	},
	/*Show error utility function*/
	showError: function(msg,ex,request,isPreview,jspfile) {
		var m = ncm.concat(msg,":\n");
	    if(ex) {
	    	m = ncm.concat(m,ex.message?ex.message+"\n":"",ex.fileName?"File: "+ex.fileName+"\n":"",ex.lineNumber?"Line: "+ex.lineNumber+"\n":"",ex.stack?"Stack: "+ex.stack+"\n":"");
	    }
		if(request!=null) {
			m = ncm.concat(m,request.status?request.status+"\n":"",request.statusText?request.statusText+"\n":"");
		}
		if(!jspfile) jspfile = new String("components/components-utils.jsp");
		$jq.post(jspfile,{pageUrl:window.location["href"],errMessage:m});
		if(isPreview) {
			alert(m);	
		}
	},
	/*Open pop-up window utility function*/
	openWindow: function(url) {
	    if ($jq.trim(url)!= "") {
			var w = open(url);
			if(w){
				w.focus();
			}
		}
	},
	/*Binding custom event*/ 
	bindCustomEvent: function(eventName,selector,object,methodName,staticParams) {
		if(!object) return;
		$jq(selector).bind(eventName,function(e,dataIds,params,triggerId){
			if($jq.inArray(object.id,dataIds)===-1) return false;
			var ignore = false;
			var initParams = params.split("&");
			if ($jq.inArray("ignoreParams="+object.id, initParams) > -1) {
                ignore = true;
			}
			var triggerIndex = $jq.inArray(triggerId,object.triggersMap);
			if(triggerIndex>-1) {
				object.triggers[""+object.triggersMap[triggerIndex]] = params;
			}
			var p = "";
			if (ignore) {
                p += "&" + params;
			} else {
				for(var i=0;i<object.triggersMap.length;i+=1) {
					var pp = object.triggers[""+object.triggersMap[i]];
					if($jq.trim(""+pp)!="") p+=($jq.trim(p)!=""?"&":"")+pp;				
				}
			}	
			if($jq.isFunction(object[methodName]))
				object[methodName](p,true,staticParams);
			return false;
		});
		ncm.addEventListener(eventName,selector);
	},
	
	bindCustomEventForSelector: function(eventName,selector,objectId,callback){
		if(!objectId) return;
		if(!ncm.customEventsTriggers[""+objectId]) return;
		$jq(selector).bind(eventName,function(jQueryEvent,params,triggerId,e){
			if($jq.inArray(triggerId,ncm.customEventsTriggers[""+objectId])==-1) return;
			if(callback){
				if($jq.isFunction(callback)){
					callback(params,e);
				}
			}
		});
		ncm.addEventListener(eventName,selector);
	},
	/*Triggering custom event*/
	triggerCustomEvent: function(eventName,object,params) {
		if(!object) return;
		if(object.eventsListeners[eventName]!=null){
			ncm.triggerEvent(eventName,[object.eventsListeners[eventName],params,object.id]);	
		}
	},
	/*Adding custom event listener*/
	addEventListener: function(eventName,selector) {
		if(ncm.eventListeners[eventName]) {
			if($jq.inArray(selector,ncm.eventListeners[eventName])===-1) {
				ncm.eventListeners[eventName].push(selector);
			}
		} else {
			ncm.eventListeners[eventName] = new Array(selector);
		}
	},
	/*Getting custom event listeners*/
	getEventListeners: function(eventName) {
		return ncm.eventListeners[eventName]?ncm.eventListeners[eventName]:null; 
	},
	/*Getting selector for custom event listeners*/
	getEventListenersSelector: function(eventName) {
		var arr = ncm.getEventListeners(eventName);
		return arr?arr.join(","):"";
	},
	/*Trigger event*/
	triggerEvent: function(eventName,arrParams) {
		var s = ncm.getEventListenersSelector(eventName);
		if(s!=="") {
			$jq(s).trigger(eventName,arrParams);
		}
	},
	/*Decode URL parameters utility function*/
	decodeParams: function(params) {
		return decodeURIComponent(params).replace(/\+/ig," ");
	}, 
	/*Getting parameters from URL*/
	getParametersFromUrl: function() {
		return ncm.getParametersFromUrlAsObject();
	},
	getParametersFromUrlAsString: function(separator) {
		var res = "";
		if(window["originalRequestString"] || window.location["search"]) {
			var qparams = window["originalRequestString"]?window["originalRequestString"]:window.location["search"].replace(/\?/,"");
			var initParams = qparams.split("&");
			if(initParams!=null && initParams.length>0) {
				$jq.each(initParams,function(i,val){
					var pos = this.indexOf("=");
					var arr = [];
					if(pos>0) {
						arr[0] = this.substr(0,pos);
						arr[1] = this.substr(pos+1);
					} else {
						arr[0] = this;
						arr[1] = "";
					}
					res = ncm.concat(res,i===0?"":separator,arr[0],separator,arr[1]);
				});
			}	
		}
		return res;
	},
	getParametersFromUrlAsObject: function() {
		var res = {};
		if(window["originalRequestString"] || window.location["search"]) {
			var qparams = window["originalRequestString"]?window["originalRequestString"]:window.location["search"].replace(/\?/,"");
			res = ncm.transformParamsStringToObject(qparams);
		}
		return res;
	},
	transformParamsStringToObject: function(strParams) {
		var res = {};
		var initParams = strParams.split("&");
		if(initParams!=null && initParams.length>0) {
			$jq.each(initParams,function(i,val){
				var pos = this.indexOf("=");
				var arr = [];
				if(pos>0) {
					arr[0] = ncm.decodeParams(this.substr(0,pos));
					arr[1] = ncm.decodeParams(this.substr(pos+1));
				} else {
					arr[0] = ncm.decodeParams(this);
					arr[1] = "";
				}
				if(!res[arr[0]]){
					res[arr[0]] = arr[1];
				} else {
					if(res[arr[0]] instanceof Array){
						res[arr[0]].push(arr[1]);
					} else {
						var m_arr = new Array();
						m_arr.push(res[arr[0]]);
						m_arr.push(arr[1]);
						res[arr[0]] = m_arr;
					}
				}	
			});
		}
		return res;
	},
	getParametersNamesFromString: function(strParams){
		var res = [];
		var initParams = strParams.split("&");
		if(initParams!=null && initParams.length>0) {
			$jq.each(initParams,function(i,val){
				var pos = this.indexOf("=");
				var p = null;
				if(pos>0) {
					p = ncm.decodeParams(this.substr(0,pos));
				} else {
					p = ncm.decodeParams(this);
				}
				if(p) res.push(p);
			});
		}
		return res;
	},
	/*Google Analytics utility function*/
	/**@deprecated*/
	gatcLinks: function(selector,pageName) {
		$jq("a",selector).click(function(){
			if(typeof(pageTracker)==="undefined") return;
			if(!pageTracker) return;
			var virtPath = "/"+pageName;
			var href = this.getAttribute("href");
			if(!href) 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);
		});
	},
	gatcLinkInfo: function(domElem, pageName){
		if(!domElem) return null;
		if(!domElem.tagName) return null;
		if(domElem.tagName.toUpperCase()!=="A") return null;
		var jqA = $jq(domElem);
		if(jqA.attr("rel")==="nofollow") return null;
		var href = jqA.attr("href");
		if(!href) return null;
		if(href==="" || href==="#" || href==="noscript.html") return null;
		var title = jqA.attr("title")?jqA.attr("title"):"no title";
		title = ncm.concat(pageName,": ",title);
		href = href.split("?")[0];
		var filePattern = /\.(pdf|doc|rtf|zip|rar|xls|docx|ppt|pps|xlsx)$/i;
		var imagePattern = /\.(jpg|gif|png|jpeg)$/i;
		var extLinkPattern = new RegExp("^(http|https):\/\/","i");
		var res = [];
		if(filePattern.test(href)){
			res.push("1");
			res.push(href.substr(href.lastIndexOf(".")+1));
			res.push(href);
		} else if(imagePattern.test(href)){
			res.push("2");
			res.push(title);
			res.push(href);
		} else if(extLinkPattern.test(href)){
			res.push("3");
			res.push(title);
			res.push(href);
		} else {
			res.push("-1");
			res.push(title);
			res.push(href);
		}
		return res;
	},
	/*Functions for cookies*/
	createCookie: function(name,value,days) {
		var expires = "";
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			expires = ncm.concat("; expires=",date.toGMTString());
		}
		document.cookie = ncm.concat(name,"=",value,expires,"; path=/");
	},
	readCookie: function (name) {
		var res = null;
		var nameEQ = ncm.concat(name,"=");
		var ca = document.cookie.split(';');
		$jq.each(ca,function(i,val){
			val = $jq.trim(val);
			if (val.indexOf(nameEQ)==0) {
				res = val.substring(nameEQ.length,val.length);
				return false;
			}	
		});
		return res;
	},
	eraseCookie: function(name) {
		ncm.createCookie(name,"",-1);
	},
	/*Dialogs (based on jQuery dialog plug-in)*/
	showDialog: function(objId,message,append) {
		var jqD = $jq(ncm.concat("div#dialog",objId));
		if(!ncm.loadedDialogs[""+objId]) {
			ncm.loadedDialogs[""+objId] = jqD.html(message).dialog().parent();	
		} else {
			if(append) {
				jqD.append(message);
			} else {
				jqD.html(message);	
			}
		}
		if(ncm.loadedDialogs[""+objId].length>0) {
			var x = ($jq(window).width()/2) - (ncm.loadedDialogs[""+objId].width()/2);
			var y = ncm.loadedDialogs[""+objId].offset().top;
			ncm.loadedDialogs[""+objId].css({top:y+"px",left:x+"px"}).show();			
		}
	},
	hideDialog: function(objId) {
		$jq(ncm.concat("div#dialog",objId)).html("");
		if(ncm.loadedDialogs[""+objId]) {
			ncm.loadedDialogs[""+objId].hide();
		}
	},
	showFixedDialog: function(selector,width) {
		var jqD = $jq(selector);
		if(!ncm.loadedDialogs[selector]) {
			ncm.loadedDialogs[selector] = jqD.dialog().parent();	
		} 
		if(ncm.loadedDialogs[selector].length>0) {
			var x = ($jq(window).width()/2) - (ncm.loadedDialogs[selector].width()/2);
			var y = ncm.loadedDialogs[selector].offset().top;
			var m_css = {top:y+"px",left:x+"px"};
			if(width){
				$jq.extend(m_css,{width:width+"px"});
			}
			ncm.loadedDialogs[selector].css(m_css).show();			
		}
	},
	hideFixedDialog: function(selector) {
		if(ncm.loadedDialogs[selector]) {
			ncm.loadedDialogs[selector].hide();
		}
	},
	/*Integer value utility function*/
	intval: function(v) {
		var re = new RegExp("^0[1-9]");
        if(re.test(v) && v["substr"]){
            v = v.substr(1);
        }
		v = parseInt(v);
	    return isNaN(v) ? 0 : v;
	},
	/*Getting random banner utility function*/
	/**@deprecated*/
	getRandomBanner: function(objectId,fieldName,pageUrl,jsp,selector) {
		var params = {
				objectId: objectId,
				objectField: fieldName,
				pageUrl: pageUrl
		};
		$jq.getJSON(jsp,params,function(json){
			if(json && json.image) {
				$jq(selector).css("background-image",ncm.concat("url","(",json.image,")"));				
			}
		});
	},
	/*Check the query detail step*/
	isDetailsStep: function() {
		var p = window["originalRequestString"]?window["originalRequestString"]:window.location["search"].replace(/\?/,"");
		return p.indexOf("ID=")!==-1 || p.indexOf("PRDID=")!==-1 || p.indexOf("PROID=")!==-1;
	},
	/*Component constructor parameters*/
	/**@deprecated*/
	getComponentConstructorParams: function(object,manager,withjso) {
		var res = ncm.concat("objId=",object.id,"&inPreview=",manager.inPreview?manager.inPreview:false,"&language=",manager.language?manager.language:"","&pageUrl=",manager.pageUrl?manager.pageUrl:"","&channel=",manager.channel?manager.channel:"","&issueId=",manager.issueId?manager.issueId:"","&className=",manager.name?manager.name:"","&pageId=",manager.pageId?manager.pageId:"0");
		if(withjso) {
			if(window["jso"+object.id]) {
				res = ncm.concat(res,"&jso=",$jq.compactJSON(window["jso"+object.id]));
			}
		}
		return res;
	},
	/**@deprecated*/
	getComponentConstructorParamsObject: function(object,manager,withjso) {
		var res = {
			objId : object.id,
			inPreview: manager.inPreview?manager.inPreview:false,
			language: manager.language?manager.language:"",
			pageUrl: manager.pageUrl?manager.pageUrl:"",
			channel: manager.channel?manager.channel:"",
			issueId: manager.issueId?manager.issueId:"",
			className: manager.name?manager.name:"",
			pageId: manager.pageId?manager.pageId:"0"       
		};
		if(withjso) {
			if(window["jso"+object.id]) {
				$jq.extend(res,{jso:$jq.compactJSON(window["jso"+object.id])});
			}
		}
		return res;
	},
	/*Serialize form as an object*/
	serializeToObject: function(selector) {
		var sa =  $jq(selector).serializeArray();
		return ncm.serializeJSONToObject(sa)
	},
	serializeToString: function(selector){
		var sa =  $jq(selector).serializeArray();
		var res = "";
		$jq.each(sa,function(i,p){
			if(p.value) {
				if(p.value instanceof Array){
					$jq.each(p.value,function(k,val){
						if(val){
							res = ncm.concat(res,res!=""?"&":"",p.name,"=",val.replace(/\&nbsp;/ig," "));
						}	
					});
				} else {
					res = ncm.concat(res,res!=""?"&":"",p.name,"=",p.value.replace(/\&nbsp;/ig," "));
				}	
			}
		});
		return res;
	},
	/*Serialize JSON Array to object*/
	serializeJSONToObject: function(json,withEmptyVals){
		var sp = {};
		$jq.each(json,function(i,p){
			if(p.value || withEmptyVals) {
				sp[p.name] = p.value?p.value:"";	
			}
		});
		return sp;
	},
	serializeDOMElement: function(elemId){
		var res = "";
		if(elemId.charAt(0)==="#"){
			elemId = elemId.substr(1);
		}
		var form = document.getElementById(elemId);
		if(form){
			if(form.tagName==="FORM" || form.tagName==="form"){
				res = $jq(form).serialize();
			} else {
				$jq("body").append(ncm.concat("<form id=\"tmp-",elemId,"\" style=\"visibility:hidden;\"><\/form>"));
				var jqForm = $jq(ncm.concat("#tmp-",elemId));
				jqForm.html($jq(form).clone());
				res = jqForm.serialize();
				jqForm.remove();
			}	
		}
		return res;
	},
	/*Assign events for pager*/
	setPagerEvents: function(object,selector){
		if(!object) return;
		if(!selector) return;
		/*Initialize events for items per page*/
		$jq("div.pager select.list-items-per-page",selector).removeAttr("disabled").change(function(){
			ncm.exec(object,"refresh",this.value);
		});
		/*Initialize events for go to page*/
		$jq("div.pager select.list-go-to-page",selector).removeAttr("disabled").change(function(){
			ncm.exec(object,"gotoPage",ncm.intval(this.value),selector);
		});
		/*Initialize events for pager*/
		var jqPgLis = $jq("ul.list-pages li",selector);
		var totalPg = ncm.intval($jq(ncm.concat("#autopager-total-",object.id)).val());
		if(totalPg===0) totalPg = jqPgLis.length-2;
		var currPg = object.getRequestParam(ncm.concat(object.getPrefix(),"page"));
		if(currPg==="") currPg="0";
		jqPgLis.each(function(index){
			if(index===0){
				$jq("a",this).linkEvents(function(){
					ncm.exec(object,"gotoPage",parseInt(currPg)>0?parseInt(currPg)-1:0,selector);
					return false;
				});
			} else if(index===jqPgLis.length-1){
				$jq("a",this).linkEvents(function(){
					ncm.exec(object,"gotoPage",parseInt(currPg)<totalPg-1?parseInt(currPg)+1:totalPg-1,selector);
					return false;
				});
			} else {
				$jq("a",this).linkEvents(function(){
					var sgg = $jq(this).html();
                    var pgg = -1;
                    if(sgg==="..."){
                        if(index===3 || index===4){
                            pgg = ncm.intval($jq(jqPgLis.get(index+1)).find("a").html())-2;
                        }
                        if(index===6 || index===8){
                            pgg = ncm.intval($jq(jqPgLis.get(index-1)).find("a").html())
                        }
                    } else {
                        pgg = ncm.intval(sgg)-1;
                    }
					if(pgg===-1) pgg=index-1;
					if(pgg!==parseInt(currPg)){
						ncm.exec(object,"gotoPage",pgg,selector);
					}	
					return false;
				});
			}
		});
	},
	saveSessionStateInHistory: function(){
		if($jq.browser.msie || $jq.browser.mozilla || $jq.browser.opera){
			if(ncm["registeredInstances"] && window["dhtmlHistory"]){
				var objStates = [];
				$jq.each(ncm["registeredInstances"],function(ind,val){
					if(this["id"] && this["object"] && this["object"]["requestParams"]){
						var reqParams = ncm.clone(this["object"]["requestParams"]);
						reqParams.push({"name":"resetParams","value":"true"});
						objStates.push({id:this["id"],params:reqParams});
					}
				});
				var objStatesString = $jq.toJSON(objStates);
				var objHash = Crypto.MD5(objStatesString);
				var objCrypt = Crypto.AES.encrypt(objStatesString,ncm.passphrase);
				window["dhtmlHistory"].add(objHash,objCrypt);
			}
		}	
	},
	restoreSavedSessionState: function(hash,crypt){
		if(hash && crypt){
			var objStatesString = Crypto.AES.decrypt(crypt,ncm.passphrase);
			if(objStatesString){
				var objStates = $jq.evalJSON(objStatesString);
				if(objStates && $jq.isArray(objStates)){
					$jq.each(objStates,function(ind,val){
						var obj = ncm.getInstance(this["id"]);
						if(obj && obj["restoreState"] && $jq.isFunction(obj["restoreState"]) && this["params"]){
							obj["restoreState"]($jq.param(ncm.serializeJSONToObject(this["params"])));
						}
					});
				}
			}
		} 
	},
	getInstance: function(objId){
		var res = null;
		if(ncm["registeredInstances"]){
			$jq.each(ncm["registeredInstances"],function(ind,val){
				if(this["id"]===objId){
					res = this["object"];
					return false;
				}
			});
		}
		return res;
	},
	/*Date utilities*/
	dateUtil: {
		checkDateCorrect: function(dd,mm,yyyy) {
			var day=0,month=0,year=0,res=true;
			try {
				year = ncm.intval(yyyy);
				month = ncm.intval(mm.charAt(0)==="0"?mm.substr(1):mm);
				day = ncm.intval(dd.charAt(0)==="0"?dd.substr(1):dd);		
			} catch(mErr) {
				res = false;
			}		 
			if(res) {
				if ((day<1 || day>31) || (month<1 || month>12)  || !year)
					res = false;
				if (day > ncm.dateUtil.getMaxDays(month,year))
					res = false;
			}
			return res;
		},
		getMaxDays: function(month,year) {
			var monthdays = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
			if(month==2) {
		    	if(ncm.dateUtil.checkLeapYear(year)){
		        	monthdays[1]=29;
		    	} else {
		        	monthdays[1]=28;
		    	}	
			}
			if(month<1 || month>12){
		    	return -1;
			} else {
		    	return monthdays[month-1];
			}	
		},
		checkLeapYear: function (yyyy) {
			if(yyyy%4===0 && (yyyy%100!==0 || yyyy%400===0)){ 
	   			return true;
			} else {
				return false;
			}	
		},
		checkLinkedDays: function (fieldId) {
			var elem = document.getElementById(fieldId);
			var elemD = document.getElementById(fieldId+"_DAY");
			var elemM = document.getElementById(fieldId+"_MONTH");
			var elemY = document.getElementById(fieldId+"_YEAR");
			if(elemD!=null && elemM!=null && elemY!=null) {
				if($jq(elemD).val()!="" && $jq(elemM).val()!="" && $jq(elemY).val().length==4) {
					var daysInMonth = 32 - new Date($jq(elemY).val(),$jq(elemM).val()-1,32).getDate(); 
	        		$jq("option",elemD).attr('disabled',''); 
	        		$jq("option:gt("+daysInMonth+")",elemD).attr('disabled', 'disabled'); 
	    			if ($jq(elemD).val() > daysInMonth) { 
	        			$jq(elemD).val(daysInMonth); 
	    			}
					$jq(elem).val($jq(elemD).val()+"/"+$jq(elemM).val()+"/"+$jq(elemY).val());	
				} else {
					$jq(elem).val("");
				}
			}
		},
		formDateValue: function(frm,fldname) {
	   		var dd="",mm="",yyyy="",res="",date = new Date();
			frm.find(":input[name='"+fldname+"_DAY']").each(function(){
				dd=$jq(this).val();
			}).end().find(":input[name='"+fldname+"_MONTH']").each(function(){
				mm=$jq(this).val();
			}).end().find(":input[name='"+fldname+"_YEAR']").each(function(){
				yyyy=$jq(this).val();
			});
			if(dd==="" && mm==="" && yyyy==="") return res;
	   		if(mm && !yyyy) {
	       		yyyy = ""+date.getFullYear();
	   		}
	   		if(!mm && yyyy) {
	       		mm = (date.getMonth()<9?"0":"")+(date.getMonth()+1);
	   		}
			if(ncm.dateUtil.checkDateCorrect(dd,mm,yyyy)) {
	   			res=dd+"/"+mm+"/"+yyyy;
	   		} else {
				res = "#error#";
			}
	   		return res;
		}
	},
	
	getPublishPath: function(){
		var res = "";
		if(window["page_options"] && window["page_options"]["publishPath"]){
			res = window["page_options"]["publishPath"];
			res = res.substr(0,res.length-1);
		}
		return res;
	}
};

function NcmAbstractComponent() {
}

NcmAbstractComponent.prototype = {
	initialize: function(objectId,json,jsonData) {
		this.id = objectId;
		/*Getting component simple fields values*/
		this.initSimpleFields(json);
		/*Getting component complex fields values*/
		this.initComplexFields(json);
		/*Initialize events listeners*/
		if(this["eventsListeners"]){
			this.initEventsListeners();
		}	
		/*Initialize events triggers*/
		if(this["triggers"] && this["triggersMap"]){
			this.initEventsTriggers();
		}	
		/*Initialize component*/
		this.initComponent(jsonData);
	},
	
	initComponent: function(jsonData) {
	},
	
	/*Initialize component simple fields*/
	initSimpleFields: function(json) {
		var Me = this;
		var m_initSimpleFields = function(json) {
			if(json["simplefields"]) {
				$jq.each(json["simplefields"],function(i,val){
					Me.simplefields[this.name]=this.value;
				});
			}
		};
		
		if(json && json["simplefields"]) {
			m_initSimpleFields(json);
		} else {
			var jspfile = this.constructor.jsp_utils;
			if(!jspfile) jspfile= new String("components/components-utils.jsp");
			var params = ncm.concat("action=2&objId=",this.id,"&langName=",this.constructor.language?this.constructor.language:"","&pageUrl=",this.constructor.pageUrl?this.constructor.pageUrl:"","&channel=",this.constructor.channel?this.constructor.channel:"","&issueId=",this.constructor.issueId?this.constructor.issueId:"-1");
			$jq.ajax({
		    	async: false,
		       	type: "GET",
		       	url: jspfile,
		       	data: params,
		       	dataType: "json",
		       	error: function(request,msg,ex) {
		       		ncm.showError(msg,ex,request,Me.constructor.inPreview,Me.constructor.jsp_utils);
		       	},
		       	success: function(json) {
					m_initSimpleFields(json);
		       	}
		   	});
		}
	},
	
	/*Initialize component complex fields*/
	initComplexFields: function(json) {
		var Me = this;
		try {
			if(json && json["complexfields"]) {
				if(json["complexfields"]) {
					$jq.each(json["complexfields"],function(i,val1){
						var fieldVals = [];
						$jq.each(this.values,function(j,val2){
							var fieldMap = {};
							if (this.simplefields) {
								$jq.each(this.simplefields,function(k,val3){
									fieldMap[this.name]=this.value;
								});
							}
							fieldVals.push(fieldMap);
						});
						Me.complexfields[this.name]=fieldVals.length>1?fieldVals:(fieldVals.length===1?fieldVals[0]:{});
					});
				}
			}
		} catch (Err) {}
	},
	
	/*Initialize events listeners*/
	initEventsListeners: function() {
		var Me = this;
		if(window["jso"+this.id] && window["jso"+this.id]["RELATIONS"]) {
			$jq.each(window["jso"+this.id]["RELATIONS"],function(index,value){
				var m_id = "";
				var m_events = [];
				$jq.each(this.simplefields,function(in1,val1){
					if(this.name==="DATAID") {
						m_id = this.value;
					}
					if(this.name==="EVENTS") {
						m_events = this.value;
					}
				}); 
				if(m_id!=="" && m_events.length>0) {
					$jq.each(m_events,function(in2,val2){
						if(!Me.eventsListeners[this]){
							Me.eventsListeners[this] = [];	
						}
						if(!Me.eventsListenersAdv[this]){
							Me.eventsListenersAdv[this] = {};	
						}
						Me.eventsListeners[this].push(parseInt(m_id));
						Me.eventsListenersAdv[this][parseInt(m_id)] = value;
					});	
				}
			});
		} else {
			var jspfile = this.constructor.jsp_utils;
			if(!jspfile) jspfile= new String("components/components-utils.jsp");
			var params = ncm.concat("action=8&objId=",this.id,"&langName=",this.constructor.language?this.constructor.language:"","&pageUrl=",this.constructor.pageUrl?this.constructor.pageUrl:"","&channel=",this.constructor.channel?this.constructor.channel:"","&issueId=",this.constructor.issueId?this.constructor.issueId:"-1");
			$jq.ajax({
		    	async: false,
		       	type: "GET",
		       	url: jspfile,
		       	data: params,
		       	dataType: "json",
		       	error: function(request,msg,ex) {
		       		ncm.showError(msg,ex,request,Me.constructor.inPreview,Me.constructor.jsp_utils);
		       	},
		       	success: function(json) {
					if(json!=null && json.length>0) {
						$jq.each(json,function(i,val){
							Me.eventsListeners[this.event]=this.ids;
						});
					}
		       	}
		   	});
		}
	},
	
	/*Initialize events triggers (who affects me?)*/
	initEventsTriggers: function() {
		var Me = this;
		if(ncm.customEventsTriggers){
			if(ncm.customEventsTriggers[""+this.id]){
				this.triggersMap = ncm.customEventsTriggers[""+this.id];
				$jq.each(this.triggersMap,function(i,val){
					Me.triggers[""+val]="";
				});
			}
		} else {
			var jspfile = this.constructor.jsp_utils;
			if(!jspfile) jspfile= new String("components/components-utils.jsp");
			var params = ncm.concat("action=9&objId=",this.id,"&pageId=",this.constructor.pageId?this.constructor.pageId:"-1");
			$jq.ajax({
		    	async: false,
		       	type: "GET",
		       	url: jspfile,
		       	data: params,
		       	dataType: "json",
		       	error: function(request,msg,ex) {
		       		ncm.showError(msg,ex,request,Me.constructor.inPreview,Me.constructor.jsp_utils);
		       	},
		       	success: function(json) {
					if(json!=null && json.length>0) {
						$jq.each(json,function(i,val){
							Me.triggersMap[i] = ncm.intval(this);
							Me.triggers[""+val]="";
						});
					}
		       	}
		   	});
		}	
	},
	
	/*Getting request parameter*/
	getRequestParam: function(pname){
		var res = "";
		if(this["requestParams"]){
			$jq.each(this["requestParams"],function(index,val){
				if(this.name===pname){
					res = this.value;
					return false;
				}
			});
		}
		return res;
	},
	
	/*Getting names of all request parameters*/
	getRequestParamsNames: function(){
		var res = [];
		if(this["requestParams"]){
			$jq.each(this["requestParams"],function(index,val){
				res.push(this.name);
			});
		}
		return res;
	},
	
	/*Setting request parameter*/
	setRequestParam: function(pname,pvalue,append){
		if(!this["requestParams"]){
			this["requestParams"] = [];
		}
		var pfound = false;
		$jq.each(this["requestParams"],function(index,val){
			if(this.name===pname){
				/* check some special parameters */
				if (pname.indexOf("CATID") != -1) {
					append = false;
				}
				if(!append){
					this.value = pvalue;
				} else {
					var m_vals = this.value;
					if(!(m_vals instanceof Array)){
						this.value = new Array();
						this.value.push(m_vals);
						this.value.push(pvalue);
					} else {
						this.value.push(pvalue);
					}
				}	
				pfound = true;
				return false;
			}
		});
		if(!pfound){
			this["requestParams"].push({"name":pname,"value":pvalue});
		}
	},
	
	updateRequestParams: function(strParams) {
		var Me = this;
		var initParams = strParams.split("&");
		if ($jq.inArray("resetParams=1", initParams)!==-1) {
			this["requestParams"] = [];
		}
		if (initParams && initParams.length>0) {
			var m_cleaned = [];
			$jq.each(initParams,function(i,val){
				var pos = this.indexOf("=");
				var arr = [];
				if (pos > 0) {
					arr[0] = ncm.decodeParams(this.substr(0,pos));
					arr[1] = ncm.decodeParams(this.substr(pos+1));
				} else {
					arr[0] = ncm.decodeParams(this);
					arr[1] = "";
				}
				if ($jq.inArray(arr[0], m_cleaned) === -1) {					
					Me.setRequestParam(arr[0],arr[1],false);
					m_cleaned.push(arr[0]);
				} else {
					/* if the parameter has been already inserted append a new one */
					Me.setRequestParam(arr[0],arr[1],true);
				}
			});
		}
		this.setRequestParam("jsdisabled","0",false);
	},
	
	/*Initialize request parameters from form element */
	initializeRequestParams: function(formId){
		if(!formId) formId=ncm.concat("initial-request-",this.id);
		var strParams = ncm.serializeDOMElement(formId);
		if(strParams){
			this.updateRequestParams(strParams);
		}	
	},
	
	/*Getting data source prefix*/
	getPrefix: function(dsField) {
		var datasourceField = dsField?dsField:"DATASOURCE";
		return this.simplefields[datasourceField]?ncm.concat("DS",this.simplefields[datasourceField],"."):"";
	},
	
	/*Getting data source prefixes for all listeners*/
	getListenersPrefixes: function(eventName){
		var res = [];
		if(this["eventsListeners"]){
			if(this["eventsListeners"][eventName]){
				if(this["eventsListeners"][eventName].length>0){
					$jq.each(this["eventsListeners"][eventName],function(ind,val){
						if(window[ncm.concat("jso",val)]){
							if(window[ncm.concat("jso",val)][ncm.SIMPLE_FIELDS_JSO]){
								$jq.each(window[ncm.concat("jso",val)][ncm.SIMPLE_FIELDS_JSO],function(indj,valj){
									if(this.name==="DATASOURCE"){
										var m_prefix = ncm.concat("DS",this.value,".");
										if($jq.inArray(m_prefix,res)===-1){
											res.push(m_prefix);
										}
										return false;
									}
								});
							}
						}
					});
				}
			}
		}
		return res;
	},
	
	getAjaxProgress: function(){
		return ncm.concat("<","div class=\"ajax-progress\"",">","<","img src=\"",this.constructor.getProperty("img_ajax_progress"),"\" title=\"\" alt=\"\" \/",">",this.constructor.getProperty("lang_loading"),"<","\/div",">");
	},
	
	processKeyParams: function(m_params) {
        var result = "";
        var jspfile = this.constructor.getProperty("jsp_detailrelations");
        if (!jspfile)
              jspfile = "components/queries/processobjectkeyrelations.jsp";
        var keyParams = m_params.split("&");
        var keyParamsJSON = [];
        $jq.each(keyParams, function(i, param) {
              if($jq.trim(param)!==""){
                  keyParamsJSON.push(param);
              }
        });
        var params = ncm.concat("keyParam=",$jq.toJSON(keyParamsJSON),"&dsId=",this.simplefields["DATASOURCE"],"&language=",this.constructor.language,"&inPreview=",this.constructor.inPreview,"&eventsListeners=",$jq.toJSON(this.eventsListeners),"&eventsListenersAdv=",$jq.toJSON(this.eventsListenersAdv));
        var included = [];
        $jq.ajax({
              async:false,
              type:"POST",
              dataType:"json",
              url:jspfile,
              data:params,
              success:function(res) {
                    if (res != null && res.params != null) {
                          for (var i = 0; i < res.params.length; i+=1) {
                                if (res.params[i] != null && res.params[i].keys != null) {
                                      var prefix = res.params[i].prefix;
                                      for (var j = 0; j < res.params[i].keys.length; j+=1) {
                                            var key = res.params[i].keys[j].key;
                                            var value = res.params[i].keys[j].value;
                                            var onepair = ncm.concat(prefix,key,"=",value);
                                            if($jq.inArray(onepair,included)===-1){
                                                  result = ncm.concat(result,"&",onepair);
                                                  included.push(onepair);
                                            }      
                                      }
                                }
                          }
                    }                              
              }
        });
        return "resetParams=1"+result;
	},
	
	refresh: function(itpp) {
		this.setRequestParam(ncm.concat(this.getPrefix(),"page"),"0");
		this.setRequestParam(ncm.concat(this.getPrefix(),"itpp"),ncm.concat("",itpp));
		ncm.exec(this,"loadData");
	},
	
	gotoPage: function(ppage,selector){
		if(ppage<0) return;
		var totalPg = ncm.intval($jq(ncm.concat("#autopager-total-",this.id)).val());
		if(totalPg===0 && this["totalPages"]) totalPg = ncm.intval(this["totalPages"]);
		if(totalPg===0) totalPg=$jq("ul.list-pages li",selector).length-2;
		if(ppage>totalPg-1) return;
		this.setRequestParam(ncm.concat(this.getPrefix(),"page"),ncm.concat("",ppage));
		ncm.exec(this,"loadData");
	},
	
	restoreState: function(params){
		if(this["loadData"] && $jq.isFunction(this["loadData"])){
			this.updateRequestParams(params);
			this.loadData();
		}	
	},
	
	getHiddenInputs: function(aExclude){
		var res = "";
		if(this["requestParams"]){
			$jq.each(this["requestParams"],function(i,p){
				if(p.value && $jq.inArray(p.name,aExclude?aExclude:[])===-1) {
					if(p.value instanceof Array){
						$jq.each(p.value,function(j,v){
							res = ncm.concat(res,"<","input type=\"hidden\" name=\"",p.name,"\" value=\"",v,"\""," \/",">\n");
						});
					} else {
						res = ncm.concat(res,"<","input type=\"hidden\" name=\"",p.name,"\" value=\"",p.value,"\""," \/",">\n");
					}
				}
			});
		}
		return res;
	},
	
	getComplexFieldArray: function(fieldName){
		var res = [];
		var jso = window[ncm.concat("jso",this.id)]; 
		if(jso && jso[ncm.COMPLEX_FIELDS_JSO] && jso[ncm.COMPLEX_FIELDS_JSO].length>0){
			$jq.each(jso[ncm.COMPLEX_FIELDS_JSO],function(ind,val){
				if(this.name===fieldName){
					res = this.values;
				}
			});
		}
		return res;
	},
	
	getComplexField: function(fieldName, pos){
		if(!pos) pos=0;
		var res = null;
		var arr = this.getComplexFieldArray(fieldName);
		if(arr.length>0 && pos>=0 && pos<arr.length){
			res = arr[pos];
		}
		return res;
	},
	
	doFormSubmit: function(formInputs,formAction,formMethod,formTarget){
		var formElem = document.getElementById(ncm.concat("tmp-form-submit-",this.id));
		if(!formElem){
			$jq("body").append(ncm.concat("<form id=\"tmp-form-submit-",this.id,"\" style=\"visibility:hidden;\"><\/form>"));
		}	
		var jqForm = $jq(ncm.concat("#tmp-form-submit-",this.id));
		jqForm.attr({
			action: formAction?formAction:"",
			method: formMethod?formMethod:"post",
			target: formTarget?formTarget:"_top"		
		});
		jqForm.html(formInputs);
		jqForm.submit();
		jqForm.remove();
	}
};

/*Definitions for generic events*/
$jq(function(){
	/*Change from short text to full text*/
	$jq("div.fmt-short-value a").liveLinkEvents(function(){
		$jq(this).parent("div.fmt-short-value").hide().next("div.fmt-full-value").show();
	});
});
/*
 * Crypto-JS v2.0.0
 * http://code.google.com/p/crypto-js/
 * Copyright (c) 2009, Jeff Mott. All rights reserved.
 * http://code.google.com/p/crypto-js/wiki/License
 */
(function(){var c="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var d=window.Crypto={};var a=d.util={rotl:function(h,g){return(h<<g)|(h>>>(32-g))},rotr:function(h,g){return(h<<(32-g))|(h>>>g)},endian:function(h){if(h.constructor==Number){return a.rotl(h,8)&16711935|a.rotl(h,24)&4278255360}for(var g=0;g<h.length;g++){h[g]=a.endian(h[g])}return h},randomBytes:function(h){for(var g=[];h>0;h--){g.push(Math.floor(Math.random()*256))}return g},bytesToWords:function(h){for(var k=[],j=0,g=0;j<h.length;j++,g+=8){k[g>>>5]|=h[j]<<(24-g%32)}return k},wordsToBytes:function(i){for(var h=[],g=0;g<i.length*32;g+=8){h.push((i[g>>>5]>>>(24-g%32))&255)}return h},bytesToHex:function(g){for(var j=[],h=0;h<g.length;h++){j.push((g[h]>>>4).toString(16));j.push((g[h]&15).toString(16))}return j.join("")},hexToBytes:function(h){for(var g=[],i=0;i<h.length;i+=2){g.push(parseInt(h.substr(i,2),16))}return g},bytesToBase64:function(h){if(typeof btoa=="function"){return btoa(e.bytesToString(h))}for(var g=[],l=0;l<h.length;l+=3){var m=(h[l]<<16)|(h[l+1]<<8)|h[l+2];for(var k=0;k<4;k++){if(l*8+k*6<=h.length*8){g.push(c.charAt((m>>>6*(3-k))&63))}else{g.push("=")}}}return g.join("")},base64ToBytes:function(h){if(typeof atob=="function"){return e.stringToBytes(atob(h))}h=h.replace(/[^A-Z0-9+\/]/ig,"");for(var g=[],j=0,k=0;j<h.length;k=++j%4){if(k==0){continue}g.push(((c.indexOf(h.charAt(j-1))&(Math.pow(2,-2*k+8)-1))<<(k*2))|(c.indexOf(h.charAt(j))>>>(6-k*2)))}return g}};d.mode={};var b=d.charenc={};var f=b.UTF8={stringToBytes:function(g){return e.stringToBytes(unescape(encodeURIComponent(g)))},bytesToString:function(g){return decodeURIComponent(escape(e.bytesToString(g)))}};var e=b.Binary={stringToBytes:function(j){for(var g=[],h=0;h<j.length;h++){g.push(j.charCodeAt(h))}return g},bytesToString:function(g){for(var j=[],h=0;h<g.length;h++){j.push(String.fromCharCode(g[h]))}return j.join("")}}})();(function(){var f=Crypto,a=f.util,b=f.charenc,e=b.UTF8,d=b.Binary;var c=f.SHA1=function(i,g){var h=a.wordsToBytes(c._sha1(i));return g&&g.asBytes?h:g&&g.asString?d.bytesToString(h):a.bytesToHex(h)};c._sha1=function(o){if(o.constructor==String){o=e.stringToBytes(o)}var v=a.bytesToWords(o),x=o.length*8,p=[],r=1732584193,q=-271733879,k=-1732584194,h=271733878,g=-1009589776;v[x>>5]|=128<<(24-x%32);v[((x+64>>>9)<<4)+15]=x;for(var z=0;z<v.length;z+=16){var E=r,D=q,C=k,B=h,A=g;for(var y=0;y<80;y++){if(y<16){p[y]=v[z+y]}else{var u=p[y-3]^p[y-8]^p[y-14]^p[y-16];p[y]=(u<<1)|(u>>>31)}var s=((r<<5)|(r>>>27))+g+(p[y]>>>0)+(y<20?(q&k|~q&h)+1518500249:y<40?(q^k^h)+1859775393:y<60?(q&k|q&h|k&h)-1894007588:(q^k^h)-899497514);g=h;h=k;k=(q<<30)|(q>>>2);q=r;r=s}r+=E;q+=D;k+=C;h+=B;g+=A}return[r,q,k,h,g]};c._blocksize=16})();(function(){var e=Crypto,a=e.util,b=e.charenc,d=b.UTF8,c=b.Binary;e.HMAC=function(l,m,k,h){if(m.constructor==String){m=d.stringToBytes(m)}if(k.constructor==String){k=d.stringToBytes(k)}if(k.length>l._blocksize*4){k=l(k,{asBytes:true})}var g=k.slice(0),n=k.slice(0);for(var j=0;j<l._blocksize*4;j++){g[j]^=92;n[j]^=54}var f=l(g.concat(l(n.concat(m),{asBytes:true})),{asBytes:true});return h&&h.asBytes?f:h&&h.asString?c.bytesToString(f):a.bytesToHex(f)}})();(function(){var e=Crypto,a=e.util,b=e.charenc,d=b.UTF8,c=b.Binary;e.PBKDF2=function(q,o,f,t){if(q.constructor==String){q=d.stringToBytes(q)}if(o.constructor==String){o=d.stringToBytes(o)}var s=t&&t.hasher||e.SHA1,k=t&&t.iterations||1;function p(i,j){return e.HMAC(s,j,i,{asBytes:true})}var h=[],g=1;while(h.length<f){var l=p(q,o.concat(a.wordsToBytes([g])));for(var r=l,n=1;n<k;n++){r=p(q,r);for(var m=0;m<l.length;m++){l[m]^=r[m]}}h=h.concat(l);g++}h.length=f;return t&&t.asBytes?h:t&&t.asString?c.bytesToString(h):a.bytesToHex(h)}})();(function(){Crypto.mode.OFB={encrypt:a,decrypt:a};function a(c,b,d){var g=c._blocksize*4,f=d.slice(0);for(var e=0;e<b.length;e++){if(e%g==0){c._encryptblock(f,0)}b[e]^=f[e%g]}}})();(function(){var l=Crypto,a=l.util,u=l.charenc,s=u.UTF8,j=u.Binary;var v=[99,124,119,123,242,107,111,197,48,1,103,43,254,215,171,118,202,130,201,125,250,89,71,240,173,212,162,175,156,164,114,192,183,253,147,38,54,63,247,204,52,165,229,241,113,216,49,21,4,199,35,195,24,150,5,154,7,18,128,226,235,39,178,117,9,131,44,26,27,110,90,160,82,59,214,179,41,227,47,132,83,209,0,237,32,252,177,91,106,203,190,57,74,76,88,207,208,239,170,251,67,77,51,133,69,249,2,127,80,60,159,168,81,163,64,143,146,157,56,245,188,182,218,33,16,255,243,210,205,12,19,236,95,151,68,23,196,167,126,61,100,93,25,115,96,129,79,220,34,42,144,136,70,238,184,20,222,94,11,219,224,50,58,10,73,6,36,92,194,211,172,98,145,149,228,121,231,200,55,109,141,213,78,169,108,86,244,234,101,122,174,8,186,120,37,46,28,166,180,198,232,221,116,31,75,189,139,138,112,62,181,102,72,3,246,14,97,53,87,185,134,193,29,158,225,248,152,17,105,217,142,148,155,30,135,233,206,85,40,223,140,161,137,13,191,230,66,104,65,153,45,15,176,84,187,22];for(var n=[],r=0;r<256;r++){n[v[r]]=r}var q=[],p=[],m=[],h=[],g=[],e=[];function f(y,x){for(var w=0,z=0;z<8;z++){if(x&1){w^=y}var A=y&128;y=(y<<1)&255;if(A){y^=27}x>>>=1}return w}for(var r=0;r<256;r++){q[r]=f(r,2);p[r]=f(r,3);m[r]=f(r,9);h[r]=f(r,11);g[r]=f(r,13);e[r]=f(r,14)}var k=[0,1,2,4,8,16,32,64,128,27,54];var c=[[],[],[],[]],d,b,t;var o=l.AES={encrypt:function(A,z,y){var i=s.stringToBytes(A),x=a.randomBytes(o._blocksize*4),w=z.constructor==String?l.PBKDF2(z,x,32,{asBytes:true}):z;mode=y&&y.mode||l.mode.OFB;o._init(w);mode.encrypt(o,i,x);return a.bytesToBase64(x.concat(i))},decrypt:function(z,y,x){var A=a.base64ToBytes(z),w=A.splice(0,o._blocksize*4),i=y.constructor==String?l.PBKDF2(y,w,32,{asBytes:true}):y;mode=x&&x.mode||l.mode.OFB;o._init(i);mode.decrypt(o,A,w);return s.bytesToString(A)},_blocksize:4,_encryptblock:function(w,x){for(var D=0;D<o._blocksize;D++){for(var i=0;i<4;i++){c[D][i]=w[x+i*4+D]}}for(var D=0;D<4;D++){for(var i=0;i<4;i++){c[D][i]^=t[i][D]}}for(var C=1;C<b;C++){for(var D=0;D<4;D++){for(var i=0;i<4;i++){c[D][i]=v[c[D][i]]}}c[1].push(c[1].shift());c[2].push(c[2].shift());c[2].push(c[2].shift());c[3].unshift(c[3].pop());for(var i=0;i<4;i++){var B=c[0][i],A=c[1][i],z=c[2][i],y=c[3][i];c[0][i]=q[B]^p[A]^z^y;c[1][i]=B^q[A]^p[z]^y;c[2][i]=B^A^q[z]^p[y];c[3][i]=p[B]^A^z^q[y]}for(var D=0;D<4;D++){for(var i=0;i<4;i++){c[D][i]^=t[C*4+i][D]}}}for(var D=0;D<4;D++){for(var i=0;i<4;i++){c[D][i]=v[c[D][i]]}}c[1].push(c[1].shift());c[2].push(c[2].shift());c[2].push(c[2].shift());c[3].unshift(c[3].pop());for(var D=0;D<4;D++){for(var i=0;i<4;i++){c[D][i]^=t[b*4+i][D]}}for(var D=0;D<o._blocksize;D++){for(var i=0;i<4;i++){w[x+i*4+D]=c[D][i]}}},_decryptblock:function(x,w){for(var D=0;D<o._blocksize;D++){for(var i=0;i<4;i++){c[D][i]=x[w+i*4+D]}}for(var D=0;D<4;D++){for(var i=0;i<4;i++){c[D][i]^=t[b*4+i][D]}}for(var C=1;C<b;C++){c[1].unshift(c[1].pop());c[2].push(c[2].shift());c[2].push(c[2].shift());c[3].push(c[3].shift());for(var D=0;D<4;D++){for(var i=0;i<4;i++){c[D][i]=n[c[D][i]]}}for(var D=0;D<4;D++){for(var i=0;i<4;i++){c[D][i]^=t[(b-C)*4+i][D]}}for(var i=0;i<4;i++){var B=c[0][i],A=c[1][i],z=c[2][i],y=c[3][i];c[0][i]=e[B]^h[A]^g[z]^m[y];c[1][i]=m[B]^e[A]^h[z]^g[y];c[2][i]=g[B]^m[A]^e[z]^h[y];c[3][i]=h[B]^g[A]^m[z]^e[y]}}c[1].unshift(c[1].pop());c[2].push(c[2].shift());c[2].push(c[2].shift());c[3].push(c[3].shift());for(var D=0;D<4;D++){for(var i=0;i<4;i++){c[D][i]=n[c[D][i]]}}for(var D=0;D<4;D++){for(var i=0;i<4;i++){c[D][i]^=t[i][D]}}for(var D=0;D<o._blocksize;D++){for(var i=0;i<4;i++){x[w+i*4+D]=c[D][i]}}},_init:function(i){d=i.length/4;b=d+6;o._keyexpansion(i)},_keyexpansion:function(w){t=[];for(var x=0;x<d;x++){t[x]=[w[x*4],w[x*4+1],w[x*4+2],w[x*4+3]]}for(var x=d;x<o._blocksize*(b+1);x++){var i=[t[x-1][0],t[x-1][1],t[x-1][2],t[x-1][3]];if(x%d==0){i.push(i.shift());i[0]=v[i[0]];i[1]=v[i[1]];i[2]=v[i[2]];i[3]=v[i[3]];i[0]^=k[x/d]}else{if(d>6&&x%d==4){i[0]=v[i[0]];i[1]=v[i[1]];i[2]=v[i[2]];i[3]=v[i[3]]}}t[x]=[t[x-d][0]^i[0],t[x-d][1]^i[1],t[x-d][2]^i[2],t[x-d][3]^i[3]]}}}})();/*
 * Crypto-JS v2.0.0
 * http://code.google.com/p/crypto-js/
 * Copyright (c) 2009, Jeff Mott. All rights reserved.
 * http://code.google.com/p/crypto-js/wiki/License
 */
(function(){var f=Crypto,a=f.util,b=f.charenc,e=b.UTF8,d=b.Binary;var c=f.MD5=function(i,g){var h=a.wordsToBytes(c._md5(i));return g&&g.asBytes?h:g&&g.asString?d.bytesToString(h):a.bytesToHex(h)};c._md5=function(y){if(y.constructor==String){y=e.stringToBytes(y)}var k=a.bytesToWords(y),n=y.length*8,v=1732584193,u=-271733879,t=-1732584194,s=271733878;for(var p=0;p<k.length;p++){k[p]=((k[p]<<8)|(k[p]>>>24))&16711935|((k[p]<<24)|(k[p]>>>8))&4278255360}k[n>>>5]|=128<<(n%32);k[(((n+64)>>>9)<<4)+14]=n;var q=c._ff,h=c._gg,w=c._hh,o=c._ii;for(var p=0;p<k.length;p+=16){var g=v,r=u,j=t,x=s;v=q(v,u,t,s,k[p+0],7,-680876936);s=q(s,v,u,t,k[p+1],12,-389564586);t=q(t,s,v,u,k[p+2],17,606105819);u=q(u,t,s,v,k[p+3],22,-1044525330);v=q(v,u,t,s,k[p+4],7,-176418897);s=q(s,v,u,t,k[p+5],12,1200080426);t=q(t,s,v,u,k[p+6],17,-1473231341);u=q(u,t,s,v,k[p+7],22,-45705983);v=q(v,u,t,s,k[p+8],7,1770035416);s=q(s,v,u,t,k[p+9],12,-1958414417);t=q(t,s,v,u,k[p+10],17,-42063);u=q(u,t,s,v,k[p+11],22,-1990404162);v=q(v,u,t,s,k[p+12],7,1804603682);s=q(s,v,u,t,k[p+13],12,-40341101);t=q(t,s,v,u,k[p+14],17,-1502002290);u=q(u,t,s,v,k[p+15],22,1236535329);v=h(v,u,t,s,k[p+1],5,-165796510);s=h(s,v,u,t,k[p+6],9,-1069501632);t=h(t,s,v,u,k[p+11],14,643717713);u=h(u,t,s,v,k[p+0],20,-373897302);v=h(v,u,t,s,k[p+5],5,-701558691);s=h(s,v,u,t,k[p+10],9,38016083);t=h(t,s,v,u,k[p+15],14,-660478335);u=h(u,t,s,v,k[p+4],20,-405537848);v=h(v,u,t,s,k[p+9],5,568446438);s=h(s,v,u,t,k[p+14],9,-1019803690);t=h(t,s,v,u,k[p+3],14,-187363961);u=h(u,t,s,v,k[p+8],20,1163531501);v=h(v,u,t,s,k[p+13],5,-1444681467);s=h(s,v,u,t,k[p+2],9,-51403784);t=h(t,s,v,u,k[p+7],14,1735328473);u=h(u,t,s,v,k[p+12],20,-1926607734);v=w(v,u,t,s,k[p+5],4,-378558);s=w(s,v,u,t,k[p+8],11,-2022574463);t=w(t,s,v,u,k[p+11],16,1839030562);u=w(u,t,s,v,k[p+14],23,-35309556);v=w(v,u,t,s,k[p+1],4,-1530992060);s=w(s,v,u,t,k[p+4],11,1272893353);t=w(t,s,v,u,k[p+7],16,-155497632);u=w(u,t,s,v,k[p+10],23,-1094730640);v=w(v,u,t,s,k[p+13],4,681279174);s=w(s,v,u,t,k[p+0],11,-358537222);t=w(t,s,v,u,k[p+3],16,-722521979);u=w(u,t,s,v,k[p+6],23,76029189);v=w(v,u,t,s,k[p+9],4,-640364487);s=w(s,v,u,t,k[p+12],11,-421815835);t=w(t,s,v,u,k[p+15],16,530742520);u=w(u,t,s,v,k[p+2],23,-995338651);v=o(v,u,t,s,k[p+0],6,-198630844);s=o(s,v,u,t,k[p+7],10,1126891415);t=o(t,s,v,u,k[p+14],15,-1416354905);u=o(u,t,s,v,k[p+5],21,-57434055);v=o(v,u,t,s,k[p+12],6,1700485571);s=o(s,v,u,t,k[p+3],10,-1894986606);t=o(t,s,v,u,k[p+10],15,-1051523);u=o(u,t,s,v,k[p+1],21,-2054922799);v=o(v,u,t,s,k[p+8],6,1873313359);s=o(s,v,u,t,k[p+15],10,-30611744);t=o(t,s,v,u,k[p+6],15,-1560198380);u=o(u,t,s,v,k[p+13],21,1309151649);v=o(v,u,t,s,k[p+4],6,-145523070);s=o(s,v,u,t,k[p+11],10,-1120210379);t=o(t,s,v,u,k[p+2],15,718787259);u=o(u,t,s,v,k[p+9],21,-343485551);v=(v+g)>>>0;u=(u+r)>>>0;t=(t+j)>>>0;s=(s+x)>>>0}return a.endian([v,u,t,s])};c._ff=function(i,h,o,l,g,k,j){var m=i+(h&o|~h&l)+(g>>>0)+j;return((m<<k)|(m>>>(32-k)))+h};c._gg=function(i,h,o,l,g,k,j){var m=i+(h&l|o&~l)+(g>>>0)+j;return((m<<k)|(m>>>(32-k)))+h};c._hh=function(i,h,o,l,g,k,j){var m=i+(h^o^l)+(g>>>0)+j;return((m<<k)|(m>>>(32-k)))+h};c._ii=function(i,h,o,l,g,k,j){var m=i+(o^(h|~l))+(g>>>0)+j;return((m<<k)|(m>>>(32-k)))+h};c._blocksize=16})();window.dhtmlHistory={isIE:false,isOpera:false,isSafari:false,isKonquerer:false,isGecko:false,isSupported:false,create:function(_1){var _2=this;var UA=navigator.userAgent.toLowerCase();var _4=navigator.platform.toLowerCase();var _5=navigator.vendor||"";if(_5==="KDE"){this.isKonqueror=true;this.isSupported=false;}else{if(typeof window.opera!=="undefined"){this.isOpera=true;this.isSupported=true;}else{if(typeof document.all!=="undefined"){this.isIE=true;this.isSupported=true;}else{if(_5.indexOf("Apple Computer, Inc.")>-1){this.isSafari=true;this.isSupported=(_4.indexOf("mac")>-1);}else{if(UA.indexOf("gecko")!=-1){this.isGecko=true;this.isSupported=true;}}}}}window.historyStorage.setup(_1);if(this.isSafari){this.createSafari();}else{if(this.isOpera){this.createOpera();}}var _6=this.getCurrentLocation();this.currentLocation=_6;if(this.isIE){this.createIE(_6);}var _7=function(){_2.firstLoad=null;};this.addEventListener(window,"unload",_7);if(this.isIE){this.ignoreLocationChange=true;}else{if(!historyStorage.hasKey(this.PAGELOADEDSTRING)){this.ignoreLocationChange=true;this.firstLoad=true;historyStorage.put(this.PAGELOADEDSTRING,true);}else{this.ignoreLocationChange=false;this.fireOnNewListener=true;}}var _8=function(){_2.checkLocation();};setInterval(_8,100);},initialize:function(){if(this.isIE){if(!historyStorage.hasKey(this.PAGELOADEDSTRING)){this.fireOnNewListener=false;this.firstLoad=true;historyStorage.put(this.PAGELOADEDSTRING,true);}else{this.fireOnNewListener=true;this.firstLoad=false;}}},addListener:function(_9){this.listener=_9;if(this.fireOnNewListener){this.fireHistoryEvent(this.currentLocation);this.fireOnNewListener=false;}},addEventListener:function(o,e,l){if(o.addEventListener){o.addEventListener(e,l,false);}else{if(o.attachEvent){o.attachEvent("on"+e,function(){l(window.event);});}}},add:function(_d,_e){if(this.isSafari){_d=this.removeHash(_d);historyStorage.put(_d,_e);this.currentLocation=_d;window.location.hash=_d;this.putSafariState(_d);}else{var _f=this;var _10=function(){if(_f.currentWaitTime>0){_f.currentWaitTime=_f.currentWaitTime-_f.waitTime;}_d=_f.removeHash(_d);if(document.getElementById(_d)&&_f.debugMode){var e="Exception: History locations can not have the same value as _any_ IDs that might be in the document,"+" due to a bug in IE; please ask the developer to choose a history location that does not match any HTML"+" IDs in this document. The following ID is already taken and cannot be a location: "+_d;throw new Error(e);}historyStorage.put(_d,_e);_f.ignoreLocationChange=true;_f.ieAtomicLocationChange=true;_f.currentLocation=_d;window.location.hash=_d;if(_f.isIE){_f.iframe.src="blank.html?"+_d;}_f.ieAtomicLocationChange=false;};window.setTimeout(_10,this.currentWaitTime);this.currentWaitTime=this.currentWaitTime+this.waitTime;}},isFirstLoad:function(){return this.firstLoad;},getVersion:function(){return "0.6";},getCurrentLocation:function(){var r=(this.isSafari?this.getSafariState():this.getCurrentHash());return r;},getCurrentHash:function(){var r=window.location.href;var i=r.indexOf("#");return (i>=0?r.substr(i+1):"");},PAGELOADEDSTRING:"DhtmlHistory_pageLoaded",listener:null,waitTime:200,currentWaitTime:0,currentLocation:null,iframe:null,safariHistoryStartPoint:null,safariStack:null,safariLength:null,ignoreLocationChange:null,fireOnNewListener:null,firstLoad:null,ieAtomicLocationChange:null,createIE:function(_15){this.waitTime=400;var _16=(historyStorage.debugMode?"width: 800px;height:80px;border:1px solid black;":historyStorage.hideStyles);var _17="rshHistoryFrame";var _18="<iframe frameborder=\"0\" id=\""+_17+"\" style=\""+_16+"\" src=\"blank.html?"+_15+"\"></iframe>";document.write(_18);this.iframe=document.getElementById(_17);},createOpera:function(){this.waitTime=400;var _19="<img src=\"javascript:location.href='javascript:dhtmlHistory.checkLocation();';\" style=\""+historyStorage.hideStyles+"\" />";document.write(_19);},createSafari:function(){var _1a="rshSafariForm";var _1b="rshSafariStack";var _1c="rshSafariLength";var _1d=historyStorage.debugMode?historyStorage.showStyles:historyStorage.hideStyles;var _1e=(historyStorage.debugMode?"width:800px;height:20px;border:1px solid black;margin:0;padding:0;":historyStorage.hideStyles);var _1f="<form id=\""+_1a+"\" style=\""+_1d+"\">"+"<input type=\"text\" style=\""+_1e+"\" id=\""+_1b+"\" value=\"[]\"/>"+"<input type=\"text\" style=\""+_1e+"\" id=\""+_1c+"\" value=\"\"/>"+"</form>";document.write(_1f);this.safariStack=document.getElementById(_1b);this.safariLength=document.getElementById(_1c);if(!historyStorage.hasKey(this.PAGELOADEDSTRING)){this.safariHistoryStartPoint=history.length;this.safariLength.value=this.safariHistoryStartPoint;}else{this.safariHistoryStartPoint=this.safariLength.value;}},getSafariStack:function(){var r=this.safariStack.value;return historyStorage.fromJSON(r);},getSafariState:function(){var _21=this.getSafariStack();var _22=_21[history.length-this.safariHistoryStartPoint-1];return _22;},putSafariState:function(_23){var _24=this.getSafariStack();_24[history.length-this.safariHistoryStartPoint]=_23;this.safariStack.value=historyStorage.toJSON(_24);},fireHistoryEvent:function(_25){var _26=historyStorage.get(_25);this.listener.call(null,_25,_26);},checkLocation:function(){if(!this.isIE&&this.ignoreLocationChange){this.ignoreLocationChange=false;return;}if(!this.isIE&&this.ieAtomicLocationChange){return;}var _27=this.getCurrentLocation();if(_27==this.currentLocation){return;}this.ieAtomicLocationChange=true;if(this.isIE&&this.getIframeHash()!=_27){this.iframe.src="blank.html?"+_27;}else{if(this.isIE){return;}}this.currentLocation=_27;this.ieAtomicLocationChange=false;this.fireHistoryEvent(_27);},getIframeHash:function(){var doc=this.iframe.contentWindow.document;var _29=String(doc.location.search);if(_29.length==1&&_29.charAt(0)=="?"){_29="";}else{if(_29.length>=2&&_29.charAt(0)=="?"){_29=_29.substring(1);}}return _29;},removeHash:function(_2a){var r;if(_2a===null||_2a===undefined){r=null;}else{if(_2a===""){r="";}else{if(_2a.length==1&&_2a.charAt(0)=="#"){r="";}else{if(_2a.length>1&&_2a.charAt(0)=="#"){r=_2a.substring(1);}else{r=_2a;}}}}return r;},iframeLoaded:function(_2c){if(this.ignoreLocationChange){this.ignoreLocationChange=false;return;}var _2d=String(_2c.search);if(_2d.length==1&&_2d.charAt(0)=="?"){_2d="";}else{if(_2d.length>=2&&_2d.charAt(0)=="?"){_2d=_2d.substring(1);}}window.location.hash=_2d;this.fireHistoryEvent(_2d);}};window.historyStorage={setup:function(_2e){if(typeof _2e!=="undefined"){if(_2e.debugMode){this.debugMode=_2e.debugMode;}if(_2e.toJSON){this.toJSON=_2e.toJSON;}if(_2e.fromJSON){this.fromJSON=_2e.fromJSON;}}var _2f="rshStorageForm";var _30="rshStorageField";var _31=this.debugMode?historyStorage.showStyles:historyStorage.hideStyles;var _32=(historyStorage.debugMode?"width: 800px;height:80px;border:1px solid black;":historyStorage.hideStyles);var _33="<form id=\""+_2f+"\" style=\""+_31+"\">"+"<textarea id=\""+_30+"\" style=\""+_32+"\"></textarea>"+"</form>";document.write(_33);this.storageField=document.getElementById(_30);if(typeof window.opera!=="undefined"){this.storageField.focus();}},put:function(key,_35){this.assertValidKey(key);if(this.hasKey(key)){this.remove(key);}this.storageHash[key]=_35;this.saveHashTable();},get:function(key){this.assertValidKey(key);this.loadHashTable();var _37=this.storageHash[key];if(_37===undefined){_37=null;}return _37;},remove:function(key){this.assertValidKey(key);this.loadHashTable();delete this.storageHash[key];this.saveHashTable();},reset:function(){this.storageField.value="";this.storageHash={};},hasKey:function(key){this.assertValidKey(key);this.loadHashTable();return (typeof this.storageHash[key]!=="undefined");},isValidKey:function(key){return (typeof key==="string");},showStyles:"border:0;margin:0;padding:0;",hideStyles:"left:-1000px;top:-1000px;width:1px;height:1px;border:0;position:absolute;",debugMode:false,storageHash:{},hashLoaded:false,storageField:null,assertValidKey:function(key){var _3c=this.isValidKey(key);if(!_3c&&this.debugMode){throw new Error("Please provide a valid key for window.historyStorage. Invalid key = "+key+".");}},loadHashTable:function(){if(!this.hashLoaded){var _3d=this.storageField.value;if(_3d!==""&&_3d!==null){this.storageHash=this.fromJSON(_3d);this.hashLoaded=true;}}},saveHashTable:function(){this.loadHashTable();var _3e=this.toJSON(this.storageHash);this.storageField.value=_3e;},toJSON:function(o){return o.toJSONString();},fromJSON:function(s){return s.parseJSON();}};var page_options = {     
        language: "ES",     
        jsp_utils: "components/components-utils.jsp",     
        pageUrl: "flota_rent_car.jsp",     
        channel: "DEFAULT",     
        inPreview: false,     
        issueId: 3,     
        pageId: 556, 
	  publishPath: ""   
    };  
    function centerDiv(selector, width, height){ 
	var st = null; 
	var sl = null; 
	var wh = null; 
	var ww = null; 
	if (typeof window.innerWidth != 'undefined'){ 
		wh = window.innerHeight; 
		ww = window.innerWidth; 
		st = window.pageYOffset; 
		sl = window.pageXOffset; 
	} else if ( 
		typeof document.documentElement != 'undefined' && typeof document.documentElement.clientHeight != 'undefined' && document.documentElement.clientHeight != 0){ 
		// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document) 
		wh = document.documentElement.clientHeight; 
		ww = document.documentElement.clientWidth; 
		st = document.documentElement.scrollTop; 
		sl = document.documentElement.scrollLeft; 
	} 
	st = st + (wh/2) - (height/2); 
	sl = sl + (ww/2) - (width/2); 
	$jq(selector).css("top", st); 
	$jq(selector).css("left", sl); 
} 
 
function showDisabledLayer() { 
	var st = null; 
	var wh = null; 
	var ww = null; 
	if (typeof window.innerWidth != 'undefined'){ 
		wh = window.innerHeight; 
		ww = window.innerWidth; 
		st = window.pageYOffset; 
	} else if ( 
		typeof document.documentElement != 'undefined' && typeof document.documentElement.clientHeight != 'undefined' && document.documentElement.clientHeight != 0){ 
		// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document) 
		wh = document.documentElement.clientHeight; 
		ww = document.documentElement.clientWidth; 
		st = document.documentElement.scrollTop; 
	} 
	$jq("#disabled-layer").css("height", wh + st); 
	$jq("#disabled-layer").css("width", ww); 
	$jq("#disabled-layer").show(); 
	$jq(".loader").show(); 
	centerDiv(".loader",100,100); 
} 
       
function hideDisabledLayer() { 
	$jq("#disabled-layer").hide();       
} 
    window.dhtmlHistory.create({ 
    toJSON: function(o) { 
	  return $jq.toJSON(o); 
    }, 
    fromJSON: function(s) { 
	  return $jq.evalJSON(s); 
    } 
}); 
var rshListener = function(newLocation,historyData){ 
    ncm.restoreSavedSessionState(newLocation,historyData); 
}
function onYouTubePlayerReady(playerId) {      
		 var ytplayer = document.getElementById(playerId);      
		 if (ytplayer) {      
		    ytplayer.addEventListener("onError", function(errCode){      
			  if(errCode==100) {      
				 alert("El video ha sido eliminado o es privado");      
			  }      
			  if(errCode==101) {      
				 alert("El video no se puede mostrar en player embebido");      
			  }      
		    });      
		    if(window["auto-"+playerId]) {    
			  ytplayer.playVideo();    
			  window["auto-"+playerId] = false;    
		    }      
		 }      
	  };
function jwPlayerReady(obj) { 
	  var m_obj = jwPlayerGetAlbum(obj); 
        if(m_obj){ 
	      if(m_obj.simplefields["AUTO_PAGER"] || m_obj.simplefields["SLIDESHOW"]){ 
		    $jq(m_obj.getAlbumSelector()).unbind("mouseover").unbind("mouseout"); 
	      } 
	      if(m_obj.simplefields["AUTO_PAGER"]){ 
		    m_obj.stopAutoPager(); 
	      } 
	      if(m_obj.simplefields["SLIDESHOW"]){ 
		    m_obj.stopslideshow(); 
	      } 
         } 
        var player = document.getElementById(obj['id']); 
        if(player){ 
	      player.addControllerListener("PLAY","jwPlayerPlay"); 
	      player.addControllerListener("STOP","jwPlayerStop"); 
        } 
    } 
    function jwPlayerPlay(obj){ 
        var m_obj = jwPlayerGetAlbum(obj); 
        if(m_obj){ 
	      if(m_obj.simplefields["AUTO_PAGER"]){ 
	          if(obj["state"]==false){ 
		        m_obj.autoPager(); 
	          } else { 
		        m_obj.stopAutoPager(); 
	          } 
	      } 
	      if(m_obj.simplefields["SLIDESHOW"]){ 
	          if(obj["state"]==false){ 
		        m_obj.slideshow(); 
	          } else { 
		        m_obj.stopslideshow(); 
	          } 
	      } 
        } 
    } 
    function jwPlayerStop(obj){ 
        var m_obj = jwPlayerGetAlbum(obj); 
        if(m_obj){ 
	      if(m_obj.simplefields["AUTO_PAGER"]){ 
	          m_obj.autoPager(); 
	      } 
	      if(m_obj.simplefields["SLIDESHOW"]){ 
	          m_obj.slideshow(); 
	      } 
        } 
    } 
    function jwPlayerGetAlbum(obj){ 
        var m_obj = null; 
        if(obj && obj["id"]){ 
	      var m_id = obj["id"].replace(/-embed/ig,"").replace(/player/ig,""); 
	      if(m_id==="0"){ 
	          var jqViewer = $jq(ncm.concat("#",obj["id"])).parents("div.album-viewer"); 
	          if(jqViewer.length>0){ 
		        var a_id = jqViewer.attr("id").replace(/viewer/ig,""); 
		        if(window["NcmMediaAlbum"]){ 
			      m_obj = NcmMediaAlbum.get(a_id); 
		        } 
	          } 
	      } 
        } 
        return m_obj; 
    }

