var _DEFAULT = "Search...";

function searchFocus(object) {
    if (object.value == _DEFAULT) {
        object.value = "";

        object.style.color = "#000000";
    }
}

function searchBlur(object) {
    if (object.value == "") {
        object.value = _DEFAULT;

        object.style.color = "#A9A9A9";
    }
}

function boxHighlight(object) {
    // Get the parent ul
    var parent = object.parentNode;

    // Get each of the li's    
    var liNodes = parent.getElementsByTagName("li");
    
    // Iterate through each
    for(var i = 0; i < liNodes.length; i++) {
        // If the classname doesn't contain first
        if (liNodes.item(i).className.indexOf("first") == -1) {
            // Then blank it
            liNodes.item(i).className = "";
        } else {
            // Otherwise set it to only be first
            liNodes.item(i).className = "first";
        }
            
        // And blank the corresponding div classname
        document.getElementById('box_' + liNodes.item(i).id).className = "";
    }
    
    // If the current object doesn't have a classname with first
    if (object.className.indexOf("first") == -1) {
        // Then simply set it to selected
        object.className = "selected";
    } else {
        // Otherwise set it to first and selected
        object.className = "first selected";
    }
    
    // And fill corresponding div classname with visible
    document.getElementById('box_' + object.id).className = "visible";
}

function hasClass(ele,cls) {
    return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
 
function addClass(ele,cls) {
    if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}
 
function removeClass(ele,cls) {
    if (hasClass(ele,cls)) {
        var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
        ele.className=ele.className.replace(reg,' ');
    }
}

function keyPressHandler(evt) {
    var mailform, key;
    
    if (!evt) var evt = window.event;

    // Get mailform and keypress
    mailform = document.getElementById('mailformbg');
    key = evt.keyCode ? evt.keyCode : evt.charCode;
    
    // If the key is Esc (27) then remove the visible class
    if (key == 27) removeClass(mailform, 'visible');
}

// Setup listeners and call functions
function setup() {
    // Setup variables to access elements
    var search, mailform, subscribelink, emailclose, subscribebutton, textbox;
  
    // Get the elements
    search = document.getElementById('s');
    mailform = document.getElementById('mailformbg');
    subscribelink = document.getElementById('subscribe');
    emailclose = document.getElementById('mc_embed_close');
    subscribebutton = document.getElementById('mc-embedded-subscribe');
    textbox = document.getElementById('mce-EMAIL');
  
    // Run searchBlur to setup default text and colour of search box
    searchBlur(search);
    
    // Attach listeners to search box
    search.onfocus = function(){searchFocus(this);};
    search.onblur = function(){searchBlur(this);};
    search.onload = function(){searchBlur(this);};
    
    // Attach listeners to search box
    subscribelink.onclick = function(){addClass(mailform, 'visible'); textbox.focus(); return false;};
    
    // Attach listeners to newsletter signup close link
    emailclose.onclick = function(){removeClass(mailform, 'visible'); return false;};
    
    // Attach listeners to subscribe button (to close box when subscribing)
    subscribebutton.onclick = function(){removeClass(mailform, 'visible'); return false;};
    
    // Remove subscribe link URL and replace with hash
    subscribelink.href = "#";
    
    if(window.addEventListener){ // For FF
        document.addEventListener("keyup", keyPressHandler, false);
    } else {
        // Add listeners to mailform for escape key
        document.onkeyup = function(){keyPressHandler();}; // For everything but FF
    }
}

// Run setup when JavaScript loads
window.onload = function() {
    setup();
}