function Cre8cms_printview(conf) {
        
        this.printviewDiv = conf.printviewdiv;
        this.mainDiv = conf.maindiv;
        this.fontsizes = conf.fontsizes;
        this.helpfile = conf.helpfile;
        this.opt_images = true;
        this.opt_linkurls = false;
        
        this.init = function() {
                document.getElementById('cre8cms_printview_options').style.display = "block";
                document.getElementById('cre8cms_toggle_printview').style.display = "none";
        }
        
        this.hideAllImages = function() {
                if (this.opt_images == true) {
                        main = document.getElementById(this.mainDiv);
                        allImgs = main.getElementsByTagName("img");
                        if (allImgs) {
                                for(i=0; i<allImgs.length; i++) {
                                        allImgs[i].style.display = "none";
                                }
                        }
                        this.opt_images = false;
                }
        }

        this.showAllImages = function() {
                if (this.opt_images == false) {
                        main = document.getElementById(this.mainDiv);
                        allImgs = main.getElementsByTagName("img");
                        if (allImgs) {
                                for(i=0; i<allImgs.length; i++) {
                                        allImgs[i].style.display = "block";
                                }
                        }
                        this.opt_images = true;
                }
        }

        
        this.replaceLinks = function() {
                if (this.opt_linkurls == false) {
                        main = document.getElementById(this.mainDiv);
                        allLinks = main.getElementsByTagName("a");
                        if (allLinks) {
                                for(i=0; i<allLinks.length; i++) {
                                        url = allLinks[i].getAttribute("href");
                                        if (allLinks[i].innerHTML.indexOf(url) == -1 && url.substr(0, 4) == "http") {
                                                allLinks[i].innerHTML = allLinks[i].innerHTML+" [URL: <i>"+url+"</i>]";
                                        }
                                }
                        }
                        this.opt_linkurls = true;
                }
        }

        this.restoreLinks = function() {
                if (this.opt_linkurls == true) {
                        main = document.getElementById(this.mainDiv);
                        allLinks = main.getElementsByTagName("a");
                        if (allLinks) {
                                for(i=0; i<allLinks.length; i++) {
                                        innerText = allLinks[i].innerHTML;
                                        linkParts = innerText.split(" [URL: ");
                                        if (linkParts && linkParts.length>=2) {
                                                allLinks[i].innerHTML = linkParts[0];
                                        }
                                }
                        }
                        this.opt_linkurls = false;
                }
        }


        this.increaseFontsize = function() {
                currSize = document.getElementById(this.mainDiv).style.fontSize;
                maxReached = false;
                newSize = "";
                if (currSize == this.fontsizes[this.fontsizes.length -1]+"px") {
                        // do nothing
                        maxReached = true;
                } else if (this.fontsizes.contains(currSize.replace("px", ""))){
                        newSize = parseInt(currSize.replace("px", ""))+1;
                        document.getElementById(this.mainDiv).style.fontSize = newSize+"px";
                } else {
                        newSize = this.fontsizes[1];
                        document.getElementById(this.mainDiv).style.fontSize = newSize+"px";
                }
                
                if (!maxReached) {
                        for (i=1; i<=5; i++) {
                                allheaders = document.getElementById(this.mainDiv).getElementsByTagName("h"+i);
                                if (allheaders) {
                                        for (j=0; j<allheaders.length; j++) {
                                                oldSize = allheaders[j].style.fontSize;
                                                if (!oldSize) {
                                                        oldSize = (newSize+i)+"px";
                                                }
                                                newSize2 =  (newSize+(i*2))+"px";
                                                allheaders[j].style.fontSize = newSize2;
                                        }
                                }
                        }

                }
        }

        this.decreaseFontsize = function() {
                currSize = document.getElementById(this.mainDiv).style.fontSize;
                maxReached = false;
                newSize = "";
                if (currSize == this.fontsizes[0]+"px") {
                        // do nothing
                        maxReached = true;
                } else if (this.fontsizes.contains(currSize.replace("px", ""))){
                        newSize = parseInt(currSize.replace("px", ""))-1;
                        document.getElementById(this.mainDiv).style.fontSize = newSize+"px";
                } else {
                        newSize = this.fontsizes[0];
                        document.getElementById(this.mainDiv).style.fontSize = newSize+"px";
                }
                
                if (!maxReached) {
                        for (i=1; i<=5; i++) {
                                allheaders = document.getElementById(this.mainDiv).getElementsByTagName("h"+i);
                                if (allheaders) {
                                        for (j=0; j<allheaders.length; j++) {
                                                oldSize = allheaders[j].style.fontSize;
                                                if (!oldSize) {
                                                        oldSize = (newSize+i)+"px";
                                                }
                                                newSize2 =  (newSize+(i*2))+"px";
                                                allheaders[j].style.fontSize = newSize2;
                                        }
                                }
                        }

                }
        }


        this.hidePrintOptions = function() {
                document.getElementById('cre8cms_printview_options').style.display = "none";
                document.getElementById('cre8cms_toggle_printview').style.display = "block";
        }
        this.showPrintOptions = function() {
                document.getElementById('cre8cms_toggle_printview').style.display = "none";
                document.getElementById('cre8cms_printview_options').style.display = "block";
        }
        
        this.showHelp = function() {
                helpWindow = window.open(this.helpfile, "cre8CMSPrintviewHelp", "width=300,height=300,left=100,top=50,scrollbars=yes,resizable=no");
                helpWindow.focus();
        }
        
        this.printPage = function() {
                this.hidePrintOptions();
                window.print();
        }

}

Array.prototype.contains = function (elem) {
        var i;
        for (i = 0; i < this.length; i++) {
                if (this[i] == elem) {
                        return true;
                }
        }
        return false;
}



