
var pag=1;
var iframeLocation = '';
var obj; 
var urlForIframe='http://directorio.sapo.pt/if.php?pag='; 

var tmpPointers = new Array;

var regexpIE = /msie/;
var regexpOP = /opera/;
var regexpSF = /apple/i;

var detect = navigator.userAgent.toLowerCase();
if(regexpIE.test(detect) && !regexpOP.test(detect)) { // IE
    var IE=1;
}
else {
    var IE=0;
}

if(regexpOP.test(detect)) { // Opera
    var OP = 1;
}
else {
    var OP = 2;
}

if(regexpSF.test(navigator.vendor)) { // Safari
    var SF = 1;
}
else {
    var SF = 0;
}

/**
 * #####################################################################
 * #####################################################################
 */

/**
 * Load XML only when load page
 * set request obj
 */
function loadXml() {

    if(window.XMLHttpRequest) {
        obj = new XMLHttpRequest();
        //obj.onreadystatechange = paginationXml;
        obj.open("GET", 'rss.xml', true);
        obj.send(null);
    }
    else if(window.ActiveXObject) {
        obj = new ActiveXObject("Microsoft.XMLHTTP");
        if(obj) {
            //obj.onreadystatechange = paginationXml;
            obj.open("GET", 'rss.xml', true);
            obj.send();
        }
    }
}

/**
 * #####################################################################
 * #####################################################################
 */

/**
 * Write content
 * @params: pagnum
 */
function writeContent(pagnum) {

    var idDiv = 'apontadores';
    var resultsPerPage = 20;
    
    document.getElementById("displayAnuncios").style.display = 'none';

    if(obj.readyState == 4 && obj.status == 200) {
       
        var myxml = obj.responseXML;
        var pointers = myxml.getElementsByTagName('item');

        if(pagnum != 1) { //esconder os destaques e categorias
            document.getElementById("divCategorias").style.display = 'none';
            if(document.getElementById("cabDestaques")) {
                document.getElementById("cabDestaques").style.display = 'none';
            }
            document.getElementById("divDestaques").style.display = 'none';
        }
        else { // mostra destaques e categorias
            if(document.getElementById("divCategorias").style.display == 'none') {
                document.getElementById("divCategorias").style.display = 'block';
            }
            if(document.getElementById("cabDestaques") && document.getElementById("cabDestaques").style.display == 'none') {
                document.getElementById("cabDestaques").style.display = 'block';
            }
            if(document.getElementById("divDestaques").style.display == 'none') {
                document.getElementById("divDestaques").style.display = 'block';
            }
        }

        // tmpPointers
        var contaPointers = 0;
        if(tmpPointers.length == 0) { 
            for(var p=0; p < pointers.length; p++) {

                if(pointers[p]) {
                    
                    if(!pointers[p].getElementsByTagName('type')[0]) {
                        var typeTmp = pointers[p].getElementsByTagName('dc:type')[0];
                    }
                    else {
                        var typeTmp = pointers[p].getElementsByTagName('type')[0];
                    }
                    typeTmp = typeTmp.childNodes[0].nodeValue;
                    
                    if(!pointers[p].getElementsByTagName('identifier')[0]) {
                        var identifierTmp = pointers[p].getElementsByTagName('dc:identifier')[0];
                    }
                    else {
                        var identifierTmp = pointers[p].getElementsByTagName('identifier')[0];
                    }
                    identifierTmp = identifierTmp.childNodes[0].nodeValue;
                    
                    if(typeTmp == 'pointer') {
                        var urlTmp = pointers[p].getElementsByTagName('link')[0];
                        var titleTmp = pointers[p].getElementsByTagName('title')[0];
                        var descriptionTmp = pointers[p].getElementsByTagName('description')[0];

                        urlTmp = urlTmp.childNodes[0].nodeValue;
                        titleTmp = titleTmp.childNodes[0].nodeValue;
                        descriptionTmp = descriptionTmp.childNodes[0].nodeValue;
                
                        tmpPointers[contaPointers] = new Array;
                        tmpPointers[contaPointers][0] = urlTmp;
                        tmpPointers[contaPointers][1] = titleTmp;
                        tmpPointers[contaPointers][2] = descriptionTmp;
                        tmpPointers[contaPointers][3] = identifierTmp;
                        
                        contaPointers++;
                    }
                }
            }
        }

        var startCont = (Number(pagnum) - 1) * resultsPerPage;
        var endCont = Number(startCont) + 20;

        //document.getElementById(idDiv).innerHTML = '';
        var htmlToWrite = '';

        for(var i=startCont; i < endCont; i++) {
            if(tmpPointers[i]) {
                
                var url = tmpPointers[i][0];
                var title = tmpPointers[i][1];
                var description = tmpPointers[i][2];
                var urlLink = tmpPointers[i][3];
                
                htmlToWrite += '<li>&bull;<span class="title"><a  href="'+url+'">'+title+'</a></span><span class="txt">'+description+'</span><span class="url"><a href="'+url+'">'+urlLink+'</a></span></li>';
            }
        }
        document.getElementById(idDiv).innerHTML = htmlToWrite;
    }
}


/**
 * #####################################################################
 * #####################################################################
 */

/**
 * Escreve a paginacao e chama writeContent
 * @params: pagnum, totalPag
 */
function paginationXml(pagnum, totalPag) {

    //CHANGE IFRAME
    if(IE == 1) { //fix IE backbutton
        var myiframe=document.getElementById("iframenav");
        myiframe.setAttribute('src', urlForIframe+pagnum);
        window.location='#'+pagnum;
        iframenav.location.href = urlForIframe+pagnum;
    }
    else if(SF == 1 || OP == 1) {
        document.getElementById("navid").value = pagnum;

        var myiframe=document.getElementById("iframenav");
        myiframe.setAttribute('src', urlForIframe+pagnum);
        iframenav.location.href = urlForIframe+pagnum;
    }
    else {
        document.getElementById("navid").value = pagnum;
    }

    //
    ///// PAGINACAO
    //
    var variacao = 3;
    var proInicio = Number(pagnum) - 1;
    var proFim = Number(totalPag) - Number(pagnum);
   
    //
    //tem setas?
    //
    if(proInicio > 0) {
        var setaAntes = true;
    }
    else {
        var setaAntes = false;
    }
    if(proFim > 0) {
        var setaDepois = true;
    }
    else {
        var setaDepois = false;
    }

    var limitAntes = Number(pagnum) - Number(variacao);
    var limitDepois = Number(pagnum) + Number(variacao);


    if(limitAntes <= 1) {
        limitDepois = Number(limitDepois) + Number(Math.abs(limitAntes)) + 1;
        limitAntes = 1;
    }
    else if(limitDepois >= totalPag) {
        limitAntes = Number(limitAntes) - Number(Number(limitDepois) - Number(totalPag));
        if(limitAntes < 1) {
            limitAntes = 1;
        }
        limitDepois = totalPag;
    }
    
    //
    //escreve setaAntes
    //
    if(setaAntes == true) {
        if(SF == 1) {
            var previousHref = '';
            var firstHref = '';
        }
        else {
            var previousHref = Number(pagnum) - 1;
            var firstHref = 1;
        }
        var str = '[<a href="#'+firstHref+'" onClick="javascript:paginationXml(1, '+totalPag+')">1</a>] '+
        '<a href="#'+previousHref+'" onClick="javascript:paginationXml('+(Number(pagnum) - 1)+', '+totalPag+');" >&laquo; ant.</a> ';
        document.getElementById("campoSetaAntes").innerHTML = str;
    }
    else {
        document.getElementById("campoSetaAntes").innerHTML = '';
    }

    //
    // paginacao principal
    //
    var conta = 1;
    for(var j=limitAntes; j <= limitDepois; j++) {
        if(document.getElementById("pageNumId"+conta)) {
            if(j == pagnum) {
                document.getElementById("pageNumId"+conta).innerHTML = '<span class="navActiv">'+j+'</span>';
                document.getElementById("pageNumId"+conta).setAttribute('class', 'navActiv');
            }
            else {
                document.getElementById("pageNumId"+conta).removeAttribute('class');
                if(SF == 1) {
                    var myhref='';
                }
                else {
                    var myhref=j;
                }
                document.getElementById("pageNumId"+conta).innerHTML = '<a href="#'+myhref+'" onClick="javascript:paginationXml('+j+','+totalPag+');">'+j+'</a>';
            }
        }
        conta++;
    }

    //
    //escreve setaDepois
    //
    if(setaDepois == true) {
        if(SF == 1) {
            var nextHref = '';
            var lastHref = '';
        }
        else {
            var nextHref = Number(pagnum) + 1;
            var lastHref = totalPag;
        }
        var str2 = '<a href="#'+nextHref+'" onClick="javascript:paginationXml('+(Number(pagnum) + 1)+','+totalPag+')">seg. &raquo;</a> '+
        '[<a href="#'+lastHref+'" onClick="javascript:paginationXml('+totalPag+', '+totalPag+')">'+totalPag+'</a>]';
        document.getElementById("campoSetaDepois").innerHTML = str2;
    }
    else {
        document.getElementById("campoSetaDepois").innerHTML = '';
    }

    //CALL WRITE CONTENT
    writeContent(pagnum);

    //SCROLL to TOP
    scroll(0,0);

    //MOSTRA ANUNCIOS
    document.getElementById("displayAnuncios").style.display = 'block';
}

/**
 * #####################################################################
 * #####################################################################
 */

/**
 * Ve qual a pagina no URL #[0-9]
 * @params: totalPages <- nr paginas totais
 * @return: newpag <- pagina actual
 */
function hasPage(totalPages) {

    if(totalPages)
        totalPag = totalPages;
    
    var getUrl = unescape(document.location);

    var hasCard = /#/;
    var hasCardEnd = /#$/;
    var myIsInt = /([0-9])+/;

    if(hasCard.test(getUrl) && !hasCardEnd.test(getUrl)) {
        
        var regexpCard = /^([0-9]+)(.*)?$/;
        var aPag = getUrl.split("#");
        newpag = Number(aPag[1].replace(regexpCard, "$1"));
        if(newpag) {
            
            if(!myIsInt.test(newpag)) {
                newpag = 1;
            }
            else {
                newpag = newpag;
            }
        }
        else {
            newpag = 1;
        }
    }
    else {
        newpag = 1;
    }
    pag = newpag;
    return newpag; // i need return
}


/**
 * run onLoad page != 1
 * Fix bookmarks :)
 * @params: total <- total paginas
 */
function runOnLoad(total) {

    pag = hasPage(total);
    loadXml();
    if(pag == 1) {
        paginationXml(pag, totalPag);
    }

    if(pag != 1) {
        if(IE == 1) {
            var iframeUrl = iframeLocation;
            var regexpPag = /^([0-9]+)(.*)?$/;
            var aPag = iframeUrl.split("pag=");
            newUrl = Number(aPag[1].replace(regexpPag, "$1"));
        }
        else {
            newUrl = document.getElementById("navid").value;
        }
        if(pag != newUrl) {
            if(IE == 1) {
                window.location='#'+1; //just a litle hack
                iframenav.location.href = urlForIframe+pag;
            }
            else if (SF == 1 || OP == 1) {
                newIframeUrl = document.getElementById("navid").value;
                iframenav.location.href = urlForIframe+pag;
            }
            else {
                newIframeUrl = document.getElementById("navid").value;
            }
        }
    }
}

/**
 * #####################################################################
 * #####################################################################
 */

/**
 * Recursive function 
 * check page in URL and/or iframe
 * @params: total <- total pages
 */
function myRecursive(total) {

    if(SF == 1 || OP == 1) {
        var iframeUrl = iframeLocation;
        var regexpPag = /^([0-9]+)(.*)?$/;
        var aPag = iframeUrl.split("pag=");
        var oldpag = Number(aPag[1].replace(regexpPag, "$1"));

        if(SF == 1) {
            var myDelayTime = 1200;
        }
        else {
            var myDelayTime = 200;
        }
    }
    else {
        var oldpag = hasPage(total);
        var myDelayTime = 200;
    }
    
    if(IE == 1) {
        var iframeUrl = iframeLocation;
        var regexpPag = /^([0-9]+)(.*)?$/;
        var aPag = iframeUrl.split("pag=");
        var newIframeUrl = Number(aPag[1].replace(regexpPag, "$1"));
    }
    else {
        var newIframeUrl = document.getElementById("navid").value;
    }
    
    if(newIframeUrl != oldpag) {
        if(IE == 1) {
            paginationXml(newIframeUrl, totalPag);
        }
        /*else if(SF == 1) {
            //document.location="#"+oldpag;
            paginationXml(oldpag, totalPag);
        }*/
        else {
            paginationXml(oldpag, totalPag);
        }
    }
    setTimeout("myRecursive("+totalPag+")", myDelayTime);
}


var Pointer = {

    go: function(url)
    {
        location.href = url;
    }
};





