/*
	Banner Animation Controller Script
*/

// Need only a single BannerController variable

var BannerController = { };

// Returns the BannerController._presets object for the banner in the argument
BannerController.getAnimPreset = function(element) {
	var p = [ 'anim1' ]; // TODO: Get this list from BannerController._presets somehow!
	var found = null;
	$.each(p, function(index, value) {
		if ($(element).hasClass(value)) {
			found = BannerController._presets[value];
		}
	});
	return found ? found : null;
};

// Reset animated properties for a specific banner,
// by checking for a className that matches the name of a preset
BannerController.resetAnimProps = function(banner) {
	var preset = BannerController.getAnimPreset(banner);

	if (preset) {
		$.each(preset.objects, function(i, obj) {
			$(banner).find(obj.selector).css(obj.property, obj.startValue).hide();
		});		 
	}
};

// Animate a banner using the preset defined as a className
// Optionally reset properties first
BannerController.animateBanner = function(banner, reset) {
	var b = $(banner);
	var resetPropertiesFirst = reset === true;
	var preset = BannerController.getAnimPreset(b);
	
	if (!preset) return; // Couldn't find a preset - so return silently
	
	if (resetPropertiesFirst) {
		BannerController.resetAnimProps(b);
	}
	
	// Animate each property defined in the preset
	$.each(preset.objects, function(i, obj) {
		var delay = (typeof(obj.delay) !== "undefined" ? obj.delay : i * 600);
		
		// Need to "build" the property map because we can't do this: { obj.property: obj.endValue }
		var propMap = {};
		propMap[obj.property] = obj.endValue;
		
		b.find(obj.selector).show().delay(delay).animate(propMap, { duration: obj.duration, easing: obj.easing });
	});
};


// Setup presets for animation - these should be generated
BannerController._presets = {};
