﻿
//window.onload = function() {
//    alert('onload function');
//    if (document.getElementById('pdffile') != null) {
//        var pdfFile = document.getElementById('pdffile').innerHTML;
//        checkPrintBasket(pdfFile);
//    }

//    if (document.getElementById('addpagelink') != null) {
//        document.getElementById('addpagelink').onclick = function() {
//            var pdfFile = document.getElementById('pdffile').innerHTML;
//            addPageToBasket(pdfFile);
//        }
//    }

//    if (document.getElementById('printpage') != null) {
//        document.getElementById('printpage').onclick = function() {
//            window.print();
//        }
//    }
//}

function initDocTools() {
    if (document.getElementById('pdffile') != null) {
        var pdfFile = document.getElementById('pdffile').innerHTML;
        checkPrintBasket(pdfFile);
    }

    if (document.getElementById('addpagelink') != null) {
        document.getElementById('addpagelink').onclick = function() {
            var pdfFile = document.getElementById('pdffile').innerHTML;
            addPageToBasket(pdfFile);
        }
    }

    if (document.getElementById('printpage') != null) {
        document.getElementById('printpage').onclick = function() {
            window.print();
        }
    }
}


//-------------------------------------------------------------------------------------------------------------------------------------
//
//Barry Fogarty 9 Jan 2009
//
//The following functions are required site-wide to power the PDF Basket popup and to pass the required information (Page Url and Title)
//
//-------------------------------------------------------------------------------------------------------------------------------------


//Add Page - gets a reference to the document url and title to pass to the popup
function addPageToBasket(pdfFile) {
    //Add using a JS Cookie if it does not already exist in cookie
    var pBasket = getCookie('pBasket');
    if (pBasket.indexOf(pdfFile) < 0) {
        pBasket += pdfFile + ',';
        setCookie('pBasket', pBasket, '');
    }
    //Recalculate pdf basket page counter
    //updatePageCounter();
    toggleDocToolBar('PageAdded');
    return false;
    //debug:
    //alert(pdfFile);
    //alert(getCookie('pBasket'));
}

//increments pdf basket page counter if a valid page has been added
function updatePageCounter() {
    var pBasketPageCount = getCookie('pBasketPageCount');
    pBasketPageCount = parseInt(pBasketPageCount);
    if (isNaN(pBasketPageCount)) {
        pBasketPageCount = 1;
    }
    else {
        pBasketPageCount++;
    }
    setCookie('pBasketPageCount', pBasketPageCount, '');
    //displayPrintBasketPageCount(pBasketPageCount);

    //debug:
    //alert(getCookie('pBasketPageCount'));
}

//Checks to see if current page is in print basket
//Returns value of pBasketPageCount and enables the counter view if > 0
function checkPrintBasket(pdfFile) {
    var pdfFile = document.getElementById('pdffile').innerHTML;
    var pBasket = getCookie('pBasket');
    var pBasketPageCount = getCookie('pBasketPageCount');
    if (pBasket.indexOf(pdfFile) != -1) {
        toggleDocToolBar('PageAdded');
    }
    if (parseInt(pBasketPageCount) > 0) {
        //displayPrintBasketPageCount(pBasketPageCount);
    }
}

//Switch display mode of the doc toolbar if user has added current page to basket
function toggleDocToolBar(mode) {
    if (document.getElementById('doc-tools') != null) {
        if (mode == 'PageAdded') {
            document.getElementById('add').style.display = 'none';
            document.getElementById('added').style.display = '';
        }
    }
}

//Show PrintBasketPageCount element with the correct number of pages displayed
function displayPrintBasketPageCount(pBasketPageCount) {
    if (document.getElementById('doc-tools') != null) {
        //var pageWord = (pBasketPageCount == 1) ? ' page' : ' pages';
        //document.getElementById('pagecounter').innerHTML = pBasketPageCount + pageWord + " in PDF basket";
        var pageWord = ' page(s)';
        document.getElementById('pagecounter').innerHTML = ': ' + pBasketPageCount + pageWord;
        document.getElementById('pagecounter').style.display = '';
    }
}


//Check if page is requested in PDF Basket Mode (sets the print stylesheet as the screen stylesheet if pdfMode querystring element = true)
//Allows PDF Converter to apply the print stylesheet so it can style the page correctly for its output (hide nav elements etc)
function checkMode() {
    var qs = new Querystring();
    if (qs.contains("pdfMode")) {
        //enable the print stylesheet
        var pdfStyleSheet = document.getElementById('pdfStyleSheet');
        pdfStyleSheet.media = 'screen';
    }
    else {
        initDocTools(); //avoid adding another body onload call to all documents - check print basket contents here instead.
    }
}

//-------------------------------------------------------------------------------------------------------------------------------------
//
//Barry Fogarty 9 Jan 2009
//
//Helper functions for the above scripts : Querystring methods
//
//-------------------------------------------------------------------------------------------------------------------------------------


/* Client-side access to querystring name=value pairs
Version 1.3
28 May 2008
	
License (Simplified BSD):
http://adamv.com/dev/javascript/qslicense.txt
*/
function Querystring(qs) { // optionally pass a querystring to parse
    this.params = {};

    if (qs == null) qs = location.search.substring(1, location.search.length);
    if (qs.length == 0) return;

    // Turn <plus> back to <space>
    // See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
    qs = qs.replace(/\+/g, ' ');
    var args = qs.split('&'); // parse out name/value pairs separated via &

    // split out each name=value pair
    for (var i = 0; i < args.length; i++) {
        var pair = args[i].split('=');
        var name = decodeURIComponent(pair[0]);

        var value = (pair.length == 2)
			? decodeURIComponent(pair[1])
			: name;

        this.params[name] = value;
    }
}

Querystring.prototype.get = function(key, default_) {
    var value = this.params[key];
    return (value != null) ? value : default_;
}

Querystring.prototype.contains = function(key) {
    var value = this.params[key];
    return (value != null);
}

// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -
//
//Barry Fogarty 12 Feb 2009
//
//Cookie management functions - could be modularised into its own JS or common?
//
//-------------------------------------------------------------------------------------------------------------------------------------


function getCookie(c_name) {
    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) c_end = document.cookie.length;
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return "";
}

function setCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function eraseCookie(name) {
    setCookie(name, "", -1);
}