// catch errors and redirect them to the status bar
window.onerror = errorHandler;

// Javascript Include() function, allows dynamic inclusion of other javascript files.
// Original version from: http://www.n-son.com/scripts/includes/Include.js
// (via one of the comments here: http://www.phpied.com/javascript-include/)

var Include = function () {
  var Include = function (src) {
    var reg = null;
    for (var i = 0; reg = Include.registry[i]; i++) {
      if (reg.toLowerCase() == src.toLowerCase()) {
        return false;
      }
    }
    
    var head   = document.getElementsByTagName('head')[0];
    var script = document.createElement("script");
      
    script.src  = src.match(/^\//) ? src : Include.base + src;
    script.type = "text/javascript";
    script.language = "javascript";
      
    head.appendChild(script);
    return script;
  };
  
  Include.registry = [];
  Include.Once = function (src) {
    var script = Include(src);
    Include.registry[Include.registry.length] = src;
    return script;
  };
  
  //var base     = document.getElementsByTagName("base")[0];
  
  // our scripts are assumed to live in the same folder as THIS script
  var scriptbase = document.getElementsByTagName("script")[0].getAttribute("src");
  var baselen    = scriptbase.lastIndexOf("/") + 1;
  Include.base = baselen ? scriptbase.substring(0, baselen) : "";

  return Include;
}();

var startSize = 2;

function setStartSize(size)
{
    startSize = size;
}

function sizer( inc ) 
{
    var tgs = new Array( 'div');

    var szs = new Array('70%','75%','80%','85%','90%','95%','100%','105%','110%','115%' );

    if (!document.getElementById) return
    var d = document,cEl = null,sz = startSize,i,j,cTags;
    var trgt = 'divCenterCol';

    sz += inc;
    if ( sz < 0 ) sz = 0;
    if ( sz > 9 ) sz = 9;
    startSize = sz;

    try
    {
        if ( !( cEl = d.getElementById( trgt ) ) ) cEl = d.getElementsByTagName( trgt )[ 0 ];

        cEl.style.fontSize = szs[ sz ];

        for ( i = 0; i < tgs.length; i++ )
        {
                cTags = cEl.getElementsByTagName( tgs[ i ] );
                for ( j = 0; j < cTags.length; j++ ) cTags[ j ].style.fontSize = szs[ sz ];
        }
    }
    catch (ex)
    {
    }
}

////////////////////////////////////////////////////////////////////////////////////
//
// common.js - functions which need to be available immediately to the current page

try
{
    var body = document.getElementsByTagName("body")[0];
    if (body)
    {
            body.addEventListener("dblclick", onDoubleClick, false);
    }
}
catch (ex)
{
    // alert(ex);	
}


function OpenDocument(id, args)
{
    if (args == undefined) SendMessage('DOC|' + id);
    else SendMessage('DOC|' + id + '|' + args);
}


function SendMessage(msg)
{
    window.status = 'diciop:' + msg;
}


function onDoubleClick(ev)
{
    var sel = window.getSelection();
    var expandedSel = getWordFromEvent(ev);
    SendMessage('DBLCLICK|' + ev.target.tagName + '|' + ev.screenX + '|' + ev.screenY + '|' + sel + '|' + expandedSel);
}


function errorHandler(m,u,n)
{
    window.status = "jserror: '" + m + "' " + (/^javascript:/(u) ? "(bookmarklet)" : "(line " + n + " of " + u + ")");
    return true;
}


function alert(msg)
{
    window.status = "alert: " + msg;
}

function GetWindowSize()
{
    this.width = 0;
    this.height =0;
    var myWidth=1024;
    var myHeight=768;
    if( typeof( window.innerWidth ) == 'number' ) 
    {
            myWidth = window.innerWidth;
            myHeight = window.innerHeight;
    }
    this.width = myWidth;
    this.height = myHeight;
    return (this);
}

function getRadioValue(ro) 
{
    var value = null
    for (var i=0; i<ro.length; i++) 
    {
        if (ro[i].checked) 
        {
            value = ro[i].value
            break 
        }
    }
    return value;
 }

function validfcomentar()
{
    if ((document.fcomentar.feedback.value != '') || (getRadioValue(document.fcomentar.rate) != null))
    {
        dobj = document.getElementById('linkcomentar');
        dobj.style.visibility = 'visible'; 
    }
    else
    {
        dobj = document.getElementById('linkcomentar');
        dobj.style.visibility = 'hidden'; 
    }
}

function validfenviar()
{
    if (isValidEmail(document.fenviar.para.value))
    {
        dobj = document.getElementById('linkenviar');
        dobj.style.visibility = 'visible'; 
    }
    else
    {
        dobj = document.getElementById('linkenviar');
        dobj.style.visibility = 'hidden'; 
    }
}


function isValidEmail(addr) 
{
    var invalidChars = '\/\'\\ ";:?!()[]\{\}^|';
    for (i=0; i<invalidChars.length; i++) {
       if (addr.indexOf(invalidChars.charAt(i),0) > -1) {
          return false;
       }
    }
    for (i=0; i<addr.length; i++) {
       if (addr.charCodeAt(i)>127) {
          return false;
       }
    }

    var atPos = addr.indexOf('@',0);
    if ((atPos == -1) || (atPos == 0) || (addr.indexOf('@', atPos + 1) > - 1) || (addr.indexOf('.', atPos) == -1) || (addr.indexOf('@.',0) != -1) || (addr.indexOf('.@',0) != -1) || (addr.indexOf('..',0) != -1)) 
    {
       return false;
    }


    return true;
}


function getWordFromEvent(evt)
{
    var range = document.createRange();
    range.setStart(evt.rangeParent, evt.rangeOffset);
    range.setEnd(evt.rangeParent, evt.rangeOffset);
    expandRangeToWord(range);
    var word = range.toString();
    range.detach();
    return word;
}

function expandRangeToWord(range)
{
    var whitespace = /^\s+$/;
    var maxOffset = range.endContainer.length;
    
    // first fix the beginning of the string
    // if we have whitespace at the beginning, move right to the start of the word

    var startOffset = range.startOffset - 35;
    if (startOffset < 0) startOffset = 0;
    
    range.setStart(range.startContainer, startOffset);

    var s = range.toString();
    if (whitespace.test(s.charAt(0)))
    {
        while (whitespace.test(s.charAt(0)))
        {
            range.setStart(range.startContainer, ++startOffset);
            s = range.toString();
        }
    }
    else
    {
        while (startOffset > 0 && !whitespace.test(s.charAt(0)))
        {
            range.setStart(range.startContainer, --startOffset);
            s = range.toString();
        }
        
        // if startOffset > 0 then we're still over whitespace, so move right.
        if (startOffset > 0) ++startOffset;
        range.setStart(range.startContainer, startOffset);
    }
    
    // now fix the end of the string
    try
    {
        var endOffset = range.endOffset + 35;
        if (endOffset > maxOffset) endOffset = maxOffset;
        range.setEnd(range.endContainer, endOffset);
    }
    catch (ex)
    {
        //alert(ex);
    }
    

    s = range.toString();
    if (whitespace.test(s.charAt(s.length - 1)))
    {
        while (endOffset > startOffset && whitespace.test(s.charAt(s.length - 1)))
        {
            range.setEnd(range.endContainer, --endOffset);
            s = range.toString();
        }
    }
    else
    {
        while (!whitespace.test(s.charAt(s.length - 1)) && (endOffset < maxOffset))
        {
            range.setEnd(range.endContainer, ++endOffset);
            s = range.toString();
        }
    }

    return range.toString();
}

menu_status = new Array(); 

function showHide(theid)
{
    if (document.layers) 
    {
        if (document.layers[theid].visibility=="show")
            document.layers[theid].visibility="hide";
        else
            document.layers[theid].visibility="show";
    }
    else
    {
         if (document.getElementById(theid).style.visibility=="visible")
            document.getElementById(theid).style.visibility="hidden";
         else
            document.getElementById(theid).style.visibility="visible";
    }
}


function changeText(theid)
{
    s = new String(document.getElementById(theid).innerHTML);

    if (document.getElementById(theid).innerHTML.indexOf("menos")>=0)
    {
        s = s.replace("menos","mais");
    }
    else
    {
        s = s.replace("mais","menos");
    }

    document.getElementById(theid).innerHTML = 	s;

}



var scrollId = 0;
var scrollStep = 1;

function ScrollInit() {
    var body = document.getElementsByTagName('body');
    if (body.length == 1 && body[0]) {
        body[0].onmouseout = ScrollStop;
        body[0].onmouseup = ScrollStop;
        window.onresize = ScrollResize;
    }
}
	
function ScrollUp() {
    if (scrollId == 0) {
        scrollId = window.setInterval(ScrollUp, 50);
        scrollStep = 4;
    }
    
    var container = document.getElementById('container');
    if (container.scrollTop > 0) {
        scrollStep = Math.min(scrollStep+1, 24);
        container.scrollTop -= scrollStep;
    }
}

function ScrollDown() {
    if (scrollId == 0) {
        scrollId = window.setInterval(ScrollDown, 50);
        scrollStep = 4;
    }
    
    var container = document.getElementById('container');
    if (container.scrollTop + container.clientHeight < container.scrollHeight) {
        scrollStep = Math.min(scrollStep+1, 24);
        container.scrollTop += scrollStep;
    }
}

function ScrollResize() {
    var container = document.getElementById('container');
    if (container) {
        if (container.scrollTop + container.clientHeight > container.scrollHeight) {
            container.scrollTop = Math.max(0, container.scrollHeight - container.clientHeight);
        }
    }
}

function ScrollStop() {
    if (scrollId != 0) {
        window.clearInterval(scrollId);
        scrollId = 0;
    }
}

////////////////////////////////////////////////////////////////////////////////////
//
// from here add Include("") lines for extra javascript files that need to be loaded


//Include("find.js");