/** this class controls modal dialogs for flash.
 * 
 * @param Array itemsInfo
 * @param String modalClass
 */
var FlashModal = Class.create({
  initialize: function(itemsInfo, modalClass,contextPath){  
    this.items = {};
    this.contextPath = contextPath; 
    this.create(itemsInfo, modalClass);
  },
  
  create: function(iInfo, mClass){
    var _this = this;  
    $$('[class*="' + mClass + '"]').each(function(item){ 
      
      /** creating flash items if it's not created yet */
     
      iInfo.each(function(info){
        if(item.className.include(info.name) && _this.items[info.name]==undefined){
          var flashItem = new Element('div',{id:info.name});
          document.body.appendChild(flashItem);  
          var flashvars = {
            contextPath: _this.contextPath, 
            assetsPath: info.assetsPath,
            containerId: info.name,
            closeMethod: info.closeMethod,
            piUrl: info.piUrl
          };
          var params = {wmode:'transparent'};
          var attributes = {};
          
          swfobject.embedSWF(_this.contextPath+info.contentPath,flashItem.id, info.width, info.height, "9.0.0",'', flashvars, params, attributes);
          
     /** creating a dialog for each swf object */
          
          var config={
            id: flashItem.id,
            modal:true,
            center: true,
            positionFixed: false,
            cls: "cls-test",
            closeBtnCls: "test",
            height: info.height,
            width: info.width,
            visible: false
          };
          
          var dialog = new meltmedia.Dialog(flashItem.id,config);
          dialog.init();
          _this.items[info.name] = dialog;
        }
      })
      
     /** Assigning click events to links
      *  The event shows the specific dialog
      */
     
      item.observe('click',(function(e){ 
        var tg = e.findElement($A(arguments)[1]);
        e.stop();
        iInfo.each(function(info){
          if(tg.className.include(info.name)){
            _this.items[info.name].show();
            return;
          }
        })
      }).bindAsEventListener(_this,item.tagName))
      
      
    });
  },
  
  closeModal: function(itemName){
    this.items[itemName].hide();
  }
  
})
