/**
 * Javascript core functions.
 *
 * @author Christian Hansen <chrsen@fundanemt.com>
 * @version 2.1
 * @package core
 * @copyright Fundanemt Developers
 *
 * This file is part of Fundanemt CMS.
 *
 * Fundanemt CMS is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * Fundanemt CMS is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with Fundanemt CMS; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 **/

var imgOn = GUI_GRAPHICS+"mouse_over.gif";
var imgOff = GUI_GRAPHICS+"blank.gif";
var imgNed = GUI_GRAPHICS+"mouse_down.gif";
var frontImgOn = GUI_GRAPHICS+"HARD_front_over.gif";
var frontImgOff = GUI_GRAPHICS+"HARD_front.gif";
var frontImgNed = GUI_GRAPHICS+"HARD_front_down.gif";
var contextModified=false;

var selectedImage = "none";
var selectedImageWidth = null;
var selectedImageHeight = null;

var selectedImageHeigth = null;
var selectedImageName = "";
var selectedImageSize = "";
var myWindow = null;
var dato = new Date();
var iamAlive = true;
var leftclicktimeout = 0;
var leftclicktimeoutlistener = setInterval("if(leftclicktimeout>0) leftclicktimeout--",1000);

function createDir(input) {
    showDialog(GUI_GUI+"?&action=printDialogCreateDir&input="+input,310,80);
}//createFolder


function musOver(imgNumber,imgName) {
    document.images[imgNumber].src = imgName;
    imgNumber--;
    document.images[imgNumber].src = imgOn;
    imgNumber--;
    document.images[imgNumber].src = imgOff;
}//musover

function musUde(imgNumber,imgName) {
    document.images[imgNumber].src = imgName;
    imgNumber--;
    document.images[imgNumber].src = imgOff;
    imgNumber--;
    document.images[imgNumber].src = imgOff;
}//musUde

function musNed(imgNumber,imgName) {
    document.images[imgNumber].src = imgOff;
    imgNumber--;
    document.images[imgNumber].src = imgNed;
    imgNumber--;
    document.images[imgNumber].src = imgName;
}//musNed


    function focusOnMe() {
        try {
            top.myWindow.focus();
        } catch(e) {}
    }//focusOnMe

    function unLoadMe() {
            try {
                top.opener.top.myWindow = null;
            } catch(e) {}
            try {
                top.myWindow.close();
            } catch(e) {}
    }//unLoadMe


function logout(url) {
    try {
        if(top.myWindow.document) {
            if(confirm("Du har vinduer åbne.\nEr du sikker på, at du vil logge af?")) {
                top.myWindow.close();
                document.location.href = url;
            }
        }
        else {
            document.location.href = url;
        }
    }
    catch(e) {
        document.location.href = url;
    }

}


function centerDialog(width,height) {

    var properties;

    if(navigator.appName == "Microsoft Internet Explorer") {
        var startY = (self.screenTop + (top.document.body.clientHeight/2) - (height/2)) -20;
        var startX = self.screenLeft + (top.document.body.clientWidth/2) - (width/2);
        properties = "width="+width+",height="+height+",left="+startX+",top="+startY+",toolbar=0,status=0,menubar=0,scrollbars=no";
    }//if

    else {
        var startX = window.screenX + (window.outerWidth/2) - (width/2);
        var startY = (window.screenY + (window.outerHeight/2) - (height/2));
        properties = "width="+width+",height="+height+",screenX="+startX+",screenY="+startY+",toolbar=0,status=0,menubar=0,scrollbars=no";
    }//else

    return properties;

}//centerDialog


function centerDialogSpec(width,height,offset) {

    var properties;

    if(navigator.appName == "Microsoft Internet Explorer") {
        var startY = (self.screenTop + (top.document.body.clientHeight/2) - (height/2)) - offset;
        var startX = self.screenLeft + (top.document.body.clientWidth/2) - (width/2);
        properties = "width="+width+",height="+height+",left="+startX+",top="+startY+",toolbar=0,status=0,menubar=0,scrollbars=no";
    }//if

    else {
        var startX = window.screenX + (window.outerWidth/2) - (width/2);
        var startY = (window.screenY + (window.outerHeight/2) - (height/2));
        properties = "width="+width+",height="+height+",screenX="+startX+",screenY="+startY+",toolbar=0,status=0,menubar=0,scrollbars=no";
    }//else

    return properties;

}//centerDialog

function showDialogImage(catalog) {
    var path = SCRIPT_URL+"/fundanemt/core/filehandler/filehandler.php";
    path = path.replace(/([^:]?)\/+/g,"$1/");
    arrpath = catalog.replace(/^.*fundanemt\/site_graphics/,"");
    //showDialog(path+"?path="+arrpath+"&type=1",622,450);
    if(arguments.length == 2) var selectedImage = "&newfilename="+arguments[1];
    else var selectedImage = "";
    showDialog(path+"?type=1"+selectedImage+"&path="+arrpath, 622, 450);
}//showDialogImage

function showMainDialog(file) {

    //this code gets a bit ugly as Internet Explorer does NOT comply with the ECMA standards
    try {
        if(top.myWindow.document) {
            top.myWindow.focus();
        }
        else {
            top.myWindow = window.open(file,WPREFIX+"main",centerDialog(700,550));
        }
    }
    catch(e) {
        top.myWindow = window.open(file,WPREFIX+"main",centerDialog(700,550));
    }

}//showMainDialog



    function showDialog(file,width,height,wtop,wleft) {
        //this code got a bit ugly as Internet Explorer does NOT comply with the ECMA standards
        var regexp = /\?/;
        var printFrm = regexp.test(file)?"&printFrm=1":"?printFrm=1";
        try {
            if(top.myWindow.document) top.myWindow.focus();
            else {
                if(arguments.length == 5) {
                    if(navigator.appName == "Microsoft Internet Explorer") {
                        wtop += self.screenTop;
                        wleft += self.screenLeft;
                        var properties = "width="+width+",height="+height+",left="+wleft+",top="+wtop+",toolbar=0,status=0,menubar=0,scrollbars=no";
                    } else {
                        wleft += window.screenX;
                        wtop += window.screenY + 14;
                        var properties = "width="+width+",height="+height+",screenX="+wleft+",screenY="+wtop+",toolbar=0,status=0,menubar=0,scrollbars=no";
                    }
                    top.myWindow = window.open(file+printFrm,WPREFIX+"newWindow"+dato.getMilliseconds(),properties);
                } else {
                    top.myWindow = window.open(file+printFrm,WPREFIX+"newWindow"+dato.getMilliseconds(),centerDialog(width,height));
                }
            }//else
        } catch(e) {
            if(arguments.length == 5) {
                    if(navigator.appName == "Microsoft Internet Explorer") {
                        wtop += self.screenTop;
                        wleft += self.screenLeft;
                        var properties = "width="+width+",height="+height+",left="+wleft+",top="+wtop+",toolbar=0,status=0,menubar=0,scrollbars=no";
                    } else {
                        wleft += window.screenX;
                        wtop += window.screenY + 14;
                        var properties = "width="+width+",height="+height+",screenX="+wleft+",screenY="+wtop+",toolbar=0,status=0,menubar=0,scrollbars=no";
                    }
                    top.myWindow = window.open(file+printFrm,WPREFIX+"newWindow"+dato.getMilliseconds(),properties);

            } else {
                top.myWindow = window.open(file+printFrm,WPREFIX+"newWindow"+dato.getMilliseconds(),centerDialog(width,height));
            }
        }
    }//showDialog

    /*
     * Function         : showWindow
     * Input            : STRING url, STRING name, INTEGER width, INTEGER height
     * Output           : void
     * Description      : opens a new window - soon th replace all other windowhandlers.
     * Scope            : public
     */
    function showWindow(url,name,width,height) {
        try {
            top.opener.focus();
            //eval(name+".focus()");
        } catch(e) {
            eval("var "+name+" = window.open('"+url+"','"+WPREFIX+name+"','"+centerDialog(width,height)+"')");
            eval(name+".focus()");
        }
    }//showWindow


    function clearTextBox(box) {
        var cltext = new Array(
            "MANGLER",
            "Ny Folder"
        );
        if(in_array(box.value,cltext)) {
            box.value = "";
        }//if
    }//clearTextBox


    function encodeString(str) {
        str = htmlentities(str);
        str = escape(str);
        return str;
    }//encodeString


    function decodeString(str) {
        str = str.replace("_ZxZ","&");
        return str;
    }//decodeString


    function changeImageSize(id,src,w,h) {
        newImage = new Image();
        newImage.src = src;
        currentWidth = w;
        currentHeight = h;
        imgRel = currentHeight/currentWidth;
        boxRel = 130/180;
        if(currentWidth < 180 && currentHeight < 130) {
            height = currentHeight;
            width = currentWidth;
        }//if
        else {
            height = currentHeight * (180/currentWidth);
            width = currentWidth * (130/currentHeight);
            if (imgRel < boxRel) {
                width = 180;
            }
            else {
                height = 130;
            }
        }
        document.getElementById(id).src = newImage.src;
        document.getElementById(id).style.width = width+"px";
        document.getElementById(id).style.height = height+"px";
    }//changeImageSize

//DEPRICATED
function setImgSize(boxWidth,boxHeight) {
    if(document.getElementById("imgShow")) {
        var imgWidth = document.getElementById("imgShow").width;
        var imgHeight = document.getElementById("imgShow").height;

        var boxRel = boxHeight/boxWidth;
        var imgRel = imgHeight/imgWidth;

        if(imgHeight <= boxHeight && imgWidth <= boxWidth) {
            var newImgHeight = imgHeight;
            var newImgWidth = imgWidth;
        }
        else {
            var newImgHeight = (imgRel < boxRel) ? imgHeight*(boxWidth/imgWidth) : boxHeight;
            var newImgWidth = (imgRel > boxRel) ? imgWidth*(boxHeight/imgHeight) : boxWidth;
        }

        document.getElementById("imgShow").style.width = newImgWidth + "px";
        document.getElementById("imgShow").style.height = newImgHeight + "px";

        if(document.getElementById("imgW") && document.getElementById("imgH")) {
            var imgW = document.createTextNode("Bredde : "+imgWidth+"px");
            var imgH = document.createTextNode("Højde : "+imgHeight+"px");
            document.getElementById("imgW").parentNode.replaceChild(imgW,document.getElementById("imgW"));
            document.getElementById("imgH").parentNode.replaceChild(imgH,document.getElementById("imgH"));

        }//if
    }//if
}//setImgSize

    /*==============================================================
    FUNCTIONS USED FOR IMAGEFIELD
    ==============================================================*/


    /*
     * function         : resizeImg
     * input            : STRING id, INTEGER width,INTEGER height
     * output           : void
     * Description      : Resizes the image to fit the box with widthxheight
     *                    dimensions.
     * Scope            : public
     */
    function resizeImg(id,width,height,imgW,imgH) {
        selectedImageWidth = imgW;
        selectedImageHeight = imgH;
        var imgRel = imgH/imgW;
        var boxRel = height/width;

        if(imgH > height || imgW > width) {
            var nImgH = (imgRel < boxRel)?imgH*(width/imgW):height;
            var nImgW = (imgRel > boxRel)?imgW*(height/imgH):width;
        } else {
            var nImgW = imgW;
            var nImgH = imgH;
        }

        document.getElementById(id).style.width = nImgW+"px";
        document.getElementById(id).style.height = nImgH+"px";
    }//resizeImg


    /*
     * function         : setImg
     * input            : string path, string id, boolean rt
     * output           : void
     * Description      : set new image
     * Scope            : public
     */
    function setImg(path,id) {
        selectedImageWidth = null;
        var width = document.getElementById(id).style.width;
        var height = document.getElementById(id).style.height;
        width = width.replace(/px$/,"");
        height = height.replace(/px$/,"");
        var out = "<img src=\""+path+"\" id=\""+id+"img\" ";
        out += "onLoad=\"resizeImg(this.id,"+width+","+height+",this.width,this.height)\">";
        document.getElementById(id).innerHTML = out;
    }//setImg

    /*==============================================================
    FUNCTIONS USED FOR INPUT FIELD VALIDATION
    ==============================================================*/


    /*
     * function         : inputDate
     * Input            : String Date in format YYYY-MM-DD
     * output           : boolean
     * description      : returns true if the given date is valid - else false.
     * scope            : public
     */
    function inputDate(strdate) {
        var regexp_date = /^[0-9]+-[0-9]+-[0-9]+$/;
        if(regexp_date.test(strdate)) {
            var arrPart = strdate.split("-");
            if(validDate(parseInt(arrPart[0]),parseInt(arrPart[1]),parseInt(arrPart[2])) ||validDate(parseInt(arrPart[2]),parseInt(arrPart[1]),parseInt(arrPart[0])))
                return true;
        }//if
        return false;
    }//inputDate



    /*==============================================================
    FUNCTIONS USED BY PRINTDROPDOWN IN FUNDAGUI.INC
    ==============================================================*/

    var timerID = null;
    var x = null;
    var y = null;
    var oldimg = null;
    var mode = false;
    var chosen = null;

    function hl_dd(id) {
        eval("document.getElementById(\"dd1_"+id+"\").src = \""+GUI_GRAPHICS+"drop_hl_l.gif\"");
        eval("document.getElementById(\"dd2_"+id+"\").style.backgroundImage = \"url("+GUI_GRAPHICS+"drop_hl_m.gif)\"");
        eval("document.getElementById(\"dd3_"+id+"\").style.backgroundImage = \"url("+GUI_GRAPHICS+"drop_hl_m.gif)\"");
        eval("document.getElementById(\"dd4_"+id+"\").src = \""+GUI_GRAPHICS+"drop_hl_r.gif\"");
        eval("document.getElementById(\"dd3_"+id+"\").style.color = \""+DROP_DOWN_COLOR_ACTIVE+"\"");
    }//hl_dd

    function ll_dd(id) {
        eval("document.getElementById(\"dd1_"+id+"\").src = \""+GUI_GRAPHICS+"drop_ll_l.gif\"");
        eval("document.getElementById(\"dd2_"+id+"\").style.backgroundImage = \"url("+GUI_GRAPHICS+"drop_ll_m.gif)\"");
        eval("document.getElementById(\"dd3_"+id+"\").style.backgroundImage = \"url("+GUI_GRAPHICS+"drop_ll_m.gif)\"");
        eval("document.getElementById(\"dd4_"+id+"\").src = \""+GUI_GRAPHICS+"drop_ll_r.gif\"");
        eval("document.getElementById(\"dd3_"+id+"\").style.color = \""+DROP_DOWN_COLOR_INACTIVE+"\"");
    }//ll_dd

    function calcCoords(id,imgHeight) {
        try {
            y = document.getElementById(id).offsetTop;
            x = document.getElementById(id).offsetLeft;
        } catch(e) {
            x = document.all[id].offsetLeft;
            y = document.all[id].offsetTop;
        }

        y += imgHeight;
    }//calcCoords()


    function keepMenu(img,e) {

        //if the user right clicked the menu we will not
        //calcCoords but just use the mouseposition
        if(mode) {
            if(!x && !y) {
                x = e.clientX;
                y = e.clientY + document.body.scrollTop;
            }
        } else {
            calcCoords(img.id,img.height);
        }//else


        var str = img.id.toString();
        var arr = str.split(/_/);
        var newid = "drop_"+arr[1];

        try {
            document.getElementById(newid).style.top = y+"px";
            document.getElementById(newid).style.left = x+"px";
            document.getElementById(newid).style.visibility = 'visible';
        } catch (e) {
            document.all[newid].style.left = x+"px";
            document.all[newid].style.top = y+"px";
            document.all[newid].style.visibility = 'visible';
        }

        chosen = newid;

    }//keepMenu()

    function hideMenu() {
        if(chosen) {
            mode=false;
            x=null;
            y=null;
            document.getElementById(chosen).style.visibility = 'hidden';
            chosen = null
        }
    }//hideMenu

    function cleanUp(img) {
        var str = img.id.toString();
        var arr = str.split(/_/);
        var newid = "drop_"+arr[1];

        if(oldimg) document.getElementById(oldimg).style.visibility = "hidden";
        oldimg = newid;
    }//cleanUp


    function leftclick() {
        if(leftclicktimeout>0) return false;
        else {
            leftclicktimeout = 3;
            return true;
        }//else
    }//leftclicktimeout

    function convertPNG4IE() {
         var regexp = new RegExp("\.png$");
           for(var c = 0; c<document.images.length;c++) {
            var imagesrc = document.images[c].src;
              if(regexp.test(imagesrc)) {
                var imageheight = document.images[c].height;
                var imagewidth = document.images[c].width;
                   document.images[c].src=GUI_GRAPHICS+"1x1_transparant.gif";
                  document.images[c].height = imageheight;
                  document.images[c].width = imagewidth;
                document.images[c].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+imagesrc+"', sizingMethod='scale');"
            }//if
        }//for
    }//convertPNG4IE



    /*==============================================================
    FUNCTIONS THAT IS GENERALLY USED IN JAVASCRIPTS
    ==============================================================*/

    /*
     * Function         : showStatus
     * Input            : none
     * Output           : none
     * Description      : Disables all functions and set the helptext to submitmessage
     * Scope            : public
     */
    function statusbar(text,id) {
        var out = "<center><table border=\"0\" cellspacing=\"5\" cellpadding=\"0\" width=\"440\">";
        out += "<tr><td align=\"center\" style=\"color:#ffffff;\">"+text+"</td></tr>";
        out += "<tr><td align=\"center\"><img src=\""+GUI_GRAPHICS+"status_300x10.gif\" alt=\"\"></td></tr>";
        out += "</table></center>";
        top.editorMain.document.getElementById(id).innerHTML = out;
    }//statusbar

    function in_array(key,arr) {
        for(var c=0;c<arr.length;c++)
            if(key == arr[c]) return true;
        return false;
    }//in_array

    function arrayItemRemove(arr,key) {
        var newArr = Array();
        for(var c=0;c<arr.length;c++) {
            if(key != arr[c]) newArr.push(arr[c]);
        }
        return newArr;
    }//arrayItemRemove

    function htmlentities(str) {
        str = str.replace(/&/g,"_ZxZamp;");
        str = str.replace(/á/g,"_ZxZaacute;");
        str = str.replace(/Á/g,"_ZxZAacute;");
        str = str.replace(/â/g,"_ZxZacirc;");
        str = str.replace(/Â/g,"_ZxZAcirc;");
        str = str.replace(/´/g,"_ZxZacute;");
        str = str.replace(/æ/g,"_ZxZaelig;");
        str = str.replace(/Æ/g,"_ZxZAElig;");
        str = str.replace(/à/g,"_ZxZagrave;");
        str = str.replace(/À/g,"_ZxZAgrave;");
        str = str.replace(/å/g,"_ZxZaring;");
        str = str.replace(/Å/g,"_ZxZAring;");
        str = str.replace(/ã/g,"_ZxZatilde;");
        str = str.replace(/Ã/g,"_ZxZAtilde;");
        str = str.replace(/ä/g,"_ZxZauml;");
        str = str.replace(/Ä/g,"_ZxZAuml;");
        str = str.replace(/¦/g,"_ZxZbrvbar;");
        str = str.replace(/ç/g,"_ZxZccedil;");
        str = str.replace(/Ç/g,"_ZxZCcedil;");
        str = str.replace(/¸/g,"_ZxZcedil;");
        str = str.replace(/¢/g,"_ZxZcent;");
        str = str.replace(/©/g,"_ZxZcopy;");
        str = str.replace(/¤/g,"_ZxZcurren;");
        str = str.replace(/°/g,"_ZxZdeg;");
        str = str.replace(/÷/g,"_ZxZdivide;");
        str = str.replace(/é/g,"_ZxZeacute;");
        str = str.replace(/É/g,"_ZxZEacute;");
        str = str.replace(/ê/g,"_ZxZecirc;");
        str = str.replace(/Ê/g,"_ZxZEcirc;");
        str = str.replace(/è/g,"_ZxZegrave;");
        str = str.replace(/È/g,"_ZxZEgrave;");
        str = str.replace(/ð/g,"_ZxZeth;");
        str = str.replace(/ë/g,"_ZxZeuml;");
        str = str.replace(/Ë/g,"_ZxZEuml;");
        str = str.replace(/½/g,"_ZxZfrac12;");
        str = str.replace(/¼/g,"_ZxZfrac14;");
        str = str.replace(/¾/g,"_ZxZfrac34;");
        str = str.replace(/í/g,"_ZxZiacute;");
        str = str.replace(/î/g,"_ZxZicirc;");
        str = str.replace(/Î/g,"_ZxZIcirc;");
        str = str.replace(/¡/g,"_ZxZiexcl;");
        str = str.replace(/ì/g,"_ZxZigrave;");
        str = str.replace(/Ì/g,"_ZxZIgrave;");
        str = str.replace(/¿/g,"_ZxZiquest;");
        str = str.replace(/ï/g,"_ZxZiuml;");
        str = str.replace(/Ï/g,"_ZxZIuml;");
        str = str.replace(/«/g,"_ZxZlaquo;");
        str = str.replace(/¯/g,"_ZxZmacr;");
        str = str.replace(/µ/g,"_ZxZmicro;");
        str = str.replace(/·/g,"_ZxZmiddot;");
        str = str.replace(/¬/g,"_ZxZnot;");
        str = str.replace(/ñ/g,"_ZxZntilde;");
        str = str.replace(/Ñ/g,"_ZxZNtilde;");
        str = str.replace(/ó/g,"_ZxZoacute;");
        str = str.replace(/Ó/g,"_ZxZOacute;");
        str = str.replace(/ô/g,"_ZxZocirc;");
        str = str.replace(/Ô/g,"_ZxZOcirc;");
        str = str.replace(/ò/g,"_ZxZograve;");
        str = str.replace(/Ò/g,"_ZxZOgrave;");
        str = str.replace(/ª/g,"_ZxZordf;");
        str = str.replace(/º/g,"_ZxZordm;");
        str = str.replace(/ø/g,"_ZxZoslash;");
        str = str.replace(/Ø/g,"_ZxZOslash;");
        str = str.replace(/õ/g,"_ZxZotilde;");
        str = str.replace(/Õ/g,"_ZxZOtilde;");
        str = str.replace(/ö/g,"_ZxZouml;");
        str = str.replace(/Ö/g,"_ZxZOuml;");
        str = str.replace(/¶/g,"_ZxZpara;");
        str = str.replace(/±/g,"_ZxZplusmn;");
        str = str.replace(/£/g,"_ZxZpound;");
        str = str.replace(/»/g,"_ZxZraquo;");
        str = str.replace(/®/g,"_ZxZreg;");
        str = str.replace(/§/g,"_ZxZsect;");
        str = str.replace(/­/g,"_ZxZshy;");
        str = str.replace(/¹/g,"_ZxZsup1;");
        str = str.replace(/²/g,"_ZxZsup2;");
        str = str.replace(/³/g,"_ZxZsup3;");
        str = str.replace(/ß/g,"_ZxZszlig;");
        str = str.replace(/þ/g,"_ZxZthorn;");
        str = str.replace(/×/g,"_ZxZtimes;");
        str = str.replace(/ú/g,"_ZxZuacute;");
        str = str.replace(/Ú/g,"_ZxZUacute;");
        str = str.replace(/û/g,"_ZxZucirc;");
        str = str.replace(/Û/g,"_ZxZUcirc;");
        str = str.replace(/ù/g,"_ZxZugrave;");
        str = str.replace(/Ù/g,"_ZxZUgrave;");
        str = str.replace(/¨/g,"_ZxZuml;");
        str = str.replace(/ü/g,"_ZxZuuml;");
        str = str.replace(/Ü/g,"_ZxZUuml;");
        str = str.replace(/ý/g,"_ZxZyacute;");
        str = str.replace(/Ý/g,"_ZxZYacute;");
        str = str.replace(/¥/g,"_ZxZyen;");
        str = str.replace(/ÿ/g,"_ZxZyuml;");
        str = str.replace(/ /g,"_ZxZnbsp;");
        str = str.replace(/</g,"_ZxZlt;");
        str = str.replace(/>/g,"_ZxZgt;");
        return str;

    }//htmlentities

    function htmlClear(str) {
        str = str.replace(/_ZxZamp;/g,"&");
        str = str.replace(/_ZxZaacute;/g,"á");
        str = str.replace(/_ZxZAacute;/g,"Á");
        str = str.replace(/_ZxZacirc;/g,"â");
        str = str.replace(/_ZxZAcirc;/g,"Â");
        str = str.replace(/_ZxZacute;/g,"´");
        str = str.replace(/_ZxZaelig;/g, "æ");
        str = str.replace(/_ZxZAElig;/g,"Æ");
        str = str.replace(/_ZxZagrave;/g, "à");
        str = str.replace(/_ZxZAgrave;/g, "À");
        str = str.replace(/_ZxZaring;/g,"å");
        str = str.replace(/_ZxZAring;/g,"Å");
        str = str.replace(/_ZxZatilde;/g,"ã");
        str = str.replace(/_ZxZAtilde;/g,"Ã");
        str = str.replace(/_ZxZauml;/g,"ä");
        str = str.replace(/_ZxZAuml;/g,"Ä");
        str = str.replace(/_ZxZbrvbar;/g,"¦");
        str = str.replace(/_ZxZccedil;/g,"ç");
        str = str.replace(/_ZxZCcedil;/g,"Ç");
        str = str.replace(/_ZxZcedil;/g,"¸");
        str = str.replace(/_ZxZcent;/g,"¢");
        str = str.replace(/_ZxZcopy;/g,"©");
        str = str.replace(/_ZxZcurren;/g,"¤");
        str = str.replace(/_ZxZdeg;/g,"°");
        str = str.replace(/_ZxZdivide;/g,"÷");
        str = str.replace(/_ZxZeacute;/g,"é");
        str = str.replace(/_ZxZEacute;/g,"É");
        str = str.replace(/_ZxZecirc;/g,"ê");
        str = str.replace(/_ZxZEcirc;/g,"Ê");
        str = str.replace(/_ZxZegrave;/g,"è");
        str = str.replace(/_ZxZEgrave;/g,"È");
        str = str.replace(/_ZxZeth;/g,"ð");
        str = str.replace(/_ZxZeuml;/g,"ë");
        str = str.replace(/_ZxZEuml;/g,"Ë");
        str = str.replace(/_ZxZfrac12;/g,"½");
        str = str.replace(/_ZxZfrac14;/g,"¼");
        str = str.replace(/_ZxZfrac34;/g,"¾");
        str = str.replace(/_ZxZiacute;/g,"í");
        str = str.replace(/_ZxZicirc;/g,"î");
        str = str.replace(/_ZxZIcirc;/g,"Î");
        str = str.replace(/_ZxZiexcl;/g,"¡");
        str = str.replace(/_ZxZigrave;/g,"ì");
        str = str.replace(/_ZxZIgrave;/g,"Ì");
        str = str.replace(/_ZxZiquest;/g,"¿");
        str = str.replace(/_ZxZiuml;/g,"ï");
        str = str.replace(/_ZxZIuml;/g,"Ï");
        str = str.replace(/_ZxZlaquo;/g,"«");
        str = str.replace(/_ZxZmacr;/g,"¯");
        str = str.replace(/_ZxZmicro;/g,"µ");
        str = str.replace(/_ZxZmiddot;/g,"·");
        str = str.replace(/_ZxZnot;/g,"¬");
        str = str.replace(/_ZxZntilde;/g,"ñ");
        str = str.replace(/_ZxZNtilde;/g,"Ñ");
        str = str.replace(/_ZxZoacute;/g,"ó");
        str = str.replace(/_ZxZOacute;/g,"Ó");
        str = str.replace(/_ZxZocirc;/g,"ô");
        str = str.replace(/_ZxZOcirc;/g,"Ô");
        str = str.replace(/_ZxZograve;/g,"ò");
        str = str.replace(/_ZxZOgrave;/g,"Ò");
        str = str.replace(/_ZxZordf;/g,"ª");
        str = str.replace(/_ZxZordm;/g,"º");
        str = str.replace(/_ZxZoslash;/g,"ø");
        str = str.replace(/_ZxZOslash;/g,"Ø");
        str = str.replace(/_ZxZotilde;/g,"õ");
        str = str.replace(/_ZxZOtilde;/g,"Õ");
        str = str.replace(/_ZxZouml;/g,"ö");
        str = str.replace(/_ZxZOuml;/g,"Ö");
        str = str.replace(/_ZxZpara;/g,"¶");
        str = str.replace(/_ZxZplusmn;/g,"±");
        str = str.replace(/_ZxZpound;/g,"£");
        str = str.replace(/_ZxZraquo;/g,"»");
        str = str.replace(/_ZxZreg;/g,"®");
        str = str.replace(/_ZxZsect;/g,"§");
        str = str.replace(/_ZxZshy;/g,"­");
        str = str.replace(/_ZxZsup1;/g,"¹");
        str = str.replace(/_ZxZsup2;/g,"²");
        str = str.replace(/_ZxZsup3;/g,"³");
        str = str.replace(/_ZxZszlig;/g,"ß");
        str = str.replace(/_ZxZthorn;/g,"þ");
        str = str.replace(/_ZxZtimes;/g,"×");
        str = str.replace(/_ZxZuacute;/g,"ú");
        str = str.replace(/_ZxZUacute;/g,"Ú");
        str = str.replace(/_ZxZucirc;/g,"û");
        str = str.replace(/_ZxZUcirc;/g,"Û");
        str = str.replace(/_ZxZugrave;/g,"ù");
        str = str.replace(/_ZxZUgrave;/g,"Ù");
        str = str.replace(/_ZxZuml;/g,"¨");
        str = str.replace(/_ZxZuuml;/g,"ü");
        str = str.replace(/_ZxZUuml;/g,"Ü");
        str = str.replace(/_ZxZyacute;/g,"ý");
        str = str.replace(/_ZxZYacute;/g,"Ý");
        str = str.replace(/_ZxZyen;/g,"¥");
        str = str.replace(/_ZxZyuml;/g,"ÿ");
        str = str.replace(/_ZxZnbsp;/g," ");
        str = str.replace(/_ZxZlt;/g,"<");
        str = str.replace(/_ZxZgt;/g,">");
        return str;

    }//htmlClear
    
    
    function enterEasterEgg() {
    
    }//enterEasterEgg
