function nav(sUrl){
	if(sUrl != null && sUrl != "null"){
		location.href = sUrl;
	}
}

var global = {};
	global.memory = [];
	global.custom = function(o){
	var t = "";
		return{
			
		}
	}
	global.templates = {};
	global.templates.confirm = new Ext.Template(
		"<TABLE id='message' class='message-confirm' border='0' cellpadding='0' cellspacing='0'>",
			"<TR>",
				"<TD class='msg-background'>",
					"<TABLE class='msg-table' border='0' cellpadding='0' cellspacing='0'>",
						"<TR>",
							"<TD class='msg-panel'>",
								"<TABLE class='information' border='0' cellpadding='0' cellspacing='0'>",
									"<TR>",
										"<TD class='text'>{text}</TD>",
									"</TR>",
								"</TABLE>",
								"<TABLE class='options' border='0' cellpadding='0' cellspacing='0'>",
									"<TR>",
										"<TD class='buttons'>",
											"<TABLE class='button' border='0' cellpadding='0' cellspacing='0'>",
												"<TR>",
													"<TD class='btn-item'><INPUT type='button' name='confirmar' value='Confirmar' onclick=confirm('message','confirm','{url}')></TD>",
												"</TR>",
											"</TABLE>",
											"<TABLE class='button' border='0' cellpadding='0' cellspacing='0'>",
												"<TR>",
													"<TD class='btn-item'><INPUT type='button' name='cancelar' value='Cancelar' onclick=confirm('message','cancel','{url}')></TD>",
												"</TR>",
											"</TABLE>",
										"</TD>",
									"</TR>",
								"</TABLE>",
							"</TD>",
						"</TR>",
					"</TABLE>",
				"</TD>",
			"</TR>",
		"</TABLE>"
	);
	global.templates.alert = new Ext.Template(
		'<TABLE class="message-alert{cls}" border="0" cellpadding="0" cellspacing="0">',
			'<TR>',
				'<TD class="message-container">',
					'<TABLE class="message-body" border="0" cellpadding="0" cellspacing="0">',
						'<TR>',
							'<TD class="message-icon"><IMG src="{src}" border="{border}"></TD>',
							'<TD class="message-text">{text}</TD>',
						'</TR>',
					'</TABLE>',
				'</TD>',
			'</TR>',
		'</TABLE>'
	);
	global.templates.wait = new Ext.Template(
		'<TABLE class="message-wait-panel">',
			'<TR>',
				'<TD class="message-wait-panel-icon"><IMG src="{icon}" border="0"></TD>',
				'<TD class="message-wait-panel-text">{text}</TD>',
			'</TR>',
		'</TABLE>'
	);
	global.utils = {};
	global.utils.removeListener = function(el){
	var obj = Ext.decode(el.getAttribute("parameters"));
	var element = Ext.get(el);
		element.removeAllListeners();
	}
	global.utils.addListener = function(el){
	var obj = Ext.decode(el.getAttribute("parameters"));
	var element = Ext.get(el);
		element.on(obj.listeners);
	}
	global.utils.getElementValueById = function(id){
	var value = null;
	var el = Ext.getDom(id);
		if(el != null){
			switch(el.tagName){
				case 'INPUT':
					value = el.value;
				break;
			}
		}
		return value;
	}
	global.utils.getStringsBetween = function(string, start, end){
	var continueSearch = true;
	var cPosition = 0;
	var iPosition = 0;
	var ePosition = 0;
	var dataSetCounter = 0;
	var dataSet = [];
		while(continueSearch == true){
			if(string.indexOf(start, cPosition) != -1){
				iPosition = string.indexOf(start, cPosition) + 1;
				cPosition = iPosition;
				if(string.indexOf(end, cPosition) != -1){
					ePosition = string.indexOf(end, cPosition);
					cPosition = ePosition;
					dataSet[dataSetCounter] = string.slice(iPosition,ePosition);
					dataSetCounter++;
				}else{
					continueSearch = false;
				}
			}else{
				continueSearch = false;
			}
		}
		return dataSet;
	}
	global.utils.typeOf = function(o){
	var type = null;
		if(o != null){
			if(o.constructor.toString().search("Array") != -1){type = "array";}
			if(o.constructor.toString().search("Object") != -1){type = "object";}
			if(o.constructor.toString().search("Function") != -1){type = "function";}
			if(o.constructor.toString().search("Date") != -1){type = "date";}
			if(o.constructor.toString().search("String") != -1){type = "string";}
			if(o.constructor.toString().search("Number") != -1){type = "number";}
			if(o.constructor.toString().search("Boolean") != -1){type = "boolean";}
		}
		return type;
	}
	global.utils.component = function(o){
		
		
		
		return{
			
			test: function(){
				
			}
			
		}
	}
	global.controls = {};
	global.controls.zoom = function(el){
	var newWidth = 0;
	var newHeight = 0;
	var obj = Ext.decode(el.getAttribute("parameters"));
		if(global.utils.typeOf(obj.actions.zoom) == "object"){
		var pages = Ext.query("[component=page]");
			switch(obj.actions.zoom.type){
				case 'specific':
					Ext.each(pages, function(item){
						item.width = obj.actions.zoom.scale;
					});
				break;
				case 'in':
					Ext.each(pages, function(item){
						newWidth = item.width + obj.actions.zoom.scale;
						if(newWidth < obj.actions.zoom.maxScale){
							item.width = newWidth;
						}
					});
				break;
				case 'out':
					Ext.each(pages, function(item){
						newWidth = item.width - obj.actions.zoom.scale;
						if(newWidth > obj.actions.zoom.minScale){
							item.width = newWidth;
						}
					});
				break;
			}
		}
	}
	global.controls.overflow = function(el){
		
	}
	global.controls.custom = function(el){
	var obj = Ext.decode(el.getAttribute("parameters"));
		if(global.utils.typeOf(obj.actions.custom) == "object"){
			obj.actions.custom.fn(el);
		}
	}
	global.controls.close = function(el){
	var obj = Ext.decode(el.getAttribute("parameters"));
		if(global.utils.typeOf(obj.actions.close) == "object"){
			oCfg = obj.actions.close; 
		var component = Ext.query("[component=" + oCfg.component.name + "]");
			Ext.get(component[0]).remove();			
		}
	}
	global.controls.getFile = function(el){
	var obj = Ext.decode(el.getAttribute("parameters"));
		if(global.utils.typeOf(obj.actions.download) == "object"){
		var oCfg = obj.actions.download;
			switch(oCfg.contentData.srcType){
				case 'remote':
				var ajaxConnector = new Ext.data.Connection();
					ajaxConnector.request({
						url: oCfg.contentData.url,
						scope: {},
						success: function(r, o){
//							for(var property in r){
//								alert(property);
//							}
							
							
							alert(r.responseText);
						},
						failure: function(r, o){
							
						}
					});
				break;
				case 'local':
					
				break;
			}
		}
	}
	global.controls.getData = function(el){
	var obj = Ext.decode(el.getAttribute("parameters"));
		if(global.utils.typeOf(obj.actions.view) == "object"){
		var oCfg = obj.actions.view;
		var containerPanel = Ext.query("[component=" + oCfg.component.name + "]");
			if(containerPanel.length > 0){
			var panel = Ext.get(containerPanel[0]);
			var container = Ext.getDom(panel.child("[control=container]"));
				switch(oCfg.contentData.srcType){
					case 'remote':
						if(global.utils.typeOf(oCfg.contentData.msg) == "object"){
						var t = new Ext.Template(
							'<TABLE class="{cls}" border="0" cellpadding="0" cellspacing="0">',
								'<TR>',
									'<TD class="{cls}-center">',
										'<TABLE class="{cls}-layout" border="0" cellpadding="0" cellspacing="0">',
											'<TR>',
												'<TD class="{cls}-icon"><IMG src="{icon}" border="0"></TD>',
												'<TD class="{cls}-text">{text}</TD>',
											'</TR>',
										'</TABLE>',
									'</TD>',
								'</TR>',
							'</TABLE>'
						);
						if(Ext.get(container).first()){
							Ext.get(container).first().remove();
						}
						t.append(container, oCfg.contentData.msg);
						}
					var ajaxConnector = new Ext.data.Connection();
						ajaxConnector.request({
							url: oCfg.contentData.url,
							scope: {},
							success: function(r, o){
								container.innerHTML = r.responseText;
							},
							failure: function(r, o){
								
							}
						});
					break;
					case 'local':
						switch(global.utils.typeOf(oCfg.contentData.data)){
							case 'string':
								container.innerHTML = oCfg.contentData.data;
							break;
							case 'object':
								container.innerHTML = "";
								oCfg.contentData.data.tpl.append(container, oCfg.contentData.data.prm);
							break;
						}
					break;
				}
			}
		}
	}
	global.controls.nav = function(el){
	var obj = Ext.decode(el.getAttribute("parameters"));
		if(typeof(obj.navMethod) != "undefined"){
			switch(obj.navMethod){
				case 'download':
					location.href = obj.source;
				break;
				case 'mail':
					location.href = "mailto:" + obj.recipients;
				break;
				case 'location':
					location.href = obj.url;
				break;
				case 'open':
					if(typeof(obj.name) != "undefined"){
						window.open(obj.url, obj.name);
					}
				break;
			}
		}
	}
	global.effects = {};
	global.effects.collapsables = function(el){
		
	}
	global.effects.collapsable = function(el){
	var elEvent = el.onclick;
		el.onclick = null;
	var obj = Ext.decode(el.getAttribute("parameters"));
		if(global.utils.typeOf(obj.actions.collapsable) == "object"){
		var oCfg = obj.actions.collapsable;
		var element = Ext.get(el);
		var component = element.parent("[component=" + oCfg.component.name + "]");
		var htmlComponent = Ext.getDom(component);
			htmlComponent.oTop = Ext.getDom(component.child("[ctrlPanel=top]"));
			htmlComponent.oTop.oLayout = Ext.getDom(component.child("[ctrlLayout=top]"));
			htmlComponent.oTop.oLayout.oLeft = Ext.getDom(component.child("[ctrlPanel=top-left]"));
			htmlComponent.oTop.oLayout.oLeft.oImage = Ext.getDom(component.child("[ctrlPanel=top-left]").first());
			htmlComponent.oTop.oLayout.oRight = Ext.getDom(component.child("[ctrlPanel=top-right]"));
			htmlComponent.oTop.oLayout.oRight.oTitle = Ext.getDom(component.child("[ctrlLayout=title]"));
			htmlComponent.oTop.oLayout.oRight.oTitle.oLeft = Ext.getDom(component.child("[ctrlPanel=title-image]"));
			htmlComponent.oTop.oLayout.oRight.oTitle.oLeft.oImage = Ext.getDom(component.child("[ctrlPanel=title-image]").first());
			htmlComponent.oTop.oLayout.oRight.oTitle.oText = Ext.getDom(component.child("[ctrlPanel=title-text]"));
			htmlComponent.oBottom = Ext.getDom(component.child("[ctrlPanel=bottom]"));
			htmlComponent.oBottom.oLayout = Ext.getDom(component.child("[ctrlLayout=bottom]"));
			htmlComponent.oBottom.oLayout.oContainer = Ext.getDom(component.child("[ctrlPanel=container]"));
		var panelStatus = "";
			if(htmlComponent.oBottom.oLayout.className.search("collapsed") != -1){panelStatus = "collapsed";}
			if(htmlComponent.oBottom.oLayout.className.search("expanded") != -1){panelStatus = "expanded";}
			Ext.get(htmlComponent.oBottom.oLayout).setVisibilityMode(Ext.Element.DISPLAY);
			switch(panelStatus){
				case 'collapsed':
					if(oCfg.component.cls){
						htmlComponent.className = htmlComponent.className + "-selected";
					}
					switch(oCfg.contentData.srcType){
						case 'remote':
							var iDelimiter = "{";
							var eDelimiter = "}";
							var urlString = oCfg.contentData.url;
							var urlParameters = global.utils.getStringsBetween(urlString, iDelimiter, eDelimiter);
							if(urlParameters.length > 0){
								for(i=0; i<=urlParameters.length - 1; i++){
								var value = global.utils.getElementValueById(urlParameters[i].split(":")[1]);
									urlString = urlString.replace(iDelimiter + urlParameters[i] + eDelimiter, value);
								}
							}
							if(global.utils.typeOf(oCfg.allwaysExpand) != null){
								if(!oCfg.allwaysExpand){
									if(htmlComponent.oTop.oLayout.oLeft.oImage != null && htmlComponent.oTop.oLayout.oLeft.oImage != "undefined"){
										htmlComponent.oTop.oLayout.oLeft.oImage.src = htmlComponent.oTop.oLayout.oLeft.oImage.src.replace("expand.png", "loading-small.gif");
									}
								}else{
									if(htmlComponent.oTop.oLayout.oLeft.oImage != null && htmlComponent.oTop.oLayout.oLeft.oImage != "undefined"){
										htmlComponent.oTop.oLayout.oLeft.oImage.src = htmlComponent.oTop.oLayout.oLeft.oImage.src.replace("expand.png", "loading-small.gif");
									}
								}
							}else{
								if(htmlComponent.oTop.oLayout.oLeft.oImage != null && htmlComponent.oTop.oLayout.oLeft.oImage != "undefined"){
									htmlComponent.oTop.oLayout.oLeft.oImage.src = htmlComponent.oTop.oLayout.oLeft.oImage.src.replace("expand.png", "loading-small.gif");
								}
							}
						var ajaxConnector = new Ext.data.Connection();
							ajaxConnector.request({
								url: urlString,
								scope: {
									htmlComponent: htmlComponent,
									panelStatus: panelStatus,
									el: el,
									elEvent: elEvent,
									oCfg: oCfg
								},
								success: function(r, o){
									this.htmlComponent.oBottom.oLayout.oContainer.innerHTML = r.responseText;
									Ext.get(this.htmlComponent.oBottom.oLayout).slideIn('', {
										scope: {
											el: el,
											elEvent: elEvent
										},
										callback: function(){
											this.el.onclick = this.elEvent;
										}
									});
									if(global.utils.typeOf(oCfg.allwaysExpand) != null){
										if(!oCfg.allwaysExpand){
											Ext.getDom(this.htmlComponent.oBottom.oLayout).className = Ext.getDom(this.htmlComponent.oBottom.oLayout).className.replace("collapsed", "expanded");
											if(htmlComponent.oTop.oLayout.oLeft.oImage != null && htmlComponent.oTop.oLayout.oLeft.oImage != "undefined"){
												this.htmlComponent.oTop.oLayout.oLeft.oImage.src = this.htmlComponent.oTop.oLayout.oLeft.oImage.src.replace("loading-small.gif", "collapse.png");
											}
										}else{
											if(htmlComponent.oTop.oLayout.oLeft.oImage != null && htmlComponent.oTop.oLayout.oLeft.oImage != "undefined"){
												this.htmlComponent.oTop.oLayout.oLeft.oImage.src = this.htmlComponent.oTop.oLayout.oLeft.oImage.src.replace("loading-small.gif", "expand.png");
											}
										}
									}else{
										Ext.getDom(this.htmlComponent.oBottom.oLayout).className = Ext.getDom(this.htmlComponent.oBottom.oLayout).className.replace("collapsed", "expanded");
										if(htmlComponent.oTop.oLayout.oLeft.oImage != null && htmlComponent.oTop.oLayout.oLeft.oImage != "undefined"){
											this.htmlComponent.oTop.oLayout.oLeft.oImage.src = this.htmlComponent.oTop.oLayout.oLeft.oImage.src.replace("loading-small.gif", "collapse.png");
										}
									}
								},
								failure: function(r, o){
								
								}
							});
						break;
						case 'local':
							Ext.get(htmlComponent.oBottom.oLayout).slideIn('', {
								scope: {
									el: el,
									elEvent: elEvent
								},
								callback: function(){
									this.el.onclick = this.elEvent;
								}
							});
							Ext.getDom(htmlComponent.oBottom.oLayout).className = Ext.getDom(htmlComponent.oBottom.oLayout).className.replace("collapsed", "expanded");
							if(htmlComponent.oTop.oLayout.oLeft.oImage != null && htmlComponent.oTop.oLayout.oLeft.oImage != "undefined"){
								htmlComponent.oTop.oLayout.oLeft.oImage.src = htmlComponent.oTop.oLayout.oLeft.oImage.src.replace("expand.png", "collapse.png");
							}
						break;
					}
				break;
				case 'expanded':
					switch(oCfg.contentData.srcType){
						case 'remote':
							Ext.get(htmlComponent.oBottom.oLayout).slideOut('', {
								scope: {
									htmlComponent: htmlComponent,
									el: el,
									elEvent: elEvent,
									component: component,
									oCfg: oCfg
								},
								callback: function(){
									this.el.onclick = this.elEvent;
									if(Ext.get(this.htmlComponent.oBottom.oLayout.oContainer).first() != null){
										Ext.get(this.htmlComponent.oBottom.oLayout.oContainer).first().remove();
									}
									if(oCfg.component.cls){
										htmlComponent.className = htmlComponent.className.replace("-selected", "");
									}
								}
							});
							Ext.getDom(htmlComponent.oBottom.oLayout).className = Ext.getDom(htmlComponent.oBottom.oLayout).className.replace("expanded", "collapsed");
							if(htmlComponent.oTop.oLayout.oLeft.oImage != null && htmlComponent.oTop.oLayout.oLeft.oImage != "undefined"){
								htmlComponent.oTop.oLayout.oLeft.oImage.src = htmlComponent.oTop.oLayout.oLeft.oImage.src.replace("collapse.png", "expand.png");
							}
						break;
						case 'local':
							Ext.get(htmlComponent.oBottom.oLayout).slideOut('', {
								scope: {
									el: el,
									elEvent: elEvent,
									component: component,
									oCfg: oCfg
								},
								callback: function(){
									this.el.onclick = this.elEvent;
									if(oCfg.component.cls){
										htmlComponent.className = htmlComponent.className.replace("-selected", "");
									}
								}
							});
							Ext.getDom(htmlComponent.oBottom.oLayout).className = Ext.getDom(htmlComponent.oBottom.oLayout).className.replace("expanded", "collapsed");
							if(htmlComponent.oTop.oLayout.oLeft.oImage != null && htmlComponent.oTop.oLayout.oLeft.oImage != "undefined"){
								htmlComponent.oTop.oLayout.oLeft.oImage.src = htmlComponent.oTop.oLayout.oLeft.oImage.src.replace("collapse.png", "expand.png");
							}
						break;
					}
				break;
			}
		}
	}
	global.effects.out = function(el){
		if(el.className.search("-over") != -1){
			el.className = el.className.replace("-over", "");
		}
	}
	global.effects.over = function(el){
		if(el.className.search("-over") == -1 && el.className.search("-selected") == -1 && el.className.search("-disabled") == -1){
			el.className = el.className + "-over";
		}
	}
	
var page = function(){
	return{
		init: function(){
		var menuItems = Ext.query(".menu td.items table.item td.container");
			Ext.each(menuItems, function(item){
				var el = Ext.get(item);
				el.fadeIn();
				el.hover(function(){global.effects.over(item);}, function(){global.effects.out(item);});
			});
		var menuSubitems = Ext.query(".menu td.subitems table.subitem td.container");
			Ext.each(menuSubitems, function(item){
				var el = Ext.get(item);
				el.hover(function(){global.effects.over(item);}, function(){global.effects.out(item);});
			});
		var navItems = Ext.query(".menu td.navitems table.item td.text");
			Ext.each(navItems, function(item){
				var el = Ext.get(item);
				el.hover(function(){global.effects.over(item);}, function(){global.effects.out(item);});
			});
			if(typeof(local) != "undefined"){
				local.init();
			}
		}
	};
}();

Ext.EventManager.onDocumentReady(page.init, page, true);