// swfSubst
// runs swfobject.embedSWF() for each div, containing swfSubst-attribute
// sends vars to object:    id:object id,
//                          html:html inside div, that was substituted
// ex: <div swfSubst="flash" path="js/" size="100:100" vars="var1=1&var2=2" params="" attrs=""></div>
// 


var swfDefaultPath="/swf/";
var defPre="pre";
var defProg="progress";
var defMoWa="moWa";

$(document).ready( function(){
  swfSubst();
});
substArr=[];

function swfSubst(){
//    alert('subst');
    $.each($("div[swfCache]"), function(){ 
      var s=$(this).attr('swfCache');
      $("div[swfSubst="+s+"]").attr('wait',1);
      $(this).attr('swfSubst',s);
    });
    var idArr=[];
    $.each($("div[swfSubst]"), function(){
      this.style.visibility="hidden";
      if ($(this).attr('wait')=='1') {return true;}
      var s=$(this).attr("swfSubst");
      if($(this).attr("id")=="") {
        if (idArr[s]==undefined) idArr[s]=0;
        $.each($("object[id^='"+s+"_']"),function(){idArr[s]++;});
        $(this).attr("id",s+"_"+idArr[s]);
        idArr[s]++;
      }
      var path=($(this).attr("path"))?$(this).attr("path"):swfDefaultPath;
      
      if($(this).attr("size")==undefined) {
        if ($(this).attr("width")!=undefined) var w=$(this).attr("width");
        if ($(this).css("width")!=undefined) var w=$(this).css("width");
        if (w==undefined || w=="auto") var w="100%";
        if ($(this).attr("height")!=undefined) var h=$(this).attr("height");
        if ($(this).css("height")!=undefined) var h=$(this).css("height");
        if (h==undefined || h=="auto") var h="100%";
        $(this).attr("size",w+":"+h);
      }
      var size=$(this).attr("size").split(":");
      if($(this).attr("version")==undefined) $(this).attr("version","8.0.0");
      if($(this).attr("installer")==undefined) $(this).attr("installer","false");

      var m=0; // parent-link mark
      if($(this).parents("a[mark]").length) m=1;

      var vars={id:$(this).attr("id"), swf:s, iniMark:m, subDomainName:subDomainName, domainName:domainName};
      
      if ($(this).attr('htmlFilter')) vars.html=eval($(this).attr('htmlFilter')+'($(this).html())');
      if($(this).attr("vars")!=undefined){
        var v=$(this).attr("vars");
        v=v.split("&");
        for (var i=0; i<v.length; i++) {
          v[i]=v[i].split("=");
          vars[v[i][0]]=v[i][1];
        }
      }
      var params={menu: "false",  scale:"noscale", allowscriptaccess:"always", salign:'TL'};
      if($(this).attr("fill"))params.scale='exactfit';
      if($(this).attr("params")!=undefined){
        var v=$(this).attr("params");
        v=v.split("&");
        for (var i=0; i<v.length; i++) {
          v[i]=v[i].split("=");
          params[v[i][0]]=v[i][1];
        }
      }
      if (!params.bgcolor){
        function pBg(e){if(e.css("background-color")=="transparent"){ return pBg(e.parent()); } else {return e.css("background-color");}}
        function num(s){s=Number(s).toString(16); if(s<10)s='0'+s; return s;}
        var bg=pBg($(this));
        var bgA=bg.substring(bg.indexOf('(')+1,bg.indexOf(')')).split(',');
        if (bgA.length==3) {
          params.bgcolor='#'+num(bgA[0])+num(bgA[1])+num(bgA[2]);
        } else params.bgcolor=bg;
      }
      vars.htmlBgColor=params.bgcolor;
//      if ($(this).attr("id")=="pics") alert(vars.htmlBgColor);
      var attrs={id: $(this).attr("id"),name: $(this).attr("id")};
      if($(this).attr("attrs")!=undefined){
        var v=$(this).attr("attrs");
        v=v.split("&");
        for (var i=0; i<v.length; i++) {
          v[i]=v[i].split("=");
          attrs[v[i][0]]=v[i][1];
        }
      }
      var id=$(this).attr("id");
      var pre=$(this).attr("pre");
      var prog=$(this).attr("prog");
      var moWa=$(this).attr("moWa");
      if (pre!='none'){
        if(!pre)pre=defPre;
        if(prog=="")prog=defProg;
        if (moWa!='none')vars['moWaPath']=(moWa)?path+moWa+".swf":path+defMoWa+".swf";
        vars.swfPath=path+s+".swf";
        if(prog)vars.progPath=path+prog+".swf";
        if (size[0].indexOf('%')<0 && !vars['swfStageWidth']) vars['swfStageWidth']=size[0];
        if (size[1].indexOf('%')<0 && !vars['swfStageHeight']) vars['swfStageHeight']=size[1];
        substArr[id]={}; substArr[id].html=$(this).html();
        substArr[id].data=[path+pre+".swf", id, size[0], size[1], $(this).attr("version"), $(this).attr("installer"), vars, params,attrs];
        swfEmbed(id);
      } else {
        if (moWa!='none' && moWa)vars['moWaPath']=moWa;
        params.scale="exactfit";
        swfobject.embedSWF(path+s+".swf", id, size[0], size[1], $(this).attr("version"), $(this).attr("installer"), vars, params,attrs);
      }
    });
}
function swfEmbed(id,s){if(!s)s='';swfobject.embedSWF(substArr[id].data[0]+s,substArr[id].data[1],substArr[id].data[2],substArr[id].data[3],substArr[id].data[4],substArr[id].data[5],substArr[id].data[6],substArr[id].data[7],substArr[id].data[8]);}
function preLoaded(id){substArr[id].ok=1;}

var chPreInt=2000;
var intD=1000;

function chPre(){ // reloading pre.swf
  var fndO=0;
  $('object').each(function(){
    var id=this.id;
    if (substArr[id] && !substArr[id].ok) {
      fndO=1;
      $(this).replaceWith('<div id="'+substArr[id].data[1]+'"></div>');
      swfEmbed(id,'?rand='+Math.random());
    }
  });
  if (!fndO) chPreInt=2000; else chPreInt+=intD;
  setTimeout(chPre,chPreInt);
}
setTimeout(chPre,chPreInt);

function swfLoaded(s){
  var d=$("div[swfSubst="+s+"]");
  if(d.length){d.attr('wait',0); swfSubst();}
}
    
function swfClick(id){ // triggers click of <a> in which an swf-object is
  $('#'+id).parent().click();
//  $('#'+id).parent.click();
}
function swfClickId(id){ // triggers click of <a> with set id
  $('#'+id).click();
//  $('#'+id).parent.click();
}
function swfClickURL(url){ // creates an anchor with url and triggers click of it
//  alert(url);
  if (!($('#swfHiddenLinks').length)) var d=$("body").prepend('<div id="swfHiddenLinks" style="display:none"></div>');
  if (!($('#swfHiddenLinks a[href="'+url+'"]').length)) $("#swfHiddenLinks").prepend('<a href="'+url+'" href0="'+url+'"></a>');
  setHref(); // function from ajaxnav.php
  var a=$('a[href1="'+url+'"]:first');
//  alert(a.attr('href1'));
  a.trigger("click");
} 
function callSwfFunc(){ // calls internal swf function (swf_object_id,func_name,par0,par1,...). addCallback() must be used for function inside swf
  var arg = Array.prototype.slice.call(arguments);
  if (arg[0]=="*") {arg[0]=$("object")} else arg[0]=$('object[id="'+arg[0]+'"]');
  $.each(arg[0],function(){ 
    try{
      this[arg[1]].apply(this,arg.slice(2));
    } catch(err){}    
  });
}
