var userAgent = navigator.userAgent.toLowerCase();

var browser = {
    version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
    safari: /webkit/.test(userAgent),
    opera: /opera/.test(userAgent),
    msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
    mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
};

function QuizFileUpload()
{
    var overlay = null;
    var userCallback = null;
    var initScrollY = -1;

    function AC_AddExtension( src, ext )
    {
        if( src.indexOf('?') != -1 )
            return src.replace(/\?/, ext + '?');
        else
            return src + ext;
    }

    function AC_Generateobj( objAttrs, params, embedAttrs )
    {
        var str = '<object ';
        for( var i in objAttrs )
            str += i + '="' + objAttrs[i] + '" ';
        str += '>';
        for( var i in params )
            str += '<param name="' + i + '" value="' + params[i] + '" /> ';
        str += '<embed ';
        for( var i in embedAttrs )
            str += i + '="' + embedAttrs[i] + '" ';
        str += ' ></embed></object>';

        return str;
    }

    function AC_FL_RunContent()
    {
        var ret = AC_GetArgs(arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000", "application/x-shockwave-flash");
        return AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
    }

    function AC_GetArgs( args, ext, srcParamName, classid, mimeType )
    {
        var ret = new Object();
        ret.embedAttrs = new Object();
        ret.params = new Object();
        ret.objAttrs = new Object();
        for( var i = 0; i < args.length; i = i + 2 )
        {
            var currArg = args[i].toLowerCase();

            switch( currArg )
                    {
                case "classid":
                    break;
                case "pluginspage":
                    ret.embedAttrs[args[i]] = args[i + 1];
                    break;
                case "src":
                case "movie":
                    args[i + 1] = AC_AddExtension(args[i + 1], ext);
                    ret.embedAttrs["src"] = args[i + 1];
                    ret.params[srcParamName] = args[i + 1];
                    break;
                case "onafterupdate":
                case "onbeforeupdate":
                case "onblur":
                case "oncellchange":
                case "onclick":
                case "ondblClick":
                case "ondrag":
                case "ondragend":
                case "ondragenter":
                case "ondragleave":
                case "ondragover":
                case "ondrop":
                case "onfinish":
                case "onfocus":
                case "onhelp":
                case "onmousedown":
                case "onmouseup":
                case "onmouseover":
                case "onmousemove":
                case "onmouseout":
                case "onkeypress":
                case "onkeydown":
                case "onkeyup":
                case "onload":
                case "onlosecapture":
                case "onpropertychange":
                case "onreadystatechange":
                case "onrowsdelete":
                case "onrowenter":
                case "onrowexit":
                case "onrowsinserted":
                case "onstart":
                case "onscroll":
                case "onbeforeeditfocus":
                case "onactivate":
                case "onbeforedeactivate":
                case "ondeactivate":
                case "type":
                case "codebase":
                    ret.objAttrs[args[i]] = args[i + 1];
                    break;
                case "width":
                case "height":
                case "align":
                case "vspace":
                case "hspace":
                case "class":
                case "title":
                case "accesskey":
                case "name":
                case "id":
                case "tabindex":
                    ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i + 1];
                    break;
                default:
                    ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i + 1];
            }
        }
        ret.objAttrs["classid"] = classid;
        if( mimeType ) ret.embedAttrs["type"] = mimeType;
        return ret;
    }

    this.show = function( params )
    {
        if( params == null )
        {
            params = "params=none";
        }
        var innerHtml = AC_FL_RunContent('id', 'AOLQuizFlashUploader',
                'flashVars', 'onCompleteEvent=quizFileUpload.onUploadComplete&params=' + params,
                'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0',
                'width', '100%',
                'height', '100%',
                'src', '/user-quizzes/common/images/FileUpload',
                'quality', 'high',
                'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
                'movie', '/user-quizzes/common/images/FileUpload',
                "wmode", "transparent");

        overlay = document.createElement("div");
        overlay.style.display = "block";
        overlay.style.height = "100%";
        overlay.style.width = "100%";
        overlay.style.left = "0";
        overlay.style.top = browser.msie && browser.version < 7 ? getCurrentPostion() + "px" : "0";
        overlay.style.zIndex = "1600000";
        overlay.style.position = browser.msie && browser.version < 7 ? "absolute" : "fixed";
        overlay.setAttribute("id", "overlay");
        overlay.innerHTML = innerHtml;
        document.body.appendChild(overlay);

    }

    this.hide = function()
    {
        if( overlay )
        {
            document.body.removeChild(overlay);
        }
    }

    this.onUploadComplete = function( imageUrl )
    {
        setTimeout(this.hide, 0);
        if(imageUrl == "%ERROR%")
        {
            alert("There was a problem uploading this image. Please try again soon.")
        }
        else if( userCallback && imageUrl != "" )
        {
            userCallback(imageUrl);
        }
    }

    this.setCallback = function( ucb )
    {
        userCallback = ucb;
    }

    this.scrollBack = function()
    {
        if( browser.msie )
        {
            var animatorObj = new AnimatedScroll(null, initScrollY, 500);
        }
    }

    function getCurrentPostion()
    {
        if( document.body && document.body.scrollTop )
            return document.body.scrollTop;
        if( document.documentElement && document.documentElement.scrollTop )
            return document.documentElement.scrollTop;
        if( window.pageYOffset )
            return window.pageYOffset;
        return 0;
    }
}

var quizFileUpload = new QuizFileUpload();
