
function updateLinkHref(value) {
    var targetUrl = appendDateRange('');
    var hrefIndex = findLinkById(value);
    if (hrefIndex > -1)
        document.links[hrefIndex].href = targetUrl; 
}

function replaceQueryString(targetUrl, param, value) {
    var re = new RegExp("([?|&])" + param + "=.*?(&|$)", "i");
    if (targetUrl.toString().match(re))
        return targetUrl.toString().replace(re, '$1' + param + "=" + value + '$2');
    else {
        var query = new RegExp("=([a-z]|[0-9])+", "i");
        if (targetUrl.toString().match(query)) {             
            return targetUrl.toString() + '&' + param + "=" + value;
        } else return targetUrl.toString() + '?' + param + "=" + value;
    }        
}

function removeParameterFromUrl(targetUrl, param) {
    var re = new RegExp("([?|&])" + param + "=.*?(&|$)", "i");
    if( typeof param == "undefined" || param == null || param == "" )
        return targetUrl;
    targetUrl = targetUrl.toString().replace(re, "$1");    
    // remove any leftover crud
    targetUrl = targetUrl.toString().replace(/[&;]$/, "");
    return targetUrl;
}

function getQuerystring(key, default_, targetUrl) {
    if (default_ == null) 
    default_ = "";
    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
    var qs = regex.exec(targetUrl.toString());
    if (qs == null)
        return default_;
    else
        return qs[1];
}

function appendToURL(itemHref, optionSelected) {

    var categoryParameter = "";
    var stateParameter = "";
    var targetUrl = window.location;

    var hrefIndex = findLinkByHref(itemHref);

    if (document.getElementById("selectedState"))
        if(document.getElementById("selectedState").getAttribute("title") != '')
            targetUrl = replaceQueryString(targetUrl, 'state', document.getElementById("selectedState").getAttribute("title"));

    if (document.getElementById("selectedCategory"))
        if (document.getElementById("selectedCategory").getAttribute("title") != '')
            targetUrl = replaceQueryString(targetUrl, 'category', document.getElementById("selectedCategory").getAttribute("title"));

    if (optionSelected == 'state') {
        var newState = getQuerystring('state', '', itemHref);
        targetUrl = replaceQueryString(targetUrl, 'state', newState);
    }

    if (optionSelected == 'category') {
        var newCategory = getQuerystring('category', '', itemHref);
        targetUrl = replaceQueryString(targetUrl, 'category', newCategory);
    }

    if (optionSelected == 'allstates') {
        var hrefIndex = findLinkByTitle(itemHref, 'All states');               
        targetUrl = removeParameterFromUrl(targetUrl, 'state');
    }

    if (optionSelected == 'allcategories') {
        var hrefIndex = findLinkByTitle(itemHref, 'All categories');
        targetUrl = removeParameterFromUrl(targetUrl, 'category');
    }
        
    targetUrl = appendDateRange(targetUrl);
                
    if (hrefIndex > -1)
        document.links[hrefIndex].href = targetUrl;

}               

function trim(stringToTrim) {
    return stringToTrim.replace(/^\s+|\s+$/g, "");
}

function ltrim(stringToTrim) {
    return stringToTrim.replace(/^\s+/, "");
}

function rtrim(stringToTrim) {
    return stringToTrim.replace(/\s+$/, "");
}

function findLinkByHref(href) {
    for (var i = 0; i < document.links.length; i++) {
        if (document.links[i].href == href) return i;
    }
    return -1;
}

function findLinkById(value) {
    for (var i = 0; i < document.links.length; i++) {
        if (document.links[i].id == value) 
            return i;
    }
    return -1;
}

function findLinkByTitle(href, value) {
    for (var i = 0; i < document.links.length; i++) {
        if (document.links[i].href == href) {
            if (document.links[i].title == value)
                return i;
        }
    }
    return -1;
}        

function switchTimeNavigationVisibility() {

    var elementID = "timeNavigation";

    var current = getStyle(elementID);

    if (current == "visible") {
        document.getElementById(elementID).style.visibility = "hidden";
    }
    else {
        document.getElementById(elementID).style.visibility = "visible";
    }
}

function getStyle(elementID) {
    var temp = document.getElementById(elementID).style.visibility;

    return temp;
}

function redirectUrl(value) {
    var emailaddress = document.getElementById("email");
    if (emailaddress) {
        if (emailaddress.value == '' || emailaddress.value == 'Your Email Address') {
            alert('You have to provide an e-mail address.');
            return false;
        }
        var temp = value + "?Email%20Address=" + emailaddress.value;
        location.href = value + "?Email%20Address=" + emailaddress.value;
        return true;
    }
}

function clearText() {    
    var emailaddress = document.getElementById("email");
    if ('Your Email Address' == emailaddress.value) emailaddress.value = '';
    else if (emailaddress.value == '') emailaddress.value = 'Your Email Address';
}
