if (typeof (console) == 'undefined') {
	console = {
		log : function() {
		},
		dir : function() {
		}
	};
} // don't throw errors if firebug is not on

Tapestry.findZoneManagerByZoneId = function(zoneId) {
	var zoneElement = $(zoneId);
	if (!zoneElement) {
		Tapestry.ajaxError(
				"Unable to locate Ajax Zone '#{id}' for dynamic update.", {
					id : zoneId
				});
		return null;
	}
	var manager = $T(zoneElement).zoneManager;
	if (!manager) {
		Tapestry
				.ajaxError(
						"Ajax Zone '#{id}' does not have an associated Tapestry.ZoneManager object.",
						{
							id : zoneId
						});
		return null;
	}
	return manager;
};

Tapestry.hideZone = function(zoneId) {
	var zoneManager = Tapestry.findZoneManagerByZoneId(zoneId);
	if (zoneManager != null && zoneManager.hide != null) {
		zoneManager.hide();
	}
};

Tapestry.showZone = function(zoneId) {
	var zoneManager = Tapestry.findZoneManagerByZoneId(zoneId);
	if (zoneManager != null && zoneManager.show != null) {
		zoneManager.show();
	}
};

Tapestry.activateZone = function(zoneId, url) {
	var zoneManager = Tapestry.findZoneManagerByZoneId(zoneId);
	if (zoneManager != null) {
		zoneManager.updateFromURL(url);
	}
};

// /**
// * Added the "window.location.reload()" call
// */
// Tapestry.loadScriptsInReplyOrig = Tapestry.loadScriptsInReply;
// Tapestry.loadScriptsInReply = function( reply, callback ) {
// var redirectURL = reply.redirectURL;
// if ( redirectURL ) {
// window.location.pathname = redirectURL;
// // window.location.reload(); // added this to force reload for IE7 (mjm) ...
// and then took it out again cuz not honoring url in FF and IE7. Seems to work
// fine. Forget original problem.
// // Don't bother loading scripts or invoking the callback.
// return;
// }
// return Tapestry.loadScriptsInReplyOrig( reply, callback );
// };

Tapestry.ZoneManagerOrig = Tapestry.ZoneManager;
Tapestry.ZoneManager = Class.create(Tapestry.ZoneManagerOrig, {
	processReply : function($super, reply) {
		$super(reply);
		var analytics = reply.analytics;
		if (analytics) {
			// site catalyst
			{
				var hbxPage = analytics.hp;
				var hbxCategory = analytics.hc;
				var hbxHc4 = analytics.hc4;
				var scevents = analytics.sce;

				try {
					if (hbxPage && hbxCategory) {
						var hasHbPageView = (typeof (s) != 'undefined');
						if (hasHbPageView) {
							var gender = "X";
							var age = "000";
							if (hbxHc4 && hbxHc4.length == 4) {
								gender = hbxHc4.substring(0, 1);
								age = hbxHc4.substring(1, 4);
							}
							// sitecatlyst is no longer supported.
							//s.registerAjaxPageView(hbxPage, hbxCategory,
							//		gender, age, scevents);
							
						}
					}
				} catch (err) {
				}
			}
			// Ywa
			/*
			{
				var page = analytics.hp;
				var category = analytics.hc;
				//var hbxHc4 = analytics.hc4;
				var ywaevents = analytics.ywae;

				try {
					if (ywaeevents && page && category) {
						var paramPageName = ( category.endsWith( "/" ) ? category : category + "/" ) + page;
						
						var YWATracker = YWA.getTracker("1000766381262");
						
						YWATracker.setCF(7,analytics.ywacf);
					
						YWATracker.setDocumentName(paramPageName );
						YWATracker.setDocumentGroup(category);
						
						var ywaEvents = analytics.ywae;
						if (ywaEvents && YWATracker != null) {
							for ( var i = 0; i < ywaEvents.length; i++) {
								var ywaEvent = ywaEvents[i];
								YWATracker.setCF(ywaEvent.cf, ywaEvent.event);
								YWATracker.setAction(ywa.action);								
							}
						}
					
						YWATracker.submit();						

					}
				} catch (err) {
				}
				
			}
			*/
			// google
			{
				var googlePage = analytics.ga;
				if (googlePage && pageTracker != null) {
					try {
						/* console.log( "track-gc:zone: "+googlePage ); */
						pageTracker._trackPageview(googlePage);
					} catch (err) {
					}
				}
			}
			{
				var googleEvents = analytics.ge;
				if (googleEvents && pageTracker != null) {
					for ( var i = 0; i < googleEvents.length; i++) {
						var googleEvent = googleEvents[i];
						try {
							/* console.log( "track-ge:zone: " ); */
							/* console.log( googleEvent ); */
							pageTracker._trackEvent(googleEvent.category,
									googleEvent.action, googleEvent.label,
									googleEvent.value);
						} catch (err) {
						}
					}
				}
			}
		}
	}
});

