/*************************************************************
* Emap javascript:
*************************************************************/

var Emap = {
    focusMe: function() {
        $("input.focusme").each(function(i) {
            this.focus();
        });
    },

    MAX_TEXT: 45,

    closeWindow: function() {
        window.close();
    },

    addBookmark: function() {
        var title = document.title;
        var url = location.href;

        if (window.opera && window.print) {
            alert("Please use the browser to add to favourites.");
            return false;
        }
        else if (window.sidebar) {
            window.sidebar.addPanel(title, url, "");
            return false;
        }
        else if (document.all) {
            window.external.AddFavorite(url, title);
            return false;
        }
        else {
            alert("Please use the browser to add to favourites.");
            return false;
        }
    },

    PageQuery: function(q) {
        if (q.length > 1) this.q = q.substring(1, q.length);
        else this.q = null;
        this.keyValuePairs = new Array();
        if (q) {
            for (var i = 0; i < this.q.split("&").length; i++) {
                this.keyValuePairs[i] = this.q.split("&")[i];
            }
        }

        this.getKeyValuePairs = function() { return this.keyValuePairs; }

        this.getValue = function(s) {
            for (var j = 0; j < this.keyValuePairs.length; j++) {
                if (this.keyValuePairs[j].split("=")[0] == s)
                    return this.keyValuePairs[j].split("=")[1];
            }
            return false;
        }

        this.getParameters = function() {
            var a = new Array(this.getLength());
            for (var j = 0; j < this.keyValuePairs.length; j++) {
                a[j] = this.keyValuePairs[j].split("=")[0];
            }
            return a;
        }
        this.getLength = function() { return this.keyValuePairs.length; }
    },

    queryString: function(key) {
        var page = new Emap.PageQuery(window.location.search);
        return unescape(page.getValue(key));
    },

    getqueryItem: function(key) {
        if (Emap.queryString(key) == 'false') {
            return false;
        } else {
            return Emap.queryString(key);
        }
    },

    getUri: function(url) {
        var a = url.lastIndexOf("/");
        return url.substring(a + 1, url.length)
    },

    getHiddenValue: function(hiddenInput) {
        return hiddenInput.val();
    },

    trim: function(str, ch) {
        str = str.charAt(str.length - 1) == ch ? str = str.substring(0, str.length - 1) : str
        str = str.charAt(0) == ch ? str = str.substring(1, str.length) : str
        return str;
    },

    popupWindow: function(href) {
        var popupHref = href + "&ispp=true";
        window.open(popupHref, "", "scrollbars=1,resizable=1,width=610");
    },

    backToPrevious: function() {
        var h = window.history;
        if (h.length) {
            h.back();
        }
        return false;
    }
}

/*************************************************************
* Show Hide More Less Text
*************************************************************/

var ShowHideText = {
    init: function(el) {
        var elem = el;
        var textVersionLong;
        //var textVersionFull;
        var textVersionShort;
        //var textFirstParagraph;
        var textTemp;
        var textArray;
        var textlength;


        elem.textVersionLong = ShowHideText.stripWhiteSpace($(elem).text());
        //elem.textVersionFull = $(elem).text();
        //alert(elem.textVersionFull);
        //textFirstParagraph = $(elem).find("p")[0];
        //alert(textFirstParagraph.innerHTML);
        //textTemp = textFirstParagraph;


        elem.textVersionShort = "";
        elem.textArray = ShowHideText.createTextArray(elem.textVersionLong);
        elem.textLength = elem.textArray.length;
        elem.containsFullText = false;

        if (elem.textLength > Emap.MAX_TEXT) {
            elem.textVersionShort = ShowHideText.getTextToDisplay(elem.textArray);
            ShowHideText.appendText(elem);
        }

        //		if (textFirstParagraph) {
        //			
        //		}
    },
    showHideText: function(el) {
        var thisDiv = el;
        ShowHideText.appendText(thisDiv);
    },
    stripWhiteSpace: function(textToConvert) {
        textToConvert = textToConvert.replace(/^\s+|\s+$/g, "");
        return textToConvert;
    },
    createTextArray: function(textToConvert) {
        textToConvert = textToConvert.split(" ");
        return textToConvert;
    },
    getTextToDisplay: function(textArray) {
        var textToDisplay = "";
        for (j = 0; j < Emap.MAX_TEXT && j < textArray.length; j++) {
            textToDisplay += " " + textArray[j];
        }
        return textToDisplay;
    },
    appendText: function(el) {

        $(el).empty();
        if (el.containsFullText) {
            $(el).append('<p>' + el.textVersionLong + ' ' + '<a class="showMoreText" href="#">show less</a></p>');
        }
        else {
            $(el).append('<p>' + el.textVersionShort + ' ' + '<a class="showMoreText" href="#">show more</a></p>');
        }

        $(el).find("a.showMoreText").bind("click", function() {
            ShowHideText.showHideText(el);
            return false;
        });
        el.containsFullText = !el.containsFullText;
    }
}


/************************************************
* Clear specified form values on focus
************************************************/

function clearOnFocus(type) {
    if (!document.getElementsByTagName) return false;
    var fields = document.getElementsByTagName(type);
    for (var i = 0; i < fields.length; i++) {
        if (fields[i].className.match("clearOnFocus")) {
            fields[i].onfocus = function() {
                if (this.value == this.defaultValue) {
                    this.value = "";
                    return false;
                }
            }
            fields[i].onblur = function() {
                if (this.value == "") {
                    this.value = this.defaultValue;
                    return false;
                }
            }
        }
    }
}

function prepareBackLinks() {
    if (!document.getElementsByTagName) return false;
    var links = document.getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) {
        if (links[i].className.match("backLink")) {
            links[i].onclick = function() {
                window.history.back();
                return false;
            }
        }
    }
}

function prepareResultsFilterToggle() {
    if (!document.getElementsByTagName) return false;
    var divs = document.getElementsByTagName("div");
    for (var i = 0; i < divs.length; i++) {
        if (divs[i].className == ("ResultFilter clearfix")) {
            var parent_container = divs[i];
            var inner_divs = divs[i].getElementsByTagName("div");
            var categories_div = "";
            for (var i = 0; i < inner_divs.length; i++) {
                if (inner_divs[i].className.match("categories")) {
                    categories_div = inner_divs[i];
                    break;
                }
            }

            if (categories_div != "") {
                var para = document.createElement("p");
                para.className = "hideShow";
                var link = document.createElement("a");
                link.appendChild(document.createTextNode("Hide Categories"));
                link.setAttribute("href", "#");
                link.onclick = function() {
                    if (categories_div.style.display == "block" || categories_div.style.display == "") {
                        categories_div.style.display = "none";
                        this.innerHTML = "Show categories";
                    }
                    else {
                        categories_div.style.display = "block";
                        this.innerHTML = "Hide categories";
                    }
                    return false;
                }
                para.appendChild(link);
                parent_container.insertBefore(para, categories_div);
            }
            break;
        }
    }
}

window.onload = function() {
    clearOnFocus("input");
    prepareResultsFilterToggle();
    internalAnchor.doInternalRedirect();
}