//Java Script
//--- Created By Yonathan Garti ---\\
//---     WWW.YGI.CO.IL         ---\\
//---     Version 1.0.1         ---\\
//---   Last Update 23/04/09    ---\\

//-------------------------- Swf --------------------------\\
var Swf = new Object();

//-------------------------- Swf PlugIn --------------------------\\
Swf.MajorVersion = 9;
Swf.MinorVersion = 0;
Swf.Revision = 45;

Swf.PlugInsPage = 'http://www.adobe.com/go/getflashplayer';
Swf.Codebase = function()
{
    return 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+Swf.MajorVersion+','+Swf.MinorVersion+','+Swf.Revision+',0';
}

//-------------------------- Swf CONST --------------------------\\
Swf.MIME_TYPE = 'application/x-shockwave-flash';
Swf.CLSID = 'clsid:d27cdb6e-ae6d-11cf-96b8-444553540000';

//-------------------------- Swf Navigator --------------------------\\
Swf.Navigator = new Object();
Swf.Navigator.IE = (navigator.appVersion.indexOf('MSIE') != -1) ? true : false;
Swf.Navigator.Win = (navigator.appVersion.toLowerCase().indexOf('win') != -1) ? true : false;
Swf.Navigator.Opera = (navigator.userAgent.indexOf('Opera') != -1) ? true : false;

//-------------------------- Swf Quality --------------------------\\
Swf.Quality = new Object();
Swf.Quality.LOW = 'low';
Swf.Quality.MEDIUN = 'medium';
Swf.Quality.HIGH = 'high';
Swf.Quality.BEST = 'best';

//-------------------------- Swf Scale --------------------------\\
Swf.Scale = new Object();
Swf.Scale.SHOW_ALL = 'showall';
Swf.Scale.NO_BORDER = 'noborder';
Swf.Scale.EXACT_FIT = 'exactfit';
Swf.Scale.NO_SCALE = 'noscale';

//-------------------------- Swf WindowMode --------------------------\\
Swf.WindowMode = new Object();
Swf.WindowMode.WINDOW = 'window';
Swf.WindowMode.OPAQUE = 'opaque';
Swf.WindowMode.TRANSPARENT = 'transparent';

//-------------------------- Swf ScriptAccess --------------------------\\
Swf.ScriptAccess = new Object();
Swf.ScriptAccess.SAME_DOMAIN = 'samedomain';
Swf.ScriptAccess.ALWAYS = 'allways';
Swf.ScriptAccess.NEVER = 'never';

//-------------------------- Swf Default --------------------------\\
Swf.Default = new Object();
Swf.Default.codebase = Swf.Codebase();
Swf.Default.width = '100%';
Swf.Default.height = '100%';
Swf.Default.src = 'Default.swf';
Swf.Default.quality = Swf.Quality.HIGH;
Swf.Default.pluginspage = Swf.PlugInsPage;
Swf.Default.scale = Swf.Scale.NO_SCALE;
Swf.Default.wmode = Swf.WindowMode.WINDOW;
Swf.Default.devicefont = false;
Swf.Default.id = 'Default';
Swf.Default.bgcolor = '#ffffff';
Swf.Default.name = 'Default';
Swf.Default.menu = false;
Swf.Default.allowFullScreen = true;
Swf.Default.allowScriptAccess = Swf.ScriptAccess.SAME_DOMAIN;
Swf.Default.movie = 'Default.swf';

//-------------------------- Swf CreateDefinition --------------------------\\
Swf.CreateDefinition = function(id, src, width, height, bgcolor)
{
    var definition = new Object();
    definition.codebase =       Swf.Default.codebase;
    definition.width =          width ? width: Swf.Default.width;
    definition.height =         height ? height: Swf.Default.height;
    definition.src =            src ? src: Swf.Default.src;
    definition.quality =        Swf.Default.quality;
    definition.pluginspage =    Swf.Default.pluginspage;
    definition.scale =          Swf.Default.scale;
    definition.wmode =          Swf.Default.wmode;
    definition.devicefont =     Swf.Default.devicefont;
    definition.id =             id ? id: Swf.Default.id;
    definition.bgcolor =        bgcolor ? bgcolor: Swf.Default.bgcolor;
    definition.name =           id ? id: Swf.Default.id;
    definition.menu =           Swf.Default.menu;
    definition.allowFullScreen = Swf.Default.allowFullScreen;
    definition.allowScriptAccess = Swf.Default.allowScriptAccess;
    definition.movie =          src ? src: Swf.Default.src;

    return definition;
}

//-------------------------- Swf GenerateObjectString --------------------------\\
Swf.GenerateObjectString = function(objAttrs, params, embedAttrs)
{
     var str = '';
    
    if (Swf.Navigator.IE && Swf.Navigator.Win && !Swf.Navigator.Opera)
    {
        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>';
    }
    
    return str;
}

//-------------------------- Swf GetArguments --------------------------\\
Swf.BuildArguments = function(definition){
  
  var ret = new Object();
  
  ret.embedAttrs = new Object();
  ret.embedAttrs['type'] = Swf.MIME_TYPE;
  
  ret.params = new Object();
  
  ret.objAttrs = new Object();
  ret.objAttrs['classid'] = Swf.CLSID;
  
  for(prop in definition)
  {
    var currArg = prop.toLowerCase();  
    
    switch (currArg)
    {	
        case 'pluginspage':
            ret.embedAttrs['pluginspage'] = definition[prop];
            break;
            
        case 'src':
        case 'movie':	
            ret.embedAttrs['src'] = definition[prop];
            ret.params['movie'] = definition[prop];
            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':
        case 'id':
            ret.objAttrs[prop] = definition[prop];
            break;
        
        case 'width':
        case 'height':
        case 'align':
        case 'vspace': 
        case 'hspace':
        case 'class':
        case 'title':
        case 'accesskey':
        case 'name':
        case 'tabindex':
            ret.embedAttrs[prop] = ret.objAttrs[prop] = definition[prop];
            break;
            
        default:
            ret.embedAttrs[prop] = ret.params[prop] = definition[prop];
    }
  }
  
  return ret;
}

//-------------------------- Swf Writeln --------------------------\\
Swf.Writeln = function(definition, containerId)
{
    var args = Swf.BuildArguments(definition);
    var str = Swf.GenerateObjectString(args.objAttrs, args.params, args.embedAttrs);
    var tempElement = document.createElement('temp');
    tempElement.innerHTML = str;
    document.getElementById(containerId).appendChild(tempElement.firstChild);
}

Swf.InnerHtml = function(definition, containerId)
{
    var args = Swf.BuildArguments(definition);
    var str = Swf.GenerateObjectString(args.objAttrs, args.params, args.embedAttrs);
    document.getElementById(containerId).innerHTML = str;
}

Swf.GetObject = function(id)
{
    if (navigator.appName.indexOf("Microsoft") != -1) {
          return document.getElementById(id);
    } else {
          return document[id];
    }
}
