/*************************************************************
* if it's IE change the display type for div stuff
*************************************************************/
var isIE = (!window.XMLHttpRequest) ? true : false;
var sBrowserInline   = (isIE) ? 'block' : 'inline';
var sBrowserTableCell = (isIE) ? 'block' : 'table-cell';
var sUpArrow   = (isIE) ? '&uarr;' : '&uArr;'
var sDownArrow = (isIE) ? '&darr;' : '&dArr;'

/**
 * Trim leading and trailing spaces.
 * @param      string      
 * @return     string
 */
function trimString(sString)
{
    var sTrimmed = sString.replace(/^\s+|\s+$/g, '');
    return sTrimmed;
}

/**
 * Format number by removing all but 0-9
 * @param      string      
 * @return     int
 */
function formatNumber(sString)
{
    var sTrimmed = sString.replace(/[^0-9]/g, '');
    return sTrimmed;
}

/**
 * Format phonenumber
 * @param      string      
 * @return     int
 */
function formatPhoneNumber(sString)
{
    var sNumber = sString.substr(0,3) + '-' + sString.substr(3,3) + '-' + sString.substr(6,4);
    return sNumber;
}

/**
 * Standard error checking on XML response
 */
function checkXML(response)
{
    bReturn = true;

    if (response.nodeName != 'multi_select')
    {
        alert('Error fetching data');
        bReturn = false;
    }
    return bReturn;
}

function write_debug (sDebug)
{
    document.getElementById('debug').innerHTML += '<br />' + sDebug;
}

function escape_html (sHTML)
{
    sHTML = sHTML.replace(/&(?!amp)/g, '&amp;');
    sHTML = sHTML.replace(/</g, '&lt;');
    sHTML = sHTML.replace(/>/g, '&gt;');
    sHTML = sHTML.replace(/'/g, '&apos;');
    sHTML = sHTML.replace(/"/g, '&quot;');

    return sHTML;
}

/**
 * Add event listener
 * @param      object     target of listener, usually 'document'
 * @param      type       'mousemove', 'mouseover' etc...
 * @param      func       function to call when listener is triggered
 * @param      boolean    should events bubble up ? (don't think this works properly)
 */
function addEventListener (target, type, func, bubbles)
{
    // mozilla
    if (document.addEventListener)
    {
        target.addEventListener(type, func, bubbles);
    }
    // IE
    else if (document.attachEvent)
    {
        target.attachEvent('on' + type, func, bubbles);
    }
    // others
    else
    {
        target['on' + type] = func;
    }
}

/**
 * Remove event listener
 * @param      object     target of listener, usually 'document'
 * @param      type       'mousemove', 'mouseover' etc...
 * @param      func       function to call when listener is triggered
 * @param      boolean    should events bubble up ? (don't think this works properly)     
 */
function removeEventListener (target, type, func, bubbles)
{
    // mozilla
    if (document.removeEventListener)
    {
        target.removeEventListener(type, func, bubbles);
    }
    // IE
    else if (document.detachEvent)
    {
        target.detachEvent('on' + type, func, bubbles);
    }
    // others
    else
    {
        target['on' + type] = null;
    }
}