﻿jQuery.addExtension = function(src, ext) {
    if (src.indexOf('?') != -1)
        return src.replace(/\?/, ext+'?'); 
    else
        return src + ext;
};

jQuery.generateobj = function (objAttrs, params, embedAttrs) { 
    var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
    var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
    var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

  var str = '';
  if (isIE && isWin && !isOpera)
  {
    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 += '</object>';
  }
  else
  {
    str += '<embed ';
    for (var i in embedAttrs)
    {
      str += i + '="' + embedAttrs[i] + '" ';
    }
    str += '> </embed>';
  }
//    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){
//        if( i != "altTxt" ){
//            str += i + '="' + embedAttrs[i] + '" ';
//        }
//    }
//    str += ' ></embed></object>';

    return str;
};

jQuery.flash = function(arguments,div){
    if( $.browser.safari && arguments.length == 2 ) {
        var ret = $.getArgs( arguments[0], ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
        , "application/x-shockwave-flash");
    }
    else {
        var ret = $.getArgs( arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
        , "application/x-shockwave-flash");
    }

    div.prepend($.generateobj(ret.objAttrs, ret.params, ret.embedAttrs, arguments[arguments.length-1]));
};

jQuery.getArgs = function(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 regExp1 = /,/g
        var currArg = args[i].replace(regExp1,"");

        switch (currArg){
            case "id":
                ret.objAttrs[currArg] = args[i+1];
                ret.embedAttrs[currArg] = ret.objAttrs[currArg] = args[i+1];
                break;
            case "classid":
                break;
            case "pluginspage":
                ret.embedAttrs[currArg] = args[i+1];
                break;
            case "src":
            case "movie":	
                args[i+1] = $.addExtension(args[i+1], ext);
                ret.objAttrs[currArg] = args[i+1];
                ret.embedAttrs["src"] = args[i+1];
                ret.params[currArg] = 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 "data":
                ret.objAttrs[currArg] = args[i+1];
                break;
            case "codebase":
                var codeBase = args[i+1];
                ret.objAttrs[currArg] = codeBase.substr(0,codeBase.length-1);
                break;
            case "allowScriptAccess":
            case "base":
            case "bgcolor":
            case "menu":
            case "quality":
            case "play":
            case "width":
            case "height":
            case "align":
            case "vspace": 
            case "hspace":
            case "class":
            case "title":
            case "accesskey":
            case "name":
            case "tabindex":
            case "wmode":
                ret.params[currArg] = args[i+1];
                ret.embedAttrs[currArg] = ret.objAttrs[currArg] = args[i+1];
                break;
            case "flashvars":
                ret.params[currArg] = args[i+1];
                ret.embedAttrs[currArg] = ret.objAttrs[currArg] = args[i+1];
                break;            
            default:
                ret.embedAttrs[currArg] = ret.params[currArg] = args[i+1];
        }
    }
    ret.objAttrs["classid"] = classid;
    if (mimeType) ret.embedAttrs["type"] = mimeType;

    return ret;
};
