    // Rollover code start
if (document.images) {
	var imagesOff = new Object();
	imagesOff["install"] = new Image(199, 58);
	imagesOff["install"].src="../images/button_install.gif";
	imagesOff["installtop"] = new Image(106, 24);
	imagesOff["installtop"].src="../images/top_installbutton_off.gif";

	var imagesOn = new Object();
	imagesOn["install"] = new Image(199, 58);
	imagesOn["install"].src="../images/button_install_on.gif";
	imagesOn["installtop"] = new Image(106, 24);
	imagesOn["installtop"].src="../images/top_installbutton_on.gif";
}

function setImage(imgName, type) {
	if (document.images) {
		if (type == "on") {
			document.images[imgName].src = imagesOn[imgName].src;
			return true;
		} else if (type == "off") {
			document.images[imgName].src = imagesOff[imgName].src;
			return true;
		}
	}
	return false;
}
// Rollover code end
function installBlueOrganizer( url ){
    if ( url ){
        var browser = navigator.userAgent;
        if ( browser.indexOf( "Firefox" ) == -1 ) {
            alert( "blueorganizer requires Firefox 1.5 or 2.0.0.*\nPlease download it at http://www.firefox.com." );
            return false;
        }

        var params = new Array();
        params["blueorganizer"] = {
            URL: url,
            IconURL: "../images/organizericon.png",
            toString: function () { return this.URL; }
        };
        InstallTrigger.install(params);
    }
    else {
        window.open( "https://addons.mozilla.org/en-US/firefox/addons/policy/0/3481/26049", "_newTab" );
    }
}

var domain = document.URL.split("/")[2];
var FEEDBACK_QUERY_BASE = "http://" + domain + "/users/Feedback.php?";
var EMAIL_FEEDBACK_QUERY_BASE = "http://" + domain + "/users/emailFeedback.php?";

function blueFeedback( fForm, mSuccess, mMissing, mErr, useGenFeedback ) {
    var doc = window.document;
    var feedbackForm = doc.getElementById( fForm );
    var messageEl = doc.getElementById( mSuccess );
    try {
        if ( feedbackForm.BlueFeedback.value == '' ||
             feedbackForm.BlueFeedbackFrom.value == '' ) {
            messageEl = doc.getElementById( mMissing );
        } else {
            var req = getAjaxRequest();
            if ( req ) {
                var type = feedbackForm.BlueFeedbackType.value;
                var queryBase = FEEDBACK_QUERY_BASE;
                if ( type == "General feedback" || useGenFeedback ){
                    queryBase = EMAIL_FEEDBACK_QUERY_BASE;
                }
                var url = queryBase + "feedbackType=" + type +
                     "&feedback=" + feedbackForm.BlueFeedback.value +
                     "&feedbackFrom=" + feedbackForm.BlueFeedbackFrom.value;
                //alert( url );
                req.open( "GET", url, true );
                req.send(null);
                feedbackForm.BlueFeedbackFrom.value = '';
                feedbackForm.BlueFeedback.value = '';
            }
        }
    } catch ( e ) {
        alert( e );
        messageEl = doc.getElementById( mErr );
    }
    toggleClazz( messageEl, "" );    
    setTimeout( toggleClazz, 5000, messageEl, "invisible"  );
    return false;
}

function getAjaxRequest() {
    try { // Firefox, Opera 8.0+, Safari
        return new XMLHttpRequest();
    } catch (e) {}


    // Internet Explorer
    try {
        return new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {}

    // Old IE
    try {
        return new ActiveXObject("Microsoft.XMLHTTP");
    } catch (e) {}

    return null;
}

function toggleClazz( el, clazz ) {
    el.className = clazz;
}

function getParams() {
    var params = new Map();
    var idx = document.URL.indexOf( "?" );
    if ( idx != -1 ) {
        var pairs = document.URL.substring( idx + 1 ).split( "&" );
        for ( var j = 0; j < pairs.length; j++ ) {
             var nameVal = pairs[j].split("=");
             params.put( nameVal[0], nameVal[1] );
        }
    }
    return params;
}

function getSmartLinksURL( serverId ){
    return "http://s6.smrtlnks.com:2007/";
//    serverId = serverId ? serverId : "s";
//    return "http://" + serverId + Math.floor(Math.random() * 10 + 1) + ".smrtlnks.com/";
}


function showEnableLinksCode( id ) {
   var t = document.getElementById( id );
   if ( t != null ){
       t.innerHTML = '<script type=\"text/javascript\" defer="defer" src=' + getSmartLinksURL(true) + 'js/bluelink-window.js&auto=yes><\/script>';
       t.style.display = 'block';
       highlightText( id );
   }  
}

function highlightText( textid ) {
    var t = $(textid);
    t.focus(); t.select();
}

function showUrl( id ) {
    try {
        var link = $( id + "_link" ).firstChild.firstChild;
        var url = $( id + "_url" );
        var toggle = $( id + "_toggle" ).firstChild;
        var on = ( toggle.firstChild.nodeValue == 'Show Link' );

        if ( on ) {
            url.firstChild.nodeValue = link.getAttribute( "href" );
        }
        url.style.display = (on) ? "block" : "none";
        toggle.firstChild.nodeValue = (on) ? "Hide Link" : "Show Link";
  } catch ( e) { alert( e ); }

}

function getWindowSize() {
    if (self.innerWidth) {
        var w = self.innerWidth;
        var h = self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientWidth) {
        var w = document.documentElement.clientWidth;
        var h = document.documentElement.clientHeight;
    }
    else if (document.body) {
        var w = document.body.clientWidth;
        var h = document.body.clientHeight;
    }
     if (self.pageYOffset) {
        x = self.pageXOffset;
        y = self.pageYOffset;
    }
    else if (document.documentElement && document.documentElement.scrollTop){
        x = document.documentElement.scrollLeft;
        y = document.documentElement.scrollTop;
    }
    else if (document.body) {
        x = document.body.scrollLeft;
        y = document.body.scrollTop;
    }
    return [x, y, w, h ];
}

function Map() {
	this.keys = new Object();
}

Map.prototype.put = function( key, value ) {
    if ( value == null ) value = key;
    this.keys[ key ] = value;
}

Map.prototype.get = function( key ) {
    var result = this.keys[ key ];
    return ( typeof(result) == 'undefined' || (result == undefined) ) ? null : result;
}

Map.prototype.getKeys = function() {
    var k = new Array();
    var idx = 0;
    for ( var key in this.keys ) {
        k[ idx++ ] = key;
    }
    return k;
}    

function $(id) {
    return document.getElementById(id);
}

function isEmpty( str ){
    return str == null || str == "";    
}

function addClass( element, clazz ){
    var className = element.getAttribute( "className" ) ? element.getAttribute( "className" ) : element.className;
    if ( className.indexOf( clazz ) == -1 ){
        if ( element.getAttribute( "className" ) ){
            element.setAttribute( "className", className + " " + clazz );
        }
        else {
            element.className = className + " " + clazz;
        }
    }
}

function removeClass( element, clazz ){
    var className = element.getAttribute( "className" ) ? element.getAttribute( "className" ) : element.className;
    var classes = className.split(" ");
    
    var newClassName = "";
    for ( var i = 0; i < classes.length; i++ ){
        if ( classes[i] != clazz ){
            if ( newClassName != "" ) newClassName += " ";
            newClassName += classes[i];
        }
    }
    if ( element.getAttribute( "className" ) ){
        element.setAttribute( "className", newClassName );
    }
    else {
        element.className = newClassName;
    }
}

function AJAXInteraction(url, callback, messageAreaId) {
    var req = init();
    req.onreadystatechange = processRequest;

    function init() {
        if (window.ActiveXObject) {
            return new ActiveXObject("Microsoft.XMLHTTP");
        }
        else if (window.XMLHttpRequest) {
            return new XMLHttpRequest();
        }
    }

    function processRequest () {
        // readyState of 4 signifies request is complete
        if (req.readyState == 4) {
	    // status of 200 signifies sucessful HTTP call
            if (req.status == 200) {
                if (callback) callback(req, messageAreaId);
            }
        }
    }

    this.doGet = function() {
      // make a HTTP GET request to the URL asynchronously
      req.open("GET", url, true);
      req.send(null);
    }
}

function setValidationMsg( id, msg, isError ){
    if ( msg == null ) msg = "";
    if ( isError == null ) isError = false;
    $(id).innerHTML = msg;
    $(id).className = isError ? "ErrorLabel" : "SuccessLabel";
}

function toggleSection( section ) {
    var display = $( section ).style.display;
    $( section ).style.display = ( display == "block" ) ? "none" : "block";
    var arrow = $( section + "-arrow" );
    if ( arrow ){
        arrow.src = ( display == "block" ) ?  "../images/feeds_twarrow_rt.gif" : "../images/feeds_twarrow_dwn.gif";
    }
}

function setTextAreaFromParam( id, param ){
    var split = document.URL.split( param + "=" );    
    if ( split.length > 1 ){
        //$(id).innerHTML = unescape( split[1] );
        $(id).value = unescape( split[1] );
        $(id).select();
    }
    else {
        $(id).style.display = "none";
    }
}

function isFirefox() {
    return ( navigator.userAgent.indexOf( "Firefox" ) != -1 );
}

function isFlock() {
    return ( navigator.userAgent.indexOf( "Flock" ) != -1 );
}

function getCookie( name ) {
    var start = document.cookie.indexOf( name + "=" );
    var len = start + name.length + 1;
    if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
        return null;
    }
    if ( start == -1 ) return null;
    var end = document.cookie.indexOf( ";", len );
    if ( end == -1 ) end = document.cookie.length;
    return document.cookie.substring( len, end );
}

function blueOrganizerInstalled() {
    return ( isFirefox() || isFlock() ) && getCookie( "AdaptiveBlue.cookie" );
}