/*
+--------------------------------------------------------------+
	getElementById
+--------------------------------------------------------------+
*/
function $() {
	var elements = new Array();
	for (var i = 0; i < arguments.length; i++) {
		var element = arguments[i];
		if (typeof element == 'string') element = document.getElementById(element);
		if (arguments.length == 1) return element;
		elements.push(element);
	}
	return elements;
}
/*
+--------------------------------------------------------------+
	AddOnLoad
+--------------------------------------------------------------+
*/
//Exemplo:
//	AddOnLoad(Abc);
//	AddOnLoad(function(){Abc('xxxx');});
function AddOnLoad(novaFn){
	if (!window.loadFunctions){ //Verifica se a arrray com as funções que serão executadas no onload já está criada
		window.loadFunctions = []; //Criar uma array com as funções que serão executadas no onload
		if (window.onload) window.loadFunctions.push(window.onload); //Caso já exista uma função onload definida, adiciona-a no array
		window.onload = function(){
			for (var i=0; i<window.loadFunctions.length; i++)
				window.loadFunctions[i].apply(window, []);
		}
	}
	window.loadFunctions.push(novaFn);
}
/*
+--------------------------------------------------------------+
	getElementsByClassName
+--------------------------------------------------------------+
*/
var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};
/*
+--------------------------------------------------------------+
	hasClassName
+--------------------------------------------------------------+
*/
	// Description : returns boolean indicating whether the object has the class name
	//    built with the understanding that there may be multiple classes
	//
	// Arguments:
	//    objElement - element to manipulate
	//    strClass - class name to add

function hasClassName(objElement, strClass){
	// if there is a class
	if ( objElement.className ){
		// the classes are just a space separated list, so first get the list
		var arrList = objElement.className.split(' ');

		// get uppercase class for comparison purposes
		var strClassUpper = strClass.toUpperCase();

		// find all instances and remove them
		for ( var i = 0; i < arrList.length; i++ ){
			// if class found
			if ( arrList[i].toUpperCase() == strClassUpper ){
				// we found it
				return true;
			}
		}
	}
	// if we got here then the class name is not there
	return false;
}
/*
+--------------------------------------------------------------+
	addClassName
+--------------------------------------------------------------+
*/
	// Description : adds a class to the class attribute of a DOM element
	//    built with the understanding that there may be multiple classes
	//
	// Arguments:
	//    objElement - element to manipulate
	//    strClass - class name to add
function addClassName(objElement, strClass, blnMayAlreadyExist){
	// if there is a class
	if ( objElement.className ){
		// the classes are just a space separated list, so first get the list
		var arrList = objElement.className.split(' ');

		// if the new class name may already exist in list
		if ( blnMayAlreadyExist ){
			// get uppercase class for comparison purposes
			var strClassUpper = strClass.toUpperCase();

			// find all instances and remove them
			for ( var i = 0; i < arrList.length; i++ ){
				// if class found
				if ( arrList[i].toUpperCase() == strClassUpper ){
					// remove array item
					arrList.splice(i, 1);

					// decrement loop counter as we have adjusted the array's contents
					i--;
				}
			}
		}

		// add the new class to end of list
		arrList[arrList.length] = strClass;

		// add the new class to beginning of list
		//arrList.splice(0, 0, strClass);

		// assign modified class name attribute
		objElement.className = arrList.join(' ');
	}else{
		// assign modified class name attribute
		objElement.className = strClass;

	}
}

/*
+--------------------------------------------------------------+
	removeClassName
+--------------------------------------------------------------+
*/
	// Description : removes a class from the class attribute of a DOM element
	//    built with the understanding that there may be multiple classes
	//
	// Arguments:
	//    objElement - element to manipulate
	//    strClass - class name to remove
function removeClassName(objElement, strClass){
	// if there is a class
	if ( objElement.className ){

		// the classes are just a space separated list, so first get the list
		var arrList = objElement.className.split(' ');

		// get uppercase class for comparison purposes
		var strClassUpper = strClass.toUpperCase();

		// find all instances and remove them
		for ( var i = 0; i < arrList.length; i++ ){
			// if class found
			if ( arrList[i].toUpperCase() == strClassUpper ){
				// remove array item
				arrList.splice(i, 1);
				// decrement loop counter as we have adjusted the array's contents
				i--;
			}

		}

		// assign modified class name attribute
		objElement.className = arrList.join(' ');
	}
	// if there was no class
	// there is nothing to remove
}
/*
+--------------------------------------------------------------+
	toggleClassName
+--------------------------------------------------------------+
*/
function toggleClassName(objElement, newStrClass, oldStrClass){
	if(hasClassName(objElement,oldStrClass)){
		removeClassName(objElement,oldStrClass);
		addClassName(objElement,newStrClass);
	}else if(hasClassName(objElement,newStrClass)){
		removeClassName(objElement,newStrClass);
		addClassName(objElement,oldStrClass);
	}
}
/*
+--------------------------------------------------------------+
	getNextSibling
+--------------------------------------------------------------+
*/
function getNextSibling(obj){
	obj=obj.nextSibling;
	while (obj.nodeType!=1){
		obj=obj.nextSibling;
	}
	return obj;
}
/*
+--------------------------------------------------------------+
	getElementsByAttribute
+--------------------------------------------------------------+
*/
function getElementsByAttribute(oElm, strTagName, strAttributeName, strAttributeValue){
	var arrElements = (strTagName == "*" && oElm.all)? oElm.all : oElm.getElementsByTagName(strTagName);
	var arrReturnElements = new Array();
	var oAttributeValue = (typeof strAttributeValue != "undefined")? new RegExp("(^|\\s)" + strAttributeValue + "(\\s|$)") : null;
	var oCurrent;
	var oAttribute;
	for(var i=0; i<arrElements.length; i++){
		oCurrent = arrElements[i];
		oAttribute = oCurrent.getAttribute && oCurrent.getAttribute(strAttributeName);
		if(typeof oAttribute == "string" && oAttribute.length > 0){
			if(typeof strAttributeValue == "undefined" || (oAttributeValue && oAttributeValue.test(oAttribute))){
				arrReturnElements.push(oCurrent);
			}
		}
	}
	return arrReturnElements;
}
/*
+--------------------------------------------------------------+
	getStyle
+--------------------------------------------------------------+
*/
function getStyle(oElm, strCssRule){
	var strValue = "";
	if(document.defaultView && document.defaultView.getComputedStyle){
		strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule);
	}
	else if(oElm.currentStyle){
		strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1){
			return p1.toUpperCase();
		});
		strValue = oElm.currentStyle[strCssRule];
	}
	return strValue;
}
/*
+--------------------------------------------------------------+
	push
+--------------------------------------------------------------+
*/
if(typeof Array.prototype.push != "function"){
	Array.prototype.push = function (){
		for(var i=0; i<arguments.length; i++){
					this[this.length] = arguments[i];
				}
		return this.length;
	}
}
/*
+--------------------------------------------------------------+
	funcoesGerais
+--------------------------------------------------------------+
*/
funcoesGerais = {
	apagaCombos : function(){
		drops = document.body.getElementsByTagName('select');
		for(c=0;c<drops.length;c++){
			drops[c].style.visibility='hidden';
		}
	},

	removeAccents : function(strAccents){
			strAccents = strAccents.split('');
			strAccentsOut = new Array();
			strAccentsLen = strAccents.length;
			var accents = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñŠšŸÿýŽž';
			var accentsOut = ['A','A','A','A','A','A','a','a','a','a','a','a','O','O','O','O','O','O','O','o','o','o','o','o','o','E','E','E','E','e','e','e','e','e','C','c','D','I','I','I','I','i','i','i','i','U','U','U','U','u','u','u','u','N','n','S','s','Y','y','y','Z','z'];
			for (var y = 0; y < strAccentsLen; y++) {
					if (accents.indexOf(strAccents[y]) != -1) {
							strAccentsOut[y] = accentsOut[accents.indexOf(strAccents[y])];
					}
					else
							strAccentsOut[y] = strAccents[y];
			}
			strAccentsOut = strAccentsOut.join('');
			return strAccentsOut;
	},

	reexibeCombos : function(box){
		if ($(box)) {
			drops = $(box).getElementsByTagName('select');
		}else {
			drops = document.body.getElementsByTagName('select');
		}
		for(c=0;c<drops.length;c++){
			drops[c].style.visibility='visible';
		}
	},

	carregaYoutube : function(youtubeLink,largura,altura,paremetros){
		if (paremetros == undefined) {
			paremetros='&amp;hl=pt-br&amp;fs=1&amp;rel=0';
		}
		if (youtubeLink.indexOf('watch?v=') != -1){
			idBegin = youtubeLink.indexOf('watch?v=') + 8;
			if (youtubeLink.indexOf('&',idBegin)) {
				idEnd = youtubeLink.indexOf('&',idBegin);
				youtubeId = youtubeLink.substring(idBegin,idBegin)
			}else {
				youtubeId = youtubeLink.substring(idBegin)
			}
			funcoesGerais.CarregaFlash ('http://www.youtube.com/v/' + youtubeId + paremetros,largura,altura);
		}else {
			if (youtubeLink.indexOf('/v/') != -1){
				idBegin = youtubeLink.indexOf('/v/') + 3;
				idEnd = youtubeLink.indexOf('&',idBegin);
				youtubeId = youtubeLink.substring(idBegin,idEnd);
				funcoesGerais.CarregaFlash ('http://www.youtube.com/v/' + youtubeId + paremetros,largura,altura);
			}else {
				funcoesGerais.CarregaFlash ('http://www.youtube.com/v/' + youtubeLink + paremetros,largura,altura);
			}

		}
	},

	CarregaFlash : function(caminho,largura,altura,wmode){
		//classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
		var objectId = Math.random()*10000;
		objectId = parseInt(objectId);
		document.write('<object data="' + caminho + '" type="application/x-shockwave-flash" width="' + largura + '" height="' + altura + '" id="objectId_' + objectId + '" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0">');
		document.write('<param name="allowFullScreen" value="true" />');
		document.write('<param name="allowscriptaccess" value="always" />');
		document.write('<param name="quality" value="high" />');
		document.write('<param name="scale" value="noscale" />');
		if (wmode == undefined) {
			document.write('<param name="wmode" value="none">');
		}else {
			document.write('<param name="wmode" value="' + wmode + '">');
		}
		document.write('<param name="movie" value="' + caminho + '" />');
		document.write('</object>');
	},

	CarregaFlashDiv : function(caminho,largura,altura,div,wmode){
		var objectId = Math.random()*10000;
		objectId = parseInt(objectId);
		var conteudo = '<object data="' + caminho + '" type="application/x-shockwave-flash" width="' + largura + '" height="' + altura + '" id="objectId_' + objectId + '" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0">';
		conteudo += '<param name="allowFullScreen" value="true" />';
		conteudo += '<param name="allowscriptaccess" value="always" />';
		conteudo += '<param name="quality" value="high" />';
		conteudo += '<param name="scale" value="noscale" />';
		if (wmode == undefined) {
			conteudo += '<param name="wmode" value="none">';
		}else {
			conteudo += '<param name="wmode" value="' + wmode + '">';
		}
		conteudo += '</object>';
		this.AlteraTexto(div,conteudo);
	},

	removeElement: function(elemId) {
		var olddiv = $(elemId);
		document.body.removeChild(olddiv);
	},

	getPageSize: function() {

		var xScroll, yScroll;

		if (window.innerHeight && window.scrollMaxY) {
			xScroll = window.innerWidth + window.scrollMaxX;
			yScroll = window.innerHeight + window.scrollMaxY;
		} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
			xScroll = document.body.scrollWidth;
			yScroll = document.body.scrollHeight;
		} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
			xScroll = document.body.offsetWidth;
			yScroll = document.body.offsetHeight;
		}

		var windowWidth, windowHeight;

		if (self.innerHeight) {	// all except Explorer
			if(document.documentElement.clientWidth){
				windowWidth = document.documentElement.clientWidth;
			} else {
				windowWidth = self.innerWidth;
			}
			windowHeight = self.innerHeight;
		} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
			windowWidth = document.documentElement.clientWidth;
			windowHeight = document.documentElement.clientHeight;
		} else if (document.body) { // other Explorers
			windowWidth = document.body.clientWidth;
			windowHeight = document.body.clientHeight;
		}

		// for small pages with total height less then height of the viewport
		if(yScroll < windowHeight){
			pageHeight = windowHeight;
		} else {
			pageHeight = yScroll;
		}

		// for small pages with total width less then width of the viewport
		if(xScroll < windowWidth){
			pageWidth = xScroll;
		} else {
			pageWidth = windowWidth;
		}

		// Pega altura e largura do scroll
			var scrollW = 0, scrollH = 0;
			if( typeof( window.pageYOffset ) == 'number' ) {
				//Netscape compliant
				scrollH = window.pageYOffset;
				scrollW = window.pageXOffset;
			} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
				//DOM compliant
				scrollH = document.body.scrollTop;
				scrollW = document.body.scrollLeft;
			} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
				//IE6 standards compliant mode
				scrollH = document.documentElement.scrollTop;
				scrollW = document.documentElement.scrollLeft;
			}

		return {pw:pageWidth,ph:pageHeight,ww:windowWidth,wh:windowHeight,sw:scrollW,sh:scrollH};
	},

	centralizaObj: function(obj,onResize) {
		if (onResize){
			window.onresize = function(){
				funcoesGerais.centralizaObj(box)
			}
		}
		medidas = funcoesGerais.getPageSize();
		scrollW = medidas.sw;
		scrollH = medidas.sh;
		centroWgW = medidas.ww/2;
		centroWgH = medidas.wh/2;
		centroObjW = ($(obj).offsetWidth)/2;
		centroObjH = ($(obj).offsetHeight)/2;

		if (this.position == undefined){
			if ((centroWgH-centroObjH)<0){
				pTop = 0;
			} else {
				pTop = (centroWgH-centroObjH)+scrollH;
			}
			if ((centroWgW-centroObjW)<0){
				pLeft = 0;
			} else {
				pLeft = (centroWgW-centroObjW)+scrollW;
			}
		}else {
			pTop = $(position).offsetTop + $(obj).offsetTop + "px";
			pLeft =  $(position).offsetLeft + $(obj).offsetLeft +"px";
		}
		$(obj).style.top=pTop+"px";
		$(obj).style.left=pLeft+"px";
	},

	posicionaBG: function(pTop,pLeft) {
		document.body.style.backgroundPosition= pLeft+"px "+pTop+"px";
	},

	KeyCheck :  function (e) {
		var KeyID = (window.event) ? event.keyCode : e.keyCode;
		if (KeyID==27) {
			LightBox.fechar();
		}
	},

	trocaOpacity : function(opacity, objId) {
		if ($(objId)){
			var objeto = $(objId).style;
			objeto.opacity = (opacity / 100);
			objeto.MozOpacity = (opacity / 100);
			objeto.KhtmlOpacity = (opacity / 100);
			objeto.filter = "alpha(opacity=" + opacity + ")";
		}
	},

	fadeOpacity : function(elemId, fromOpacity, toOpacity, time, fps){/* fps entre 8 - 12 */
		var steps = Math.ceil(fps * (time / 1000));
		var delta = (toOpacity - fromOpacity) / steps;

		this.fadeOpacityStep(elemId, 0, steps, fromOpacity, delta, (time / steps));
	},

	fadeOpacityStep : function(elemId, stepNum, steps, fromOpacity, delta, timePerStep){
		this.trocaOpacity(Math.round(parseInt(fromOpacity) + (delta * stepNum)), elemId);
		if (stepNum < steps) {
			setTimeout("funcoesGerais.fadeOpacityStep('" + elemId + "', " + (stepNum + 1) + ", " + steps + ", " + fromOpacity + ", " + delta + ", " + timePerStep + ");", timePerStep);
		}
	},

	initCustomInput : function(formId,onClassRadio,offClassRadio,onClassCheckbox,offClassCheckbox){
			var agt=navigator.userAgent.toLowerCase();

		this.major = parseInt(navigator.appVersion);
		this.ie     = ((agt.indexOf("msie") != -1) && (agt.indexOf("opera") == -1));
		this.ie3    = (this.ie && (this.major < 4));
		this.ie4    = (this.ie && (this.major == 4) && (agt.indexOf("msie 4")!=-1) );
		this.iemac  = (this.ie && (agt.indexOf("mac")!=-1));

		if( !(this.iemac || this.ie3 || this.ie4) ){
			funcoesGerais.customiseInputs(formId,onClassRadio,offClassRadio,onClassCheckbox,offClassCheckbox);
		}
	},

	addLabelProperties : function(f){
		if(typeof f.getElementsByTagName == 'undefined') return;
		var labels = f.getElementsByTagName("label"), label, elem, i = j = 0;

		while (label = labels[i++]){
			if(typeof label.htmlFor == 'undefined') return;
			elem = document.getElementById(label.htmlFor);

			if(typeof elem == 'undefined'){
				var inputs = label.getElementsByTagName("input");
				if(inputs.length==0){
					continue;
				} else {
					elem=inputs[0];
				}
			} else if(typeof elem.label != 'undefined') {
				continue;
			} else if(typeof elem.length != 'undefined' && elem.length > 1 && elem.nodeName != 'SELECT'){
				for(j=0; j<elem.length; j++){
					elem.item(j).label = label;
				}
			}
			elem.label = label;
		}
	},

	toggleLabelStyle : function(formId, label, onClass, offClass){
		if(!document.getElementById || !label) return;

		var form = document.getElementById(formId);
		if(!form) return;

		if(label.htmlFor) {
			var e = document.getElementById(label.htmlFor);

			if(e.type=="checkbox"){
				e.label.className = (e.label.className==onClass) ? offClass : onClass;
				e.checked = (e.label.className==onClass);
			} else if(e.type=="radio"){
				var radioGroup = form.elements[e.name];
				if(!radioGroup) return;

				for(var i=0; i<radioGroup.length; i++){
					if(radioGroup[i].label){
						radioGroup[i].label.className = ((radioGroup[i].checked=(radioGroup[i].id == e.id))
														&& radioGroup[i].label) ? onClass : offClass;
					}
				}
			}
		}
	},

	customiseInputs : function(formId,onClassRadio,offClassRadio,onClassCheckbox,offClassCheckbox){
		if(!document.getElementById) return;

		var prettyForm = document.getElementById(formId);
		if(!prettyForm) return;

		prettyForm.onreset = function() { funcoesGerais.customiseInputs(formId, onClassRadio, offClassRadio, onClassCheckbox, offClassCheckbox); }

		funcoesGerais.addLabelProperties(prettyForm);

		var inputs = prettyForm.getElementsByTagName('input');
		for (var i=0; i < inputs.length; i++) {

			//RADIO ONLY
			if( (inputs[i].type=="radio") && inputs[i].label && onClassRadio && offClassRadio){
				inputs[i].style.display="none";
				inputs[i].label.className=offClassRadio;
				inputs[i].label.onclick = function (){ funcoesGerais.toggleLabelStyle(formId, this, onClassRadio, offClassRadio); return false; };
				inputs[i].onclick = function (){ funcoesGerais.toggleLabelStyle(formId, this.label, onClassRadio, offClassRadio); };
				if(inputs[i].defaultChecked || inputs[i].checked){ funcoesGerais.toggleLabelStyle(formId, inputs[i].label, onClassRadio, offClassRadio); }
			}

			//CHECKBOX ONLY
			if( (inputs[i].type=="checkbox") && inputs[i].label && onClassCheckbox && offClassCheckbox){
				inputs[i].style.display="none";
				inputs[i].label.className=offClassCheckbox;
				inputs[i].checked = false;
				inputs[i].label.onclick = function (){ funcoesGerais.toggleLabelStyle(formId, this, onClassCheckbox, offClassCheckbox); return false; };
				inputs[i].onclick = function (){ funcoesGerais.toggleLabelStyle(formId, this.label, onClassCheckbox, offClassCheckbox); };
				if(inputs[i].defaultChecked || inputs[i].checked){ funcoesGerais.toggleLabelStyle(formId, inputs[i].label, onClassCheckbox, offClassCheckbox); }
			}

			if( (inputs[i].type=="checkbox") || (inputs[i].type=="radio") && inputs[i].label ){
				if(!this.ie){
					inputs[i].label.style.margin = "1px";
					inputs[i].onfocus = function (){ this.label.style.border = "1px dotted #333"; this.label.style.margin="0px"; return false; };
					inputs[i].onblur  = function (){ this.label.style.border = "none"; this.label.style.margin="1px"; return false; };
				}
			}
		}
	}
}
/*
+--------------------------------------------------------------+
	TabsControl
+--------------------------------------------------------------+
*/
TabsControl = {
	start :  function (tabsContainer,tabsContainerContent) {
		var tabsContainer = getElementsByClassName(tabsContainer);
			for (var i = 0; i < tabsContainer.length; i++) {
			var ulTabs = tabsContainer[i].getElementsByTagName('ul');
			var liTabs = ulTabs[0].getElementsByTagName('li');

			for (var j = 0; j < liTabs.length; j++) {
				var aTabs = liTabs[j].getElementsByTagName('a');
				var txtHref = aTabs[0].innerHTML.replace(/<[^>]+>/g,"");
				txtHref = txtHref.replace(/\s+/g,"_");
				txtHref = txtHref.replace(/^_+/g,"");
				txtHref = funcoesGerais.removeAccents(txtHref)
				aTabs[0].href = "#" + txtHref;
				if (window.location.hash == aTabs[0].getAttribute('href')){
					var liTabSelected = liTabs[j];
				}
				liTabs[j].value = j;
				liTabs[j].onclick = function(){
					TabsControl.toggle(this,tabsContainerContent);
				}
			};
			if(liTabSelected != undefined){
				TabsControl.toggle(liTabSelected,tabsContainerContent);
			}
		}
	},
	toggle :  function (selectTab,tabsContainerContent) {
		var indice = parseInt(selectTab.value);
		var ulTabs = selectTab.parentNode;
		var liTabs = ulTabs.getElementsByTagName('li');
		for (var i=0; i<liTabs.length; i++) {
			liTabs[i].className = '';
		}
		selectTab.className = 'selected';
		var tabsContainer = ulTabs.parentNode;
		content = getElementsByClassName(tabsContainerContent, 'div', tabsContainer);
		for (var i=0; i<content.length; i++) {
			content[i].style.display = 'none';
		}
		content[indice].style.display = '';
	}
}
/*
+--------------------------------------------------------------+
	lightbox
+--------------------------------------------------------------+
*/
lightbox = {
	contentBox : '',
	divBox : '',
	position : '',
	divOpacity : '',

	abrir : function(box, fadeColor, position){

		medidas = funcoesGerais.getPageSize();

		this.position = position;
		if ($('opacity')) {
			this.fechar();
		}

		var objBody = document.getElementsByTagName("body").item(0);
		if (fadeColor == undefined) {
			fadeColor="#000000";
		}

		document.onkeyup = funcoesGerais.KeyCheck;

		window.onresize = function(){
			lightbox.rePosiciona(box)
		}

		window.onscroll = function (e) {
			if($(box).offsetHeight < medidas.ww){
				funcoesGerais.centralizaObj(box);
			}
		}

		this.divOpacity = document.createElement("a");
		with(this.divOpacity){
			setAttribute('id','opacity');
			onclick = function(){lightbox.fechar()}
			with (style){
				cursor="default";
				position="absolute";
				zIndex=888;
				top="0px";
				left="0px";
				lineHeight="0px";
				background=fadeColor;
				width=medidas.pw+"px";
				height=medidas.ph+"px";
			}
		}
		funcoesGerais.trocaOpacity(0, 'opacity')
		objBody.appendChild(this.divOpacity);
		funcoesGerais.apagaCombos();
		funcoesGerais.reexibeCombos(box);

		this.divBox = $(box);
		with (this.divBox.style) {
			filter = 'alpha(opacity=0)';
			opacity = '0';
			display = '';
			position = "absolute";
			zIndex = 999;
		}

		scrollW = medidas.sw;
		scrollH = medidas.sh;
		centroWgW = medidas.ww/2;
		centroWgH = medidas.wh/2;
		centroObjW = (this.divBox.offsetWidth)/2;
		centroObjH = (this.divBox.offsetHeight)/2;

		if (this.position == undefined){
			if ((centroWgH-centroObjH)<0){
				pTop = 0;
			} else {
				pTop = (centroWgH-centroObjH)+scrollH;
			}
			if ((centroWgW-centroObjW)<0){
				pLeft = 0;
			} else {
				pLeft = (centroWgW-centroObjW)+scrollW;
			}
		}else {
			pTop = $(position).offsetTop + this.divBox.offsetTop + "px";
			pLeft =  $(position).offsetLeft + this.divBox.offsetLeft +"px";
		}
		this.divBox.style.top=pTop+"px";
		this.divBox.style.left=pLeft+"px";

		funcoesGerais.fadeOpacity('opacity', 0, 70, 600, 10);
		funcoesGerais.fadeOpacity(box, 0, 100, 600, 10);
	},

	fechar : function(){
		var objBody = document.getElementsByTagName("body").item(0);
		if ($('opacity')){
			funcoesGerais.removeElement('opacity');
		}
		if (this.position  =! undefined) {
			this.divBox.style.top = '';
			this.divBox.style.left =  '';
		}
		funcoesGerais.reexibeCombos();
		this.divBox.style.display = 'none';
		document.onkeyup = '';
		window.onresize = '';
		window.onscroll = '';
	},

	rePosiciona :  function (obj) {
		funcoesGerais.centralizaObj(obj);
		with(this.divOpacity.style){
			width = funcoesGerais.getPageSize().pw+"px";
			height = funcoesGerais.getPageSize().ph+"px";
		}
	}
}
/*
+--------------------------------------------------------------+
	Menu - open/close
+--------------------------------------------------------------+
*/
function menuOpenClose(obj) {
	var ullist = obj.parentNode.getElementsByTagName("ul");
	obj.innerHTML = (obj.innerHTML.indexOf("[+]")==0) ? obj.innerHTML.replace("[+]", "[-]") : obj.innerHTML.replace("[-]", "[+]");
	ullist[0].style.display = (ullist[0].style.display == "none") ? '' : 'none';
}




/*
CSS Browser Selector v0.3.4 (Sep 29, 2009)
Rafael Lima (http://rafael.adm.br)
http://rafael.adm.br/css_browser_selector
License: http://creativecommons.org/licenses/by/2.5/
Contributors: http://rafael.adm.br/css_browser_selector#contributors

Available OS Codes [os]:
	* win - Microsoft Windows
	* linux - Linux (x11 and linux)
	* mac - Mac OS
	* freebsd - FreeBSD
	* ipod - iPod Touch
	* iphone - iPhone
	* webtv - WebTV
	* mobile - J2ME Devices (ex: Opera mini)

Available Browser Codes [browser]:
	* ie - Internet Explorer (All versions)
	* ie8 - Internet Explorer 8.x
	* ie7 - Internet Explorer 7.x
	* ie6 - Internet Explorer 6.x
	* ie5 - Internet Explorer 5.x
	* gecko - Mozilla, Firefox (all versions), Camino
	* ff2 - Firefox 2
	* ff3 - Firefox 3
	* ff3_5 - Firefox 3.5 new
	* opera - Opera (All versions)
	* opera8 - Opera 8.x
	* opera9 - Opera 9.x
	* opera10 - Opera 10.x
	* konqueror - Konqueror
	* webkit or safari - Safari, NetNewsWire, OmniWeb, Shiira, Google Chrome
	* safari3 - Safari 3.x
	* chrome - Google Chrome
	* iron - SRWare Iron new
*/
function css_browser_selector(u){var ua = u.toLowerCase(),is=function(t){return ua.indexOf(t)>-1;},g='gecko',w='webkit',s='safari',o='opera',h=document.getElementsByTagName('html')[0],b=[(!(/opera|webtv/i.test(ua))&&/msie\s(\d)/.test(ua))?('ie ie'+RegExp.$1):is('firefox/2')?g+' ff2':is('firefox/3.5')?g+' ff3 ff3_5':is('firefox/3')?g+' ff3':is('gecko/')?g:is('opera')?o+(/version\/(\d+)/.test(ua)?' '+o+RegExp.$1:(/opera(\s|\/)(\d+)/.test(ua)?' '+o+RegExp.$2:'')):is('konqueror')?'konqueror':is('chrome')?w+' chrome':is('iron')?w+' iron':is('applewebkit/')?w+' '+s+(/version\/(\d+)/.test(ua)?' '+s+RegExp.$1:''):is('mozilla/')?g:'',is('j2me')?'mobile':is('iphone')?'iphone':is('ipod')?'ipod':is('mac')?'mac':is('darwin')?'mac':is('webtv')?'webtv':is('win')?'win':is('freebsd')?'freebsd':(is('x11')||is('linux'))?'linux':'','js']; c = b.join(' '); h.className += ' '+c; return c;}; css_browser_selector(navigator.userAgent);