/*Classe de objetos específicos para este website*/

var libAK = {

	ajax : function(){
		var _httpRqst;		
		try{ 
			_httpRqst = new XMLHttpRequest();
		}catch (e){			
			try{
				_httpRqst = new ActiveXObject("Msxml2.XMLHTTP");
			}catch (e){
				try{
					_httpRqst = new ActiveXObject("Microsoft.XMLHTTP");
				}catch (e){
					alert("Seu navegador nao da suporte a tecnologia AJAX");
					return false;
				}
			}
		}		
		return _httpRqst;
	},
	
	ajaxGET : function(options){	
		//Propriedades do objeto
		var properties = {
			url : null,
			target : null,
			preload : null,
			showAlpha : true,
			alphaInterval : 10,
			opacityLevel : 100
		}
		//abstrai o objeto
		var me = this;		
		//verifica propriedades setadas
		for(var optName in properties){
			this[optName] = (options !== undefined && options[optName] !== undefined) ? options[optName] : properties[optName];
		}		
		//instancia o onjeto ajax
		var _ajax = new this.ajax();		
		//oculta o gif preload e limpa o conteudo da target
		if(document.getElementById(me.preload))document.getElementById(me.preload).style['display']='block';
		document.getElementById(me.target).innerHTML='';		
		//define o alvo como transparente
		with(document.getElementById(me.target)){
			style['display']='none';
			style['opacity'] = .0;
			style['filter'] = 'alpha(opacity=0)';
		}	
		//carrega o conteudo
		_ajax.onreadystatechange = function(){
			if(_ajax.readyState==4 && _ajax.status==200){
				if(document.getElementById(me.preload))document.getElementById(me.preload).style['display']='none';
				with(document.getElementById(me.target)){
					innerHTML = _ajax.responseText;
					libAK.doScript(_ajax.responseText);
					style['display']='block';
				}
				//Efeito de transparencia
				if(me.showAlpha){
					//aplica opacidade no alvo graduativamente
					var i=0;
					var _interval = setInterval(function(){
						if(i<me.opacityLevel){
							with(document.getElementById(me.target)){
								style['opacity'] = (i/100);
								style['filter'] = 'alpha(opacity='+i+')';
							}
							i++;
						}else{
							i=0;
							clearInterval(_interval);								
						}
					}
					,me.alphaInterval)
				}else{
					//aplica opacidade no alvo de uma unica vez
					with(document.getElementById(me.target)){
						style['opacity'] = 1;
						style['filter'] = 'alpha(opacity=100)';
					}
				}
			}
		}
		_ajax.open('GET', me.url, true);
		_ajax.send(null);
		return false;
	},	
	
	ajaxPOST : function(options){
		//Propriedades do objeto
		var properties = {
			url : null,
			form : null,
			preload : null,
			postBack : null
		}
		//abstrai o objeto
		var me = this;		
		//verifica propriedades setadas
		for(var optName in properties){
			this[optName] = (options !== undefined && options[optName] !== undefined) ? options[optName] : properties[optName];
		}		
		//instancia o onjeto ajax
		var _ajax = new this.ajax();
		var _frm = document.getElementById(me.form);
		var _tagNames = ['input','select','textarea'];
		var _params = '';		
		//percorre os tagNames declarados
		for(i=0; i<_tagNames.length; i++){
			var _obj = _frm.getElementsByTagName(_tagNames[i]);
			for(j=0; j<_obj.length; j++){
				if(_obj[j].type=='radio' || _obj[j].type=='checkbox'){
					if(_obj[j].checked) _params += _obj[j].id + '=' + escape(_obj[j].value) + '&';
				}else{
					if(_obj[j].value!='') _params += _obj[j].id + '=' + escape(_obj[j].value) + '&';
				}
			}
		}
		_params = _params.substr(0, _params.length-1);		
		//EXECUTA ENQUANTO PROCESSA
		if(document.getElementById(me.preload))document.getElementById(me.preload).style['display']='block';
		_ajax.onreadystatechange = function(){			
			if (_ajax.status==200 && _ajax.readyState==4){
				if(document.getElementById(me.preload))document.getElementById(me.preload).style['display']='none';
				eval(me.postBack);
			}
		}
		_ajax.open("POST", me.url, true);
		_ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		_ajax.setRequestHeader("Content-length", _params.length);
		_ajax.send(_params);
		return false;
	},
	
	doScript : function(texto){
    var ini, pos_src, fim, codigo;
    var objScript = null;
    ini = texto.indexOf('<script', 0);
    while (ini!=-1){
			var objScript = document.createElement("script");
			//Busca se tem algum src a partir do inicio do script
			pos_src = texto.indexOf(' src', ini)
			ini = texto.indexOf('>', ini) + 1;
			//Verifica se este e um bloco de script ou include para um arquivo de scripts
			if (pos_src < ini && pos_src >=0){//Se encontrou um "src" dentro da tag script, esta e um include de um arquivo script
					//Marca como sendo o inicio do nome do arquivo para depois do src
					ini = pos_src + 4;
					//Procura pelo ponto do nome da extencao do arquivo e marca para depois dele
					fim = texto.indexOf('.', ini)+4;
					//Pega o nome do arquivo
					codigo = texto.substring(ini,fim);
					//Elimina do nome do arquivo os caracteres que possam ter sido pegos por engano
					codigo = codigo.replace("=","").replace(" ","").replace("\"","").replace("\"","").replace("\'","").replace("\'","").replace(">","");
					// Adiciona o arquivo de script ao objeto que sera adicionado ao documento
					objScript.src = codigo;
			}else{//Se nao encontrou um "src" dentro da tag script, esta e um bloco de codigo script
					// Procura o final do script
					fim = texto.indexOf('</script>', ini);
					// Extrai apenas o script
					codigo = texto.substring(ini,fim);
					// Adiciona o bloco de script ao objeto que sera adicionado ao documento
					objScript.text = codigo;
			}
			//Adiciona o script ao documento
			document.body.appendChild(objScript);
			// Procura a proxima tag de <script
			ini = texto.indexOf('<script', fim);
			//Limpa o objeto de script
			objScript = null;
    }
	},
	
	getPos : function(elemID){
    var offsetTrail = document.getElementById(elemID);
    var offsetLeft = 0;
    var offsetTop = 0;
    while (offsetTrail) {
        offsetLeft += offsetTrail.offsetLeft;
        offsetTop += offsetTrail.offsetTop;
        offsetTrail = offsetTrail.offsetParent;
    }
    if (navigator.userAgent.indexOf("Mac") != -1 && 
        typeof document.body.leftMargin != "undefined") {
        offsetLeft += document.body.leftMargin;
        offsetTop += document.body.topMargin;
    }
    return {top:offsetTop, left:offsetLeft};
	},
	
	move : function(elemID, moveTop){		
		var posIni = {top:this.getPos(elemID).top, left:this.getPos(elemID).left};
		var _element = document.getElementById(elemID);				
		var addPosTop = 0;
		_element.style.position = 'absolute';
		var moveIn = setInterval(function(){	
			//posicao top
			if((posIni.top+addPosTop) > moveTop){
				_element.style.top = (posIni.top+addPosTop) + 'px';
				_element.style.left = posIni.left + 'px';
				addPosTop = addPosTop - 8;
				
			}else{
				_element.style.top = moveTop + 'px';
				clearInterval(moveIn);
			}
		},10);
	},
	
	slide : function(elemID, pictures, delay){		
		var _delay = ((delay*1000)>5000) ? 5000 : delay*1000;			

		var pnl = document.createElement('div');
				pnl.style.position = 'absolute';
				pnl.style['width'] = 'inherit';
				pnl.style['height'] = 'inherit';
				pnl.style['background'] = 'url('+ pictures[0] + ') no-repeat';
				document.getElementById(elemID).appendChild(pnl);			
				
		//cria a div auxiliar
		var pnl_aux = document.createElement('div');
				pnl_aux.style.position = 'absolute';
				pnl_aux.style['width'] = 'inherit';
				pnl_aux.style['height'] = 'inherit';
				pnl_aux.style['background'] = 'url('+ pictures[1] + ')  no-repeat';				
				document.getElementById(elemID).appendChild(pnl_aux);
				
				pnl_aux.style['opacity'] = .0;
				pnl_aux.style['filter'] = 'alpha(opacity=0)';			
				

		if(pictures.length<2)return false			
		//transição das imagens
		var img_idx=0;
		
		var _transition = setInterval(function(){				
			if (img_idx<(pictures.length)){
				var _src1 = (pictures[img_idx]!=undefined) ? pictures[img_idx] : pictures[0];				
				pnl.style['background'] = 'url('+ _src1 + ') no-repeat';
				img_idx++;
				var _src2 = (pictures[img_idx]!=undefined) ? pictures[img_idx] : pictures[0];				
				pnl_aux.style['background'] = 'url('+ _src2 + ') no-repeat';
				
				//efeito de transparecia
				var inc=0;			
				var _alpha = setInterval(function(){
					if(inc<100){
						pnl_aux.style['opacity'] = (inc/100);
						pnl.style['opacity'] = (1-(inc/100));						
						//IE 7 e 8
						pnl.style['filter'] = 'alpha(opacity=' + (100-inc) + ')';						
						pnl_aux.style['filter'] = 'alpha(opacity=' + inc + ')';						
						inc++;
					}else{						
						clearInterval(_alpha);
					}
				},1);
			}else{
				img_idx=0;				
			}
		},_delay);			
	},
	
	scroller : function(options){
		//Propriedades do objeto
		var properties = {
			targetID : null,
			contentID : null,
			width : 200,
			height : 200,
			delay : 25,
			cmdScrollTop : null,
			cmdScrollBottom : null
		}
		//abstrai o objeto
		var me = this;		
		//verifica propriedades setadas
		for(var optName in properties){
			this[optName] = (options !== undefined && options[optName] !== undefined) ? options[optName] : properties[optName];
		}

		var _target = document.getElementById(me.targetID);
		with(_target){
			style['postion'] = 'relative';
			style['width'] = me.width + 'px';
			style['height'] = me.height + 'px';		
			style['overflow'] = 'hidden';
		}
		
		var _pnl = document.getElementById(me.contentID);
		with(_pnl){
			style['position'] = 'relative';
		}
		
		var _pnlPosTopIni = _pnl.clientTop;

		var _scrlTop = document.getElementById(me.cmdScrollTop);
		_scrlTop.onmouseover = function(){
			var _scrolling = setInterval(function(){
				if(_pnlPosTopIni<0){
					_pnl.style['top'] = _pnlPosTopIni + 'px';
					_pnlPosTopIni++;
				}
			},me.delay);
			this.onmouseout = function(){ clearInterval(_scrolling); }
		}
		
		var _scrlBottom = document.getElementById(me.cmdScrollBottom);
		_scrlBottom.onmouseover = function(){			
			var _scrolling = setInterval(function(){				
				if((_pnlPosTopIni+(_pnl.clientHeight-100))>0){
					_pnl.style['top'] = (_pnlPosTopIni) + 'px';
					_pnlPosTopIni--;
				}
			},me.delay);
			this.onmouseout = function(){ clearInterval(_scrolling); }
		}		
	}
}
