/**
 * Front end app 
 * app_fe.js
 * 
 * Meant to be example App. Template.
 * 
 * @package YAHOO.Plank
 * @author  Mitchell Amihod 2008-07-19
 */

(function(){

  YAHOO.namespace('Plank.appfe');
  
  var Dom = YAHOO.util.Dom,
      Lang = YAHOO.lang,
      Event = YAHOO.util.Event,
      putils = YAHOO.Plank.util;
  
  //Classes and IDs used.
  var names = {
    CROP_CLASS: 'plank-imagecrop',
    OVERLAY_CLASS: 'plank-overlay',
    // For search form swapping. tells us if we loading geg or cp
    FORM_SHOW_GEG: 'plank-show-geg',  
    FORM_SHOW_CP: 'plank-show-cp', 
    //The form ids to show/hide
    FORM_ID_GEG: 'search_geg',
    FORM_ID_CP: 'search_cp',
    //Id of the tabs which we will want to swap the BG for - 
    //simpler o target directly rather than have a bunch of 
    //find by classes and traversal, since an IMG or DIV is the trigger,
    TAB_ID_GEG: 'tab_search_geg',
    TAB_ID_CP: 'tab_search_cp',
    //Classes to apply BG to the tabs
    SEARCH_TAB_ON: 'search-tab-on',
    SEARCH_TAB_OFF: 'search-tab-off',
    //Classes to control which search form is visible
    HIDE_FORM_CLASS: 'hide-header-search-form',
    SHOW_FORM_CLASS: 'show-header-search-form',
    PRINT_PAGE_CLASS: 'plank-print-page'

  };
  
  var clickHandler = function(e) {
    
    var el = Event.getTarget(e);

    switch(true) {
      
      case (Dom.hasClass(el, names.CROP_CLASS)) :
          putils.imagecropper(el);
        break;
      case (Dom.hasClass(el, names.PRINT_PAGE_CLASS)) :
          window.print();
        break;
      case (Dom.hasClass(el, names.OVERLAY_CLASS) && !Lang.isUndefined(el.href)): 

        Event.stopEvent(e);

        var tCon = YAHOO.Plank.util.container('popin', 
          {
            'conType': 'Panel', 
            'width': '660px', 
            'height': '400px', 
            'source': el.href
          }
        );

        tCon.render(document.body);
        tCon.show();
        
        break;

      case (Dom.hasClass(el, names.FORM_SHOW_GEG) || Dom.hasClass(el, names.FORM_SHOW_CP)) :

        //Show/Hide form
        var toshow = Dom.get(names.FORM_ID_GEG),
            tohide = Dom.get(names.FORM_ID_CP),
            tabtoshow = Dom.get(names.TAB_ID_GEG),
            tabtohide = Dom.get(names.TAB_ID_CP);
        
        if(Dom.hasClass(el, names.FORM_SHOW_CP)) {
          toshow = Dom.get(names.FORM_ID_CP);
          tohide = Dom.get(names.FORM_ID_GEG);
          tabtoshow = Dom.get(names.TAB_ID_CP);
          tabtohide = Dom.get(names.TAB_ID_GEG);
        }
        
        Dom.replaceClass(toshow, names.HIDE_FORM_CLASS, names.SHOW_FORM_CLASS);
        Dom.replaceClass(tohide, names.SHOW_FORM_CLASS, names.HIDE_FORM_CLASS);
        Dom.replaceClass(tabtoshow, names.SEARCH_TAB_OFF, names.SEARCH_TAB_ON);
        Dom.replaceClass(tabtohide, names.SEARCH_TAB_ON, names.SEARCH_TAB_OFF);

        break;
      
      default:
      
        break;
      
    }
    
  };
  
  var init = function() {

    YAHOO.log('appfe:init');  
    Event.on(document.body, "mouseover", YAHOO.Plank.util.rollover);
		Event.on(document.body, "mouseout", YAHOO.Plank.util.rollover);
		

//    YAHOO.Plank.util.validator.init();
//    Event.on(document.body, 'click', clickHandler, YAHOO.Plank, true);
  };
  
  YAHOO.Plank.appfe.init = init;

  /*
  var testContainer = function() {
    YAHOO.log('testContainer');
    //Test Container factory
    var con = containerFactory('overlayId', {'conType' : 'Panel'});


    //Testing fetching existing and overriding one prop, and rerendering it.
    containerFactory('overlayId', {'width' : '500px', 'fixedcenter' : true }).render();
    con.setBody('click to hide');
        
  };
  */
  
  //Let loader know.
  YAHOO.register("plank_app_fe", YAHOO.Plank.appfe, {version: "1", build: "1"}); 

})();

