/* **************************************************************
	ONLOAD
- Seta thisPage com propriedades da Pagina atual
- Adiciona Links Externos
- Adiciona Evento Link Hover
- Se browser for IE Anexa Javascripts Auxiliares
************************************************************** */
function executeOnLoad(){
    thisPage = new objPageInfo(xjsLocation);
	setTargetBlank();
	setLinkHover();
	if(browser.type == 'IE' && browser.version == '6') { addHoverSuport_v2('selectDHTML', 'li'); }
	initiDHTMLSelects('selectDHTML');
}
onload = executeOnLoad;





/* **************************************************************
	ONRESIZE
- Atualiza propriedades da Pagina atual
- Se modal estiver aberto, redimensiona a 'sombra' e respectivo
	iframe(IE6)
************************************************************** */
function executeOnResize(){ 
	thisPage = new objPageInfo(xjsLocation); 
	if(ModalIsOpen == true) { 
		extendToNode('divShadow', 'Screen', 'yes', 'yes'); 
		setModalCoords();
		if(browser.type == 'IE' && browser.version == '6') { searchAndInsertIframe('div', 'iFrame'); }
	}
	
}
onresize = executeOnResize;





/* **************************************************************
	ONKEYDOWN
- Atualiza 'xjsLastKeyDown' ao apertar alguma tecla
- Há uma lista de testes com endereços de telas onde, se a tecla
	pressionada for 'enter', irá disparar a função activeOnEnter()
************************************************************** */
function executeOnKeyDown(e) { 
    xjsLastKeyDown = checkKeycode(e); 
    if(xjsLocation.indexOf('exemplos/ModeloContato.htm') != -1){ if(xjsLastKeyDown == 13) { activeOnEnter(); } }
}
document.onkeydown = executeOnKeyDown;





/* **************************************************************
	ONKEYPRESS
- Inibe o Som Produzido pelo IE ao Pressionar Enter
************************************************************** */
function executeOnKeyPress() {
	if(MonitoreEnter == true){
	    if(browser.type == 'IE' && xjsLastKeyDown == 13) { return false; }
} }
document.onkeypress = executeOnKeyPress;





/* **************************************************************
	ONMOUSEDOWN
- Percebe quando o Mouse for Clicado
************************************************************** */
function executeOnMouseDown() {
	setTimeout("closeDHTMLSelect()", 100);
}
document.onmousedown = executeOnMouseDown;





/* **************************************************************
	ONMOUSEUP
- Percebe quando o Mouse for Clicado
************************************************************** */
function executeOnMouseUp() {
}
//document.onmouseup = executeOnMouseUp;








/* **************************************************************
Declaração de javascripts especifícos
************************************************************** */
function showHideModal(toDo) {
	if(toDo == 'show') {
		ModalIsOpen = true;

	    setDisplay('divContainModal', 'block');

	    if(id('isLoadingModal') != null && id('isLoadingModal').style.display != 'none') { 
	        id('isLoadingModal').style.display = 'block'; 
	    }
	    else { id('isLoading').style.display = 'block'; }
	    
		setModalCoords();
		id('divModal').style.marginTop = '-3px';

		setModalContent(arguments);
		
		id('contentFlash').style.visibility = 'hidden';
	}
	else if(toDo == 'hide') {
		ModalIsOpen = false;
		showHideShadow(toDo);
		id('divModal').innerHTML = '<div id="isLoadingModal"></div>';
		setDisplay('divContainModal', 'none');
		id('contentFlash').style.visibility = 'visible';
	}
}
/* **************************************************************
Esta Função é responsavel pela criação do conteúdo do Modal
************************************************************** */
function setModalContent(param) {
    var modalType = param[1];
	var modalParam = param[2];

	RequestConfig.setConfig('POST', false, false, '', '');
    RequestConfig.setState(4, 'onLoadModal();', true);

	var urlModal = '../modal/' + modalType + '.aspx?' + modalParam;
	XmlHttp.LoadPage(urlModal, modalParam, 'divModal');
}
/* **************************************************************
Esta é a Função que será Executada ao Ser Carregado o Conteúdo
Do Modal
************************************************************** */
function onLoadModal() {
    setDisplay('divContainModal', 'block');
    setModalCoords();

	id('divModal').style.marginTop = '-3px';
	
	if(id('isLoadingModal')) { id('isLoadingModal').style.display = 'none'; }
    else { id('isLoading').style.display = 'none'; }
	
	id('isLoading').style.display = 'none';
    initiDHTMLSelects('selectDHTML');

	// Se for IE, Reinicia Objetos de Ajax
    if(browser.type == 'IE') {
        RequestConfig = new objXmlHttpRequestConfig();
        XmlHttp = new objXmlHttpRequest(RequestConfig);
    }
}






function btnFiltrar(strModal) {
    var strOrderBy = "";
    var isCateg = false;
    var isCliente = false;
    var isAno = false;
    var strParam = '';

    // Verifica qual o Ordenador da Galeria
    if(!id('selecCateg_Text')) { strOrderBy = "categ"; }
    else if(id('selecCateg_Text').value != 'Todas as categorias') { isCateg = true; }
    
    if(!id('selecClientes_Text')) { strOrderBy = "clientes"; }
    else if(id('selecClientes_Text').value != 'Todos clientes') { isCliente = true; }
    
    if(!id('selecAnos_Text')) { strOrderBy = "anos"; }
    else if(id('selecAnos_Text').value != 'Todos os anos') {isAno = true; }

    
    strParam += 'orderby=' + strOrderBy;
    if(strOrderBy == 'anos') {
        strParam += '&ano=' + id('inptHiden').value;
    }
    else { strParam += '&' + strOrderBy + '=' + id('inptHiden').value; }
    
    
    if(isCateg == false && isCliente == false && isAno == false) { }
    else {
        if(isCateg == true) { 
            //if(strParam != "") { strParam += "&"; }
            strParam += '&categ=' + id('selecCateg_Text').value; 
        }
        if(isCliente == true) { 
            //if(strParam != "") { strParam += "&"; }
            strParam += '&cliente=' + id('selecClientes_Text').value;
        }
        if(isAno == true) { 
            //if(strParam != "") { strParam += "&"; }
            strParam += '&ano=' + id('selecAnos_Text').value;
        }
    }

    showHideModal('show', strModal, strParam);
}








var xjs_FadeQuadroPSegundo = 20;
var xjs_FadeTimeRefresh = 1000/xjs_FadeQuadroPSegundo;
var xjs_FadeAlphaAtual = 0;
var xjs_FadeAlphaAdd = 0;
var xjs_FadeAction;


function xjsFadeIn(idObj, time) {
    Obj = id(idObj);
    xjs_FadeAlphaAtual = 0;
    xjs_FadeAlphaAdd = 100 / ((time/1000) * xjs_FadeQuadroPSegundo);
    xjs_FadeAction = setTimeout('xjsFadeInAction(Obj)', xjs_FadeTimeRefresh);
}

function xjsFadeInAction(obj, alpha) {
    setAlpha(obj, xjs_FadeAlphaAtual);
    if(xjs_FadeAlphaAtual >= 100) { clearInterval(xjs_FadeAction); }
    else { 
        xjs_FadeAlphaAtual += xjs_FadeAlphaAdd; 
        xjs_FadeAction = setTimeout('xjsFadeInAction(Obj)', xjs_FadeTimeRefresh);
    }
}

function setAlpha(obj, alpha) {
    if(alpha >= 100) { alpha = 100; }
    if(browser.type == 'IE') { obj.style.filter = "alpha(opacity="+ alpha +")"; }
	else { obj.style.opacity = alpha/100; }
}
















/* **************************************************************
SELECT DHTML
************************************************************** */
xjsStr_SelectDHTMLClass = 'selectDHTML';
xjsBool_IgnoreClick = false;
xjs_OpenDHTMLSelect = null;

function initiDHTMLSelects() {
	// Corrige Hover para IE6
	if(browser.type == 'IE'&& browser.version == '6'){ addHoverSuport_byClass(xjsStr_SelectDHTMLClass, 'li'); }

	var getAllSelectsDHTML = getElementsByClassName(xjsStr_SelectDHTMLClass);
	
	for(i=0; i<getAllSelectsDHTML.length; i++) {
		// Resgata ID do Select Atual
		idObject = getAllSelectsDHTML[i].id;
		objSelect = id(idObject);
		objSelect.style.zIndex = '1';
		
		objSelectBorder = getFirstTagChildOfID(idObject, 'div')

		// Adiciona Evento Para Abrir e Fechar Select
		if (document.attachEvent) { objSelectBorder.attachEvent('onclick', openCloseDHTMLSelect); }
		else { objSelectBorder.setAttribute('onclick', 'openCloseDHTMLSelect(this)'); }
		
		// Adiciona Eventos para cada Option setar os Valores
		allOptions = getTagsChidOfObj(objSelect, 'li');
		for(j=0; j<allOptions.length; j++)
		{
			if (document.attachEvent) { allOptions[j].attachEvent('onclick', selectedDHTMLValueSet); }
			else { allOptions[j].setAttribute('onclick', 'selectedDHTMLValueSet(this)'); }
		}
	}
}


function closeDHTMLSelect() {
	if(xjsBool_IgnoreClick == false) {
		if(xjs_OpenDHTMLSelect != null) { 
			xjs_OpenDHTMLSelect.className = xjsStr_SelectDHTMLClass; 
			setZIndex(xjs_OpenDHTMLSelect, 1);
			xjs_OpenDHTMLSelect = null; 
		}
	}
	else { xjsBool_IgnoreClick = false; }
}


function openCloseDHTMLSelect(obj) {
	var atualClass;
	var isOpen;

	// Seleciona Objeto ID Pai do Select e sua Classe Atual
	if(document.attachEvent) {
		var obj = (obj.srcElement) ? obj.srcElement : obj.target;
		isThis = false;
		force = 'obj';

		while(isThis != true) {
			force += '.parentNode';
			obj = eval(force);

			if(obj.className.indexOf('selectBorder') != -1) { 
				isThis = true;
				atualClass = obj.parentNode.className;
				obj = obj.parentNode;
	} } }
	else { 
		atualClass = obj.parentNode.className; 
		obj = obj.parentNode;
	}

	// Verifica se Está Aberto
	if(atualClass.indexOf(xjsStr_SelectDHTMLClass + '_open') != -1) { isOpen = true; }
	else { isOpen = false; }

	// Verifica se Há Outro Select Aberto, Havendo, Fecha-o
	if(isOpen == false && xjs_OpenDHTMLSelect != null && xjs_OpenDHTMLSelect != obj) { 
		xjs_OpenDHTMLSelect.className = xjsStr_SelectDHTMLClass; 
		downZIndex(xjs_OpenDHTMLSelect); 
		xjs_OpenDHTMLSelect = null;
	}

	// Abre ou Fecha Select Atual
	if(isOpen == true) { 
		obj.className = xjsStr_SelectDHTMLClass; 
		xjs_OpenDHTMLSelect = null; 
		setZIndex(obj, 1);
	}
	else if (isOpen == false) { 
		obj.className += ' ' + xjsStr_SelectDHTMLClass + '_open'; 
		xjs_OpenDHTMLSelect = obj; 
		xjsBool_IgnoreClick = true; 
		setZIndex(obj, 2);
	}
}


function selectedDHTMLValueSet(obj) {
	if(document.attachEvent) { var obj = (obj.srcElement) ? obj.srcElement : obj.target; }
    
	thisValue = obj.title;
	idObject = obj.parentNode.parentNode.id;
    
	inputs = getTagsChildOfID('input', idObject);
	inputs[0].value = obj.innerHTML;
	inputs[1].value = thisValue;

	closeDHTMLSelect();
}


/* **************************************************************
Retorna apenas o Primeira Tag dada, filha de um ID
************************************************************** */
function getFirstTagChildOfID(idName, tagName) {
	var objChilds = getTagsChildOfID(tagName, idName);
	return objChilds[0];
}
/* **************************************************************
Retorna apenas Objetos de uma Tag de uma Coleção Passada
************************************************************** */
function getTagsChidOfObj(objCollection, tagName) {
	var objReturn = objCollection.getElementsByTagName(tagName);
	return objReturn;
}
function setZIndex(ObjIDName, value) {
	// Se recebe 3 argumentos...
	if(arguments.length == 3) {
		var ieClassName = arguments[2];
		// Seleciona Objeto ID Pai do Select e sua Classe Atual
		if(document.attachEvent) {
			var obj = (obj.srcElement) ? obj.srcElement : obj.target;
			isThis = false;	force = 'obj';
			// Testa Elementos Até Encontrar Objeto que Disparou a Ação
			while(isThis != true) {
				force += '.parentNode';	obj = eval(force);
				if(obj.className.indexOf(ieClassName) != -1) { 
					isThis = true;
					atualClass = obj.parentNode.className;
					ObjIDName = obj.parentNode;
	} } } }
	if(id(ObjIDName)) { id(ObjIDName).style.zIndex = value; }
	else { 
		if(ObjIDName.length == undefined) { ObjIDName.style.zIndex = value; }
		else {
			for(i=0; i<ObjIDName.length; i++) { ObjIDName[i].style.zIndex = value;	}
} } }
function addHoverSuport_byClass(className, tagName) {
	allClassNodes = getTagsChildOfClass(tagName, className, 'length');
	for(i=0; i<allClassNodes; i++) {
		thisIEHoverElements = getTagsChildOfClass(tagName, className, i);
		for(ii=0; ii<thisIEHoverElements.length; ii++) {
			thisIEHoverElements[ii].onmouseover=function() { this.className += " hover"; }
			thisIEHoverElements[ii].onmouseout=function() { this.className = this.className.replace(" hover", ""); }
} } }
