//<![CDATA[
/*
 Copyright (c) 2007 Caridy Patino. All rights reserved.
 version 0.1.1
 Author: Caridy Patino (caridy at gmail.com)
*/
YAHOO.namespace("App");
(function() {

  var $B = YAHOO.Bubbling,
  	  $L = YAHOO.util.Lang,
	  $E = YAHOO.util.Event,
	  $D = YAHOO.util.Dom,
	  $ =  YAHOO.util.Dom.get;

	YAHOO.App.Core = function () {
	    var obj = {},
	        _mainContent = 'tms-story',
			_container = 'yui-cms-floating-wizard';
		try {
			obj.flags = DEFAULT_VARS;
		} catch(e) {
			obj.flags = {};
		}
        // Private Methods
		function artworkAdjustPagination ( p ) {
			var n = $('pagination-artworks');
			if (n) {
				n.innerHTML = p;
			}
		}
		function navPopUp (layer, args) {
			  var el = args[1].anchor,
			      id = null, h;
			  if (!args[1].flagged && el) {
				  id = 'popup'+$E.generateId(el);
				  h = YAHOO.plugin.Dispatcher.augmentURI (el.getAttribute('href',2), { tpl: 'tpls/popup' });
                  if (YAHOO.lang.isObject(YAHOO.behavior.Gallery)) {
					  // setting the gallery entry
					  c = YAHOO.behavior.Gallery.add ([{href:h, title:'', gallery:id, width: 600},{}],{
							gallery: id,
							action:'unique',
							width: 600
					  });
					  // displaying the gallery
					  Shadowbox.open({gallery: id, width: 600}, c);
					  window.setTimeout (function(){
						  var address = $('pavel-address-location');
						  var tbar = $('shadowbox_toolbar_inner');
						  if (address && tbar) {
							  tbar.innerHTML += address.innerHTML;
						  }
					  }, 500);
					  window.setTimeout (function(){
						  var cbutton = $('shadowbox_nav_close');
						  if (cbutton) {
							  cbutton.innerHTML = ' &nbsp; ';
						  }
					  }, 1000);
					  return true;
				  }
		      }
		};
		var actions = {
			navPopUp: navPopUp,
			actionPopUp: navPopUp,
			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();
					}
				  }
			},
			actionDisplayArtwork: function (layer, args) {
				  var p = $B.getAncestorByClassName( args[1].target, 'resume-gallery-artwork' );
				  if (!args[1].flagged && args[1].anchor && p) {
				  	  YAHOO.plugin.WizardManager.add('app-artwork-visor', {
						uri: args[1].anchor.getAttribute('href',2),
						dataMask: {
							'tpl':'tpls/artwork-large',
							'artist': args[1].anchor.getAttribute('rel')
						},
						dynamic: false
					  });
					  p = parseInt(p.getAttribute('rel'), 10);
					  artworkAdjustPagination(p+1);
					  return true;
				  }
			},
			actionPreviousArtwork: function (layer, args) {
				  var p = $('pagination-artworks'),
				      c = $('pagination-artworks-list'),
					  l = null, a = null;
				  if (!args[1].flagged && p && c) {
					  p = parseInt(p.innerHTML, 10)-2;
					  // locating the correct link
					  l = $D.getElementsByClassName ('resume-gallery-artwork', 'div', c);
					  if (((a = l[p]) || (a = l.pop())) && (a = $D.getElementsByClassName ('actionDisplayArtwork', 'a', a)[0])) {
						  // loading the correct content based on the link
						  YAHOO.plugin.WizardManager.add('app-artwork-visor', {
							uri: a.getAttribute('href',2),
							dataMask: {
								'tpl':'tpls/artwork-large',
								'artist': a.getAttribute('rel')
							},
							dynamic: false
						  });
						  if (l.length && (p < 0)) {
							  p = l.length;
						  }
						  artworkAdjustPagination(p+1);
					  }
					  return true;
				  }
			},
			actionNextArtwork: function (layer, args) {
				  var p = $('pagination-artworks'),
				      c = $('pagination-artworks-list'),
					  l = null;
				  if (!args[1].flagged && p && c) {
					  p = parseInt(p.innerHTML, 10);
					  // locating the correct link
					  l = $D.getElementsByClassName ('resume-gallery-artwork', 'div', c);
					  if (((a = l[p]) || (a = l.shift())) && (a = $D.getElementsByClassName ('actionDisplayArtwork', 'a', a)[0])) {
						  // loading the correct content based on the link
						  YAHOO.plugin.WizardManager.add('app-artwork-visor', {
							uri: a.getAttribute('href',2),
							dataMask: {
								'tpl':'tpls/artwork-large',
								'artist': a.getAttribute('rel')
							},
							dynamic: false
						  });
						  if (l.length && (p > l.length)) {
							  p = 0;
						  }
					  	  artworkAdjustPagination(p+1);
					  }
					  return true;
				  }
			},
			actionDynamic: function (layer, args) {
				  var owner = null;
				  if (!args[1].flagged && (owner = $B.getAncestorByClassName( args[1].anchor, 'dynamic' ))) {
					  if ($L.isObject(owner) && $D.hasClass(owner, 'yui-cms-wizard')) {
						  YAHOO.plugin.WizardManager.reload(owner, args[1].anchor.getAttribute('href', 2));
						  return true;
					  }
				  }
			},
			actionEmailAddress: function(layer, args) {
				if (!args[1].flagged && args[1].anchor) {
					var email = args[1].anchor.getAttribute('rel') || args[1].anchor.innerHTML;
					args[1].anchor.href = 'mailto:'+email;
					return false; // leave the event run
				}
			}
		};
	    $B.on('navigate', function (layer, args) {
		  $B.processingAction (layer, args, actions);
	    });
	    $B.on('property', function (layer, args) {
			  args[1].stop = true;
			  args[1].flagged = true;
		});
		var fixcolumns = function (layer, args) {
			  // adjusting the body height manually to 
			  var h = $D.getViewportHeight();
		      $D.setStyle(document.body, 'min-height', (h-40)+'px');
			  $D.setStyle(document.body, 'min-width', '1140px');
			  // now we will calculate the available area for the main content, to display the scroll bar if needed...
			  var s = $D.get ('default-viewport-container'),
			      f = $D.getRegion('footer');
			      r = $D.getRegion('default-viewport-container');
			  if (f && r && s) {
				  $D.removeClass(s.parentNode, 'onepage');
				  // viewport height - white area over the main content - footer height - 20px wildcard
				  h = h - r.top - (f.bottom - f.top) - 20;
				  $D.setStyle (s, 'height', h+'px');
				  // if the main content don't need scroll, then I will add the class to remove the scrolls
				  //if ((parseInt(s.scrollHeight) <= h)) {
					  //$D.addClass(s.parentNode, 'onepage');
				  //}
			  }
		};
	    $B.on('repaint', fixcolumns);

        // Public Vars
		obj.navHistory = [];

		// Turning on the monitors (by default, the bubbling core only monitors the browser window size)
		$B.initMonitors();

    	// using the GOD layer to check common links
    	$B.on('god', function (layer, args) {
    		  
			  return false;
			  
			  var el = args[1].anchor,
			      m = $(_mainContent);
    		  if (el && !$B.getAncestorByClassName(el, 'external')) {
    			  var h = el.getAttribute("href",2)+'#',
    			  	  r = el.getAttribute("rel"),
    			  	  t = el.getAttribute("target"),
    				  l = document.location+'#';
				  h = h.substr (0, h.indexOf('#'));
				  l = l.substr (0, l.indexOf('#'));
    		  	  if ((h && ((h.indexOf('#') === 0) || (h.indexOf('javascript:') === 0) || ((h.indexOf('#') > 0) && (l.indexOf(h) === 0)))) ||
    			      (r == 'external') || (r == 'internal') || (t && t != '') || (h == '') || (h == l)) {
    				return;
    		      }
				  // gettting the owner, by default the general container
				  var owner = $B.getAncestorByClassName( el, 'dynamic' ) || m;
				  if ($L.isObject(owner) &&  $D.hasClass(owner, 'yui-cms-wizard')) {
					  YAHOO.plugin.WizardManager.reload(owner, h);
				  }
				  else {
					  YAHOO.util.Dispatcher.fetch(owner, h);
				  }
    		      args[1].stop = true;
    		      args[1].flagged = true;
    		  }
    	});
        // Public Methods
		obj.init = function () {
		  // redefining the effect for the mask
		  YAHOO.widget.Loading.config({
		    effect: !(YAHOO.env.ua.webkit)
		  });
		  this.initHints();
		  fixcolumns();
		  YAHOO.plugin.WizardManager.adopt( _mainContent, {
			uri: '/',
			dataMask: {'tpl':'tpls/none'},
			dynamic: true
		  });
		};
		obj.initHints = function () {
            YAHOO.widget.TooltipManager.init();
            YAHOO.widget.TooltipManager.config ({
                width: '250px'
            });
			YAHOO.widget.TooltipManager.forbbiden = ['yui-skin-sam'];
            YAHOO.widget.TooltipManager.onCompile = function ( el, o ) {
            	this.body = this.backup.title || '';
              	return true;
            };
		};
		obj.initMenuBar = function () {
		  var m1 = $('pavel-press-childs'),
		  	  m2 = $('pavel-exhibitions-childs'),
			  m3 = $('pavel-cv-childs'),
			  m4 = $('pavel-pr-childs'),
			  c  = null;
		  if (m1 && ((m1.getElementsByTagName('li')).length == 0) && (c = $('pavel-press-chunk'))) {
			  $E.purgeElement ( c, true );
    		  c.parentNode.removeChild(c);
		  }
		  if (m2 && ((m2.getElementsByTagName('li')).length == 0) && (c = $('pavel-exhibitions-chunk'))) {
			  $E.purgeElement ( c, true );
    		  c.parentNode.removeChild(c);
		  }
		  if (m3 && ((m3.getElementsByTagName('li')).length == 0) && (c = $('pavel-cv-chunk'))) {
			  $E.purgeElement ( c, true );
    		  c.parentNode.removeChild(c);
		  } else if (c = $('pavel-cv-menu')) {
			  $E.purgeElement ( c, true );
    		  c.parentNode.removeChild(c);
		  }
		  if (m4 && ((m4.getElementsByTagName('li')).length == 0) && (c = $('pavel-pr-chunk'))) {
			  $E.purgeElement ( c, true );
    		  c.parentNode.removeChild(c);
		  } else if (c = $('pavel-pr-menu')) {
			  $E.purgeElement ( c, true );
    		  c.parentNode.removeChild(c);
		  }
		  var oMenuBar = new YAHOO.widget.MenuBar('page-menu', { autosubmenudisplay: true, hidedelay: 750, lazyload: true });
          oMenuBar.render();
		};
		obj.setTitle = function (t, c) {
			var el = $('pazel-section');
			if ($L.isString(t) && el) {
				if ($L.isString(c)) {
					$D.addClass(el, 'title-'+c);
				}
				$E.onDOMReady (function(){
					el.innerHTML = t;										
				});
			}
		};
		obj.preview = function () {
			var el = $('player-preview-img'),
			    owner = $B.getAncestorByClassName( el, 'large' ),
				vp, area;
			
			if (el && owner) {
				// adjusting the image inside the player area
				area = $D.getRegion(el);
				vp = $D.getRegion(owner);
				area.height = area.bottom-area.top;
				area.width = area.right-area.left;
				vp.height = vp.bottom-area.top;
				vp.width = vp.right-vp.left;
				//$D.setXY(el, [vp.left + , vp.top + ((350 - area.height) / 2)]);
				var h = Math.min(owner.scrollHeight, parseInt($D.getStyle(el, 'height'), 10)), w = Math.min(owner.scrollWidth, parseInt($D.getStyle(el, 'width'), 10));
				if ((h > 0) && (w > 0)) {
				  //$D.setStyle (el, 'left', ((350 - w) / 2)+'px');
				  $D.setStyle (el, 'top', ((350 - h) / 2)+'px');
				}
			}
		};
		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;
	}();

	// Initialize and render dynamic elements using onContentReady event for each webpart
	$E.onDOMReady(YAHOO.App.Core.init, YAHOO.App.Core, true);
	$E.onContentReady('page-menu', YAHOO.App.Core.initMenuBar, YAHOO.App.Core, true);
	$E.onAvailable('tms-body', function () {
		$D.addClass(this, 'js');
	});
})();
//]]>