/*************
Funcoes do Ajax
**************/
// Testa se o browser suporta o XMLHttpRequest.
try{
    xmlhttp = new XMLHttpRequest();
}catch(ee){
    try{
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
        try{
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }catch(E){
            xmlhttp = false;
        }
    }
}
//xmlhttp = false;

//testando({vars:{teste:'meuTeste',id:'um ID'},functions:{teste:'Chama Function'}});

/**
* @return void
* @param param: valores:
*               execBefore: uma string que recebera um eval() antes de fazer o pedido pro servidor
*               execAfter: uma string que recebera um eval() depois de fazer o pedido pro servidor
*               method: O metodo que os parametros seerão mandados pro servidor, GET ou POST; DEFAULT = GET.
*               url: a url que sera chamada
*               idTarget: id do elemento HTML que recebera a string que o servidor retornar
* @desc Faz um pedido ao servidor e coloca o resultado (string) em um elemento HTML
* @call ajaxRun({idTarget:"ID_ELEMENTO",url:"URL_CHAMADA",method:"POST",execBefore:"alert('Start')",execAfter:"alert('End')"})
**/

/**
 * lockRequest: TRUE impede que a funcão ajaxRun faca novas requisicoes ao server
**/
var lockRequest = false;
function ajaxRun(param){
    // Testa se lockRequest esta liberado para um novo pedido
    if(lockRequest == false) {
        // Trava lockRequest para que novos pedidos não sejam executados
        lockRequest = true;
        // se execBefore for passado executa a string (comando ou funcao) antes de comecar o pedido pra server
        if(param.execBefore) {
            eval(param.execBefore);
        }
        // Se o metodo não for passado assumir GET
        if(!param.method) {
            param.method = "GET";
        }
        // Transforma a string do metodo para uppercase
        param.method = param.method.toUpperCase();

        // Testa se o browser suporta XMLHttpRequest
        if(xmlhttp) {
            // se suportar abre a conexao
            // Abre conexao
            //xmlhttp.abort();
            xmlhttp.open(param.method,param.url,true);
            xmlhttp.setRequestHeader ("Content-Type", "application/x-www-form-urlencoded");
            //Funcao para tratamento do retorno
            xmlhttp.onreadystatechange=function() {
                if (xmlhttp.readyState==4){
                    //Mostra o HTML recebido
                    retorno = unescape(xmlhttp.responseText.replace(/\+/g," "))

                    // coloca a string retornada pelo servidor (retorno) no elemento HTML com o id == param.idTarget
                    //alert(document.getElementById(param.idTarget) + " - " + param.idTarget);
                    document.getElementById(param.idTarget).innerHTML=retorno;
                    // se execAfter for passado executa a string (comando ou funcao) depois que o retorno foi colocado no elemento

                    // Libera lockRequest para novos pedidos
                    lockRequest = false;
                    if(param.execAfter) {
                        eval(param.execAfter);
                    }
                }
            }
            //Executa
            if(param.method == "POST" && param.strPost) {
                sendPost = param.strPost;
            } else {
                sendPost = null;
            }
            xmlhttp.send(sendPost)
        } else {
            // se nao suportar envia para a url passada
            window.location = param.url.replace("&ajax=1","");
        }
    } else {
        //contentLoading("Por favor, aguarde");
        ;
    }
}


function browser () {
	var b = navigator.appName;
	var v = this.version = navigator.appVersion;
	var ua = navigator.userAgent.toLowerCase();
	this.v = parseInt(v);
	this.safari = ua.indexOf("safari")>-1;	// always check for safari & opera
	this.opera = ua.indexOf("opera")>-1;	// before ns or ie
	this.ns = !this.opera && !this.safari && (b=="Netscape");
	this.ie = !this.opera && (b=="Microsoft Internet Explorer");
	this.gecko = ua.indexOf('gecko')>-1; // check for gecko engine
	if (this.ns) {
		this.ns4 = (this.v==4);
		this.ns6 = (this.v>=5);
		this.b = "Netscape";
	}else if (this.ie) {
		this.ie4 = this.ie5 = this.ie55 = this.ie6 = false;
		if (v.indexOf('MSIE 4')>0) {this.ie4 = true; this.v = 4;}
		else if (v.indexOf('MSIE 5')>0) {this.ie5 = true; this.v = 5;}
		else if (v.indexOf('MSIE 5.5')>0) {this.ie55 = true; this.v = 5.5;}
		else if (v.indexOf('MSIE 6')>0) {this.ie6 = true; this.v = 6;}
		this.b = "MSIE";
	}else if (this.opera) {
		this.v=parseInt(ua.substr(ua.indexOf("opera")+6,1)); // set opera version
		this.opera6=(this.v>=6);
		this.opera7=(this.v>=7);
		this.b = "Opera";
	}else if (this.safari) {
		this.ns6 = (this.v>=5);	// ns6 compatible correct?
		this.b = "Safari";
	}
	this.dom = (document.createElement && document.appendChild && document.getElementsByTagName)? true : false;
	this.def = (this.ie||this.dom);
	this.win32 = ua.indexOf("win")>-1;
	this.mac = ua.indexOf("mac")>-1;
	this.other = (!this.win32 && !this.mac);
	this.supported = (this.def||this.ns4||this.ns6||this.opera)? true:false;
};
/****************************/
function showHide(ele,id) {
    ele.blur();
    eleHide = document.getElementById(id);
    //alert(eleHide.style.display);
    if(eleHide.style.display == "none" || eleHide.style.display == "") {
        eleHide.style.display = "block"
        ele.oldClass = ele.className;
        ele.className = ele.oldClass + " open";
    } else {
        eleHide.style.display = "none"
        ele.className = ele.oldClass;
    }
    return false;
}

function createWindow() {
    bl = new fakeWindow();
    bl.left = 10;
    bl.width = "800px";
    bl.height = "600px";
    bl.create();
    //fakeWindows.width = "500px";
    //fakeWindows.create();
    return false;
}

function loadImage(url) {
    browse = new browser();

    //alert(document.body.scrollHeight+"\n"+document.documentElement.scrollHeight);

    if(rmMask = document.getElementById("maskAlpha")) { // caso a mascara ja exista, remove antes de criar outra
        document.body.removeChild(rmMask);
    }
    if(document.all) {
        posX = document.documentElement.scrollLeft;
        posY = document.documentElement.scrollTop;
    } else {
        posX = scrollX;
        posY = scrollY;
    }
    // Cria a mascara, seta class e id
    mask = document.createElement("div");
    mask.className = "loadImages";
    mask.id = "maskAlpha";
    mask.style.height = document.documentElement.scrollHeight+"px";

    // Canvas eh o palco onde a imagem vai abrir
    var canvas = document.createElement("div");
    canvas.id = "maskContent";
    canvas.className = "loadImagesContent";
    // remove a mascara no onclick
    // canvas.onclick = function() {document.body.removeChild(this.parentNode)};

    //alert(posY);
    canvas.style.top = posY+25+"px";
    //canvas.style.position = "fixed";
    window.onscroll = function() {
        if(document.all) {
            posX = document.documentElement.scrollLeft;
            posY = document.documentElement.scrollTop;
        } else {
            posX = scrollX;
            posY = scrollY;
        }
        //canvas.style.top = posY+25+"px";
    }
    //alert(posX + " - " + posY);
    var btnClose = document.createElement("a");
    btnClose.href = "#";
    btnClose.onclick = function() {document.body.removeChild(this.parentNode.parentNode);return false};
    btnClose.className = "btnClose";
    btnClose.innerHTML = "FECHAR(X)";
    canvas.appendChild(btnClose);

    // img eh a imagem
    var img = document.createElement("img");
    img.src = "/wiki/skins/poliagro/images/resize/zoom.php?filename="+url;
    if(img.complete) { // se a imagem já está carregada no cache, mostrar a imagem
        canvas.style.width = img.width+"px";
        canvas.style.height = img.height+"px";
        canvas.appendChild(img);
        canvas.style.background = "#FFF";
    } else { // se nao estiver no cache, esperar o onload para mostrar a imagem
        img.onload = function() {
            canvas.style.width = img.width+"px";
            canvas.style.height = img.height+"px";
            canvas.appendChild(img);
            canvas.style.background = "#FFF";
        }
    }
    mask.appendChild(canvas);
    document.body.appendChild(mask);
    //animaIn(mask.id);
    //ajaxRun({idTarget:"maskContent",url:"images/geral/hands.png"})
    return false;
}
function animaIn(id) {
    var ele = document.getElementById(id);
    ele.style.left = ele.offsetLeft - 0 + "%";
    ele.style.top = ele.offsetTop - 0 + "%";
    var w = ele.style.width;
    w = w.replace("%","");
    var h = ele.style.height;
    h = h.replace("%","");
    w = w - 0;
    h = h - 0;
    //ele.style.width = (w + 10) + "%";
    ele.style.height = (h + 10) + "%";
    var timmer;
    clearTimeout(timmer);
    h = ele.style.height;
    h = h.replace("%","");
    h = h - 0;
    if(h < 100) {
        clearTimeout(timmer);
        timmer = setTimeout("animaIn('"+id+"')",10);
    } else {
        clearTimeout(timmer);
    }
}

function startFormContato(name) {
    //document.forms[name].style.border = "1px solid red";
    for(var x = 0 ; x < document.forms[name].elements.length ; x++) {
        //alert(document.forms[name].elements[x].tagName);
        document.forms[name].elements[x].onfocus = styleSwitch;
    }
}
function styleSwitch() {
    this.oldClass = this.className;
    this.className = "selected";
    this.onblur = function() {
        this.className = this.oldClass;
    }
}
function getMousePosition(e) {
    if(typeof(e) == "undefined") {var e = window.event;}
    var mouse = new Object();
    mouse.x = e.clientX;
    mouse.y = e.clientY;
    return mouse;
}
function openGlossario(e,name) {
    var mouse = getMousePosition(e);
    if(rm = document.getElementById("dvGlossario")) {
        document.body.removeChild(rm);
    }
    if(rm = document.getElementById("dvGlossarioShadown")) {
        document.body.removeChild(rm);
    }
    var gl = document.createElement("div");
    var gls = document.createElement("div");
    gl.id = "dvGlossario";
    gls.id = "dvGlossarioShadown";
    if(document.all) {
        posX = document.documentElement.scrollLeft;
        posY = document.documentElement.scrollTop;
    } else {
        posX = scrollX;
        posY = scrollY;
    }
    gl.className = "dvGlossario";
    gls.className = "dvGlossarioShadown";


    //ifr.body.className = "glossarioBody";
    //ifr.src = "/wiki/index.php/"+name+"?template=glossario";
    name = name.replace(/\s/g,"_");

    /*
    var ifr = document.createElement("iframe");
    ifr.src = "/wiki/glossario.php?url=/wiki/index.php/"+escape(name)+"?template=glossario&isGlossario=1";
    ifr.id = "ifrGloss";
    ifr.name = "ifrGloss";
    gl.appendChild(ifr);
    ifr.setAttribute("frameborder","0");
    */
    // o IE não aceita muito bem o document.createElement("iframe");
    //gl.innerHTML = "<iframe src=\"/wiki/glossario.php?url=/wiki/index.php/"+escape(name)+"?template=glossario&isGlossario=1\" frameborder=\"0\"></iframe>";

    //* @call ajaxRun({idTarget:"ID_ELEMENTO",url:"URL_CHAMADA",method:"POST",execBefore:"alert('Start')",execAfter:"alert('End')"})
    var dvContent = document.createElement("div");
    dvContent.id = "dvContentGl"
    dvContent.className = "dvContentGl"
    var dvGlLoading = document.createElement("div");
    dvGlLoading.id = "dvGlLoading";
    dvGlLoading.className = "dvGlLoading";
    dvContent.appendChild(dvGlLoading);
    gl.appendChild(dvContent);
    url = "/wiki/glossario.php?url=/wiki/index.php/"+escape(name)+"?template=glossario&isGlossario=1";
    var btnClose = document.createElement("a");
    btnClose.href = "#";
    btnClose.onclick = function() {document.body.removeChild(this.parentNode);return false};
    btnClose.className = "btnCloseGl";
    btnClose.innerHTML = "FECHAR(X)";
    gl.appendChild(btnClose);
    gl.mouse = mouse;
    document.body.appendChild(gl);
    //document.body.appendChild(gls);
    teste3();
    //alert(gl.id);
    ajaxRun({"idTarget":"dvContentGl","url":url,"execAfter":"teste3()"});
    return false;
}

function teste3(mouse) {
    gl = document.getElementById("dvGlossario");
    mouse = gl.mouse;
    if(document.all) {
        screenX = document.body.offsetWidth;
        screenY = document.body.offsetHeight;
    } else {
        screenX = window.innerWidth;
        screenY = window.innerHeight;
    }
    if((mouse.y + gl.offsetHeight) > screenY ) {
        gl.style.top = (mouse.y + posY) - (gl.offsetHeight) + "px";
    } else {
        gl.style.top = mouse.y + posY + "px";
    }
    if((mouse.x + gl.offsetWidth) > screenX ) {
        gl.style.left = (mouse.x + posX) - (gl.offsetWidth) + "px";
    } else {
        gl.style.left = mouse.x + posX + "px";
    }
}

function goProd(prod) {
    if(prod != ".") {
        window.location = prod;
    } else {
        return false;
    }
}

function deleteImg() {
    var r = confirm("Deseja deletar essa imagen da lista?");
    if(r) {
        return true;
    } else {
        return false;
    }
}

function dbug(h){
  var r="";
  for(ef in h){
    r+=ef+" -  ";
  }
  alert(r);
}

window.onload = init;

function init() {
    loadCapaDestaque();
}

function loadCapaDestaque() {
    var id = "destCapaContent";
	if(document.getElementById(id)) {
        var url = "/index.php/Categoria:capa?template=glossario";
		ajaxRun({idTarget:id,url:url});
	}
}

