//<![CDATA[
/*
 Copyright (c) 2007 Caridy Patiño. All rights reserved.
 version 0.1.0
 Author: Caridy Patiño (caridy at gmail.com)
*/
YAHOO.namespace("App");
(function() {

  var $B = YAHOO.CMS.Bubble,
  	  $E = YAHOO.util.Event,
  	  $L = YAHOO.lang,
	  $D = YAHOO.util.Dom,
	  $ =  YAHOO.util.Dom.get;

	YAHOO.App.Core = function () {
	    var obj = {};
		try {
			obj.flags = DEFAULT_VARS;
		} catch(e) {
			obj.flags = {};
		}
        // Private Methods
		var actions = {
			navRecommendPage: function (layer, args) {
				  var e = args[0],
				      o = args[1] || {},
					  el = o.target || $E.getTarget(e);
				  var r = document.location;
				  el = $B.getAncestorByTagName( el, 'A' );
				  if (r && el) {
				    var page  = base64encode(utf16to8(r)),
				    	title = document.title;
				    document.location = YAHOO.CMS.Common.url_completion ( el.href, '_title=' + title  + '&_url=' + page );
				  }
			},
			navMPPrintableVersion: function () {
				window.open (YAHOO.CMS.Common.url_completion ( obj.navHistory[obj.navHistory.length - 1], 'tpl=tpls/printable' ),'','scrollbars=yes,width=800,height=600');
			},
			actionFormFieldFocus: function (layer, args) {
				  var el = $B.getAncestorByTagName( args[1].target, 'A' );
				  if (el && el.id && (el.id.indexOf('setfocus') === 0)) {
				  	// calculating the form field ID
				  	var field = $(el.id.slice (8, el.id.length));
					if (field) {
					  field.focus();
					}
				  }
			}
		};
	    $B.on('navigate', function (layer, args) {
		  $B.processingAction (layer, args, actions);
	    });

	    // repainting: adjusting the img size:
		$B.on('repaint', function(layer, args){
             var el = $('content'),
                 maxwidth = 450, objs;
             if ($L.isObject(el) && (objs = el.getElementsByTagName ('img')) && (objs.length > 0)) {
                 $D.batch (objs, function (img) {
                     var w = img.width || $D.getStyle(img, 'width');
                     var h = img.height || $D.getStyle(img, 'height');
                     if (w && (w = parseInt(w, 10)) && $L.isNumber(w) && (w > maxwidth)) {
                       $D.setStyle(img, 'width', maxwidth)
                       img.width       = maxwidth;
                       if (h && (h = parseInt(h)) && $L.isNumber(h)) {
                         h = h * maxwidth / w;
                         $D.setStyle(img, 'height', h)
                         img.height = h;
                       }
                     }
                 });
             }
		});

		/**
		* * Este método representa un evento de navegación sobre el paginado dentro de un tabset...
		* @public
		* @param {object} e Referencia al evento
		* @return void
		*/
		var navTabsAjaxPagination = function (obj, e, id) {
		  if (obj && obj.href) {
		    //displayLoading ();
		  	YAHOO.util.Dispatcher.fetch ( id, obj.href );
		    YAHOO.util.Event.stopEvent(e);
		  }
		}

	    /**
	    * @behavior - Pagination Links
	    */
	    $B.addDefaultAction ('navAjaxTabPagination',
			function (layer, args) {
				var success = function(o){
								if((o.responseText != 'undefined') && (o.argument.c)){
								  YAHOO.CMS.Common.safeInnerHTML ( o.argument.c, o.responseText )
								}
							  };
				var failure = function(o){};
		  	    var el = args[1].anchor;
		  	    var owner = $B.getAncestorByClassName( el, 'yui-cms-pager' );
				if ($L.isObject (owner) && $L.isObject(el)) {
				  YAHOO.CMS.Common.ajaxLoadContent ($E.generateId(owner), el.href, success, failure);
				  return true;
				}
			}
		);

        // Public Vars
		obj.navHistory = [];
        // Public Methods
		obj.init = function () {
		  this.navHistory.push ( window.location.href );
		};
		obj.initCategories = function () {
		    YAHOO.CMS.behaviors.Categories.load ();
		};
		obj.initSelector = function () {
		};
		obj.initHints = function () {
            YAHOO.CMS.widget.Tips.init();
            YAHOO.CMS.widget.Tips.config ({
                width: '250px'
            });
		};
		obj.initLocutor = function () {
		  // creating the info panel...
		  		  YAHOO.CMS.Common.values.hold( new YAHOO.CMS.widget.InfoPanel( 'advices',
										 {
										   handle:'advicehandle',
										   context:'ajax-advice-content',
										   webpart:'webparts/ajax/advice.inc.html',
										   force:true
										 } ));
		};
		obj.initMenuBar = function () {
		  var oMenuBar = new YAHOO.widget.MenuBar('quickaccess', { autosubmenudisplay: true, hidedelay: 750, lazyload: true });
          oMenuBar.render();
		};
		obj.initPlayers = function  () {
			YAHOO.CMS.Common.values.hold( new YAHOO.CMS.widget.Player ('ajax-intro',
		     {
			 	context: 'ajax-intro', play: true, URL: DEFAULT_VARS.bannersplayer, mode: 'player',
				repeating: true
			 }));
		};
		obj.initHomeTabs = function () {
			var el = $('dynamictabs');
			if (typeof el === 'object') {
			    var tabView = new YAHOO.widget.TabView({id: 'hometabview'});

			    tabView.addTab(new YAHOO.widget.Tab({
			        label: 'Noticias',
			        dataSrc: '/ajax.php?lang='+ TMS_CURRENT_LANG +'&webpart=webparts/ajax/tabs/noticias.inc.html',
			        active: true,
			        cacheData: true /* only load once */
			    }));

			    tabView.addTab(new YAHOO.widget.Tab({
			        label: 'Revistas',
			        dataSrc: '/ajax.php?lang='+ TMS_CURRENT_LANG +'&webpart=webparts/ajax/tabs/revistas.inc.html',
			        cacheData: true /* only load once */
			    }));

			    tabView.addTab(new YAHOO.widget.Tab({
			        label: 'Internet',
			        dataSrc: '/ajax.php?lang='+ TMS_CURRENT_LANG +'&webpart=webparts/ajax/tabs/internet.inc.html',
			        cacheData: true /* only load once */
			    }));

			    tabView.addTab(new YAHOO.widget.Tab({
			        label: 'Biblioteca',
			        dataSrc: '/ajax.php?lang='+ TMS_CURRENT_LANG +'&webpart=webparts/ajax/tabs/biblioteca.inc.html',
			        cacheData: true /* only load once */
			    }));

			    tabView.addTab(new YAHOO.widget.Tab({
			        label: 'Recursos',
			        dataSrc: '/ajax.php?lang='+ TMS_CURRENT_LANG +'&webpart=webparts/ajax/tabs/recursos.inc.html',
			        cacheData: true /* only load once */
			    }));

			    tabView.addTab(new YAHOO.widget.Tab({
			        label: 'Alfabetización Informacional',
			        dataSrc: '/ajax.php?lang='+ TMS_CURRENT_LANG +'&webpart=webparts/ajax/tabs/alfabetizacion.inc.html',
			        cacheData: true /* only load once */
			    }));

			    tabView.addTab(new YAHOO.widget.Tab({
			        label: 'Bases de Datos',
			        dataSrc: '/ajax.php?lang='+ TMS_CURRENT_LANG +'&webpart=webparts/ajax/tabs/databases.inc.html',
			        cacheData: true /* only load once */
			    }));

			    tabView.appendTo('dynamictabs');

			}
		};
		obj.initSearchTabs = function () {
			var oSearchTabView = new YAHOO.widget.TabView('searching');
		};
		obj.adjust_images = function ( el, maxwidth ) {
		  if ((typeof el == 'object') || (el = $( el ))) {
		      var images = el.getElementsByTagName( 'img' );
			  var w = 0;
			  var h = 0;
			  var ratio = 1;
			  for(var i = 0; i < images.length; i++) {
			     w = parseInt(images[i].width, 10);
			     if (!(w > 0)) w = parseInt(images[i].style.width, 10);
			     if (w > maxwidth) {
			       h = parseInt(images[i].height);
			       if (!(h > 0)) h = parseInt(images[i].style.height);
			       images[i].style.width = maxwidth+'px';
			       images[i].width       = maxwidth;
			       if (h > 0) {
			         images[i].style.height = (h * maxwidth / w)+'px';
			         images[i].height 	    = h * maxwidth / w;
			       }
			     }
			  }
		  }
		};
		obj.closing = function (items) {
		  if (items.length > 0) {
		    for(k = 0; k < items.length; k++) {
		        YAHOO.util.Dispatcher.jsLoader ( items[k].file, {after: items[k].method} );
		    }
		  }
		};
  	    return obj;
	}();

	YAHOO.App.Buttons = function () {
		var obj = {};
		// Private Methods
		var buttons = {
			buttonDonate: function  (layer, args) {
				var el = $('donate');
				if (el) {
				  el.submit ();
				}
			}
		};
		var buttonsControl = function (layer, args) {
		  $B.processingAction (layer, args, buttonsControl);
		};
		$B.bubble.navigate.subscribe(buttonsControl);
		// Public Methods
		return obj;
	}();

	// Initialize and render dynamic elements using onContentReady event for each webpart
	$E.onDOMReady(YAHOO.App.Core.init, YAHOO.App.Core, true);
	$E.onContentReady('quickaccess', YAHOO.App.Core.initMenuBar, YAHOO.App.Core, true);
	$E.onContentReady('dynamictabs', YAHOO.App.Core.initHomeTabs, YAHOO.App.Core, true);
	$E.onContentReady('searching', YAHOO.App.Core.initSearchTabs, YAHOO.App.Core, true);
	$E.onContentReady('searchtabs', YAHOO.App.Core.initSearchTabs, YAHOO.App.Core, true);

})();
//]]>