//##############################################################################
var isIE = (navigator.userAgent.indexOf("MSIE") != -1);
var isFF = (navigator.userAgent.indexOf("Firefox") != -1);
var isFF3 = (navigator.userAgent.indexOf("Firefox/3") != -1);
var isSafari = (navigator.userAgent.indexOf("Safari") != -1);
// var isMac = (navigator.userAgent.indexOf("Mac") != -1);

//------------------------------------------------------------------------------
function detectBrowserAnimation()
{ 
    return false;
    
    var userAgent = navigator.userAgent;
    if(isSafari)
    {
        var tag = 'Version/';
        var version = userAgent.substr(userAgent.indexOf(tag) + tag.length);
        version = version.substr(0, version.indexOf(' '));
        var digits = version.split('.');
        var digit0 = parseInt(digits[0]);
        var digit1 = parseInt(digits[1]);
        if(digit0 > 3 || (digit0 == 3 && digit1 >= 1))
            return true;
    }

    return false;
}

var hasBrowserAnimation = detectBrowserAnimation();

//------------------------------------------------------------------------------
function getURLParam(strParamName)
{ 
    var strReturn = ""; 
    var strHref = window.location.href; 
    if(strHref.indexOf("?") > -1)
    { 
        var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase(); 
        var aQueryString = strQueryString.split("&"); 
        for(var iParam = 0; iParam < aQueryString.length; iParam++)
        { 
            if(aQueryString[iParam].indexOf(strParamName + "=") > -1)
            { 
                var aParam = aQueryString[iParam].split("="); 
                strReturn = aParam[1]; 
                break; 
            } 
        } 
    } 

  return strReturn;
}

//------------------------------------------------------------------------------
function getWindowSize()
{
    var result = new Point();
    if( typeof( window.innerWidth ) == 'number' )
    {
        //Non-IE
        result.x = window.innerWidth;
        result.y = window.innerHeight;
    }
    else if(document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight))
    {
        //IE 6+ in 'standards compliant mode'
        result.x = document.documentElement.clientWidth;
        result.y = document.documentElement.clientHeight;
    }
    else if(document.body && ( document.body.clientWidth || document.body.clientHeight))
    {
        //IE 4 compatible
        result.x = document.body.clientWidth;
        result.y = document.body.clientHeight;
    }
    
    return result;    
}

//------------------------------------------------------------------------------
function getMouse(event)
{
    if(typeof(event) != 'undefined')
    {
        if(isIE)
            return new Point(window.event.clientX, window.event.clientY);
        else
            return new Point(event.clientX, event.clientY);
    }
}

//------------------------------------------------------------------------------
function getEvent(event)
{
    if(isIE)
        return window.event;
    else
        return event;
}    
        
//------------------------------------------------------------------------------
function getEventTarget(event)
{
    if(isIE)
        return event.srcElement;
    else
        return event.target;
}

//------------------------------------------------------------------------------
function stopEvent(event) 
{
    if (!event)
        event = window.event;
    if (event.stopPropagation)
        event.stopPropagation();
    if (event.preventDefault)
        event.preventDefault();
    
    event.cancel = true;
    event.cancelBubble = true;
    event.returnValue = false;
    
    return false;
}

//------------------------------------------------------------------------------
function getMilliseconds()
{
    var utilityDate = new Date();
    return utilityDate.getTime();
}

//------------------------------------------------------------------------------
function getRandomInt(cap)
{
    return Math.floor(Math.random() * cap);
}

//------------------------------------------------------------------------------
function assert(description, condition)
{
    if(showAsserts && !condition)
        alert('assertion failed: ' + description);
}

//------------------------------------------------------------------------------
function setOpacity(element, opacity)
{
	element.style.opacity = opacity;
   	if(isIE)
   		element.style.filter = 'alpha(opacity=' + (opacity * 100) + ')';
}

