/*!
 * Ext JS Library 3.0+
 * Copyright(c) 2006-2009 Ext JS, LLC
 * licensing@extjs.com
 * http://www.extjs.com/license
 */

  function sendError(c){
    alert(c.storeParams.toSource());
    alert(c.moduleInfo.toSource());
    alert(c.values.toSource());
  }

  function loadAmber(id){
    if (!Ext.get('amberAlert_'+id)){
      setTimeout(function(){ loadAmber(id); }, 500);
      return false;
    }
    new at.bartelme.newsticker('amberAlert_'+id);
  }
  
  /*function loadFlash(id, width, height, c){
    if (!Ext.get('flashHeaderInside_'+id)){
      setTimeout(function(){ loadFlash(id, width, height); }, 500);
      return false;
    }
    var flashvars = {file: '/ajax/slideshow/siteHeader.cfm?id='+id+'_'+currentSchool.id};
    var params = {wmode: 'transparent', bgcolor: '##ffffff'};
    var attributes = {};
    swfobject.embedSWF('/common/slideshow.swf', 'flashHeaderInside_'+id, width, height, '9.0.0', false, flashvars, params, attributes);
    if (c.storeParams.canAdmin && c.storeParams.canAdmin == true){
      Ext.get('flashHeaderInside_'+id).on('dblclick', function(e){
        e.stopEvent();
        e.cancelBubble = true;
        e.stopPropagation();
        Ext.Msg.wait('Loading Slideshow Settings', 'Loading');
        AlbumPickShared({gcdID:0, slideID: id, schoolID: currentSchool.id}, true);
      });
    }
  }  */
  
  function loadFlash(id, width, height, c){
    if (!Ext.get('flashHeaderInside_'+id)){
      setTimeout(function(){ loadFlash(id, width, height); }, 500);
      return false;
    }
            // SWFObject embed
        var flashvars = {
          paramXMLPath: '/ajax/slideshow/albumConfigHeader.cfm?id='+id+'_'+currentSchool.id,
          initialURL: escape(document.location)
        }
        var params = { 
          wmode: "transparent",
          base: ".",
          bgcolor: "##ffffff",
          allowfullscreen: "true"
        }                
        var attributes = {}
        swfobject.embedSWF('/common/slideshowpro/slideshowpro.swf', 'flashHeaderInside_'+id, width, height , '9.0.0', false, flashvars, params, attributes); 
    if (c.storeParams.canAdmin && c.storeParams.canAdmin == true){
      Ext.get('flashHeaderInside_'+id).on('dblclick', function(e){
        e.stopEvent();
        e.cancelBubble = true;
        e.stopPropagation();
        Ext.Msg.wait('Loading Slideshow Settings', 'Loading');
        AlbumPickShared({gcdID:0, slideID: id, schoolID: currentSchool.id}, true);
      });
    }
  }

  function loadModuleData(c, hideLoad, jsOnly){

    
    var modData = Ext.data.Record.create([
          {name: 'id', mapping: 'id'},
          {name: 'title', mapping: 'title'},
          {name: 'browser_title', mapping: 'browser_title'},
          {name: 'data', mapping: 'data'}
        ]);
    var modReader = new Ext.data.XmlReader({
          record: "content",
          success: "success",
          id: "id"
        }, modData);
    var myStore = new Ext.data.Store({
          autoLoad: true,
          reader: modReader,
          url: '/ajax/proxy/module.cfm',
          baseParams: c.storeParams,
          listeners: {
            loadexception: function(m){
              //var errorButton = new Element('input', { 'type': 'button', style: 'float: right;', value: 'Send Error' });
              //errorButton.observe('click', function(){ sendError(c); });
              var errorText = new Element('span').update('Well, this is embarrassing.. this module is misbehaving!');
              var errorDiv = new Element('div', { });
              //errorDiv.appendChild(errorButton);
              errorDiv.appendChild(errorText);
              c.setTitle('Widget Error');
              c.body.dom.innerHTML = '';
              c.body.dom.appendChild(errorDiv);
            },
            load: function(s,r,o){
            
              if (c.JSMode){
                c.setTitle(Base64.decode(r[0].data.title));
                return false;
              }
              
              if (hideLoad && r.length > 0){
                c.setTitle(Base64.decode(r[0].data.title));
                c.body.dom.innerHTML = Base64.decode(r[0].data.data);
              }else{
                c.setTitle("Loading...");
                c.body.dom.innerHTML = c.loadingText;
                if (r.length > 0){
                  setTimeout(function(){
                    c.setTitle(Base64.decode(r[0].data.title));
                    c.body.dom.innerHTML = Base64.decode(r[0].data.data);
                  }, 500);
                }
              }
              if (c.storeParams.systemID==32){
                loadAmber(c.storeParams.portletID);
              }
              if (c.storeParams.systemID==29){
                //c.values.set_height is avail, just uncomment in quickModuleConfig
                loadFlash(c.storeParams.portletID, '100%', c.values.set_height || 200, c);
              }
            }
          }            
        });
  }


var defaultHTML = '<span class="portalLoader"><span class="portalLoaderText">Loading Data</span></span>';
Ext.ux.Portlet = Ext.extend(Ext.Panel, {
    anchor : '100%',
    collapsible : false,
    draggable : true,
    cls : 'x-portlet',
    loadingText: defaultHTML,
    listeners: {
      render: function(c,l){
        if (c.titleEl)
          c.setTitle(Ext.get(c.titleEl).dom.innerHTML);
      }
    }
});

Ext.ux.CFCPortlet = Ext.extend(Ext.ux.Portlet, {
    storeFN: loadModuleData,
    listeners: {
      render: function(c,l){
        switch (c.storeParams.systemID){
          case '29': //Slideshow
          case '32': //Amber Alert
          case '31': //IFrame
            c.storeFN(c, true); //for ajax loading
            break;
        }
        if (c.titleEl)
          var itemTitle = Ext.get(c.titleEl);
          if (itemTitle != undefined && itemTitle != 'null')
            c.setTitle(itemTitle.dom.innerHTML);
      }
    }
});

Ext.reg('portlet', Ext.ux.Portlet);
Ext.reg('cfcportlet', Ext.ux.CFCPortlet);


