var moving_drawers = new Object();

function slide_drawer_start(slider_id, delta, target_height) {
	// If this drwer is currently moving, stop it from doing so.
	if (moving_drawers[slider_id]) {
		window.clearTimeout(moving_drawers[slider_id]);
		moving_drawers[slider_id] = null;
	}

	if (delta > 0) {// A drawer is being opened.
		// Obtain DOM element references.
		slider_elt = document.getElementById(slider_id);
		footer_elt = slider_elt.nextSibling;

		// Ensure the slider is visible.
		YAHOO.util.Dom.replaceClass(slider_elt,'hide','block');
	}

	// Begin drawer animation.
	slide_drawer(slider_id, delta, target_height);
}

function slide_drawer(slider_id, delta, target_height) {
	var slider_elt;
	var footer_elt;
	var slider_height;
	var new_height;

	// Obtain DOM element references.
	slider_elt = document.getElementById(slider_id);
	footer_elt = slider_elt.nextSibling;

	// Determine the new height of the sliding drawer section.
	slider_height = parseInt('' + slider_elt.style.height);
	slider_height = isNaN(slider_height) ? 0 : slider_height;
	new_height = slider_height + delta;

	// Change the sliding section's height, with bounds checking.
	if (delta > 0) {
		new_height = (new_height <= target_height) ? new_height : target_height;
	} else {
		new_height = (target_height <= new_height) ? new_height : target_height;
	}

	if (0 == new_height) {
		// Render the slider invisible if its height is zero, to prevent
		// flickering in IE.
		YAHOO.util.Dom.replaceClass(footer_elt,'block','hide');
		YAHOO.util.Dom.replaceClass(slider_elt,'block','hide');
	}

	slider_elt.style.height = new_height + 'px';

	if ((new_height == target_height) && (delta > 0))
		YAHOO.util.Dom.replaceClass(footer_elt,'hide','block');


	// Invoke this function again on a timed basis.
	if (slider_height != target_height) {
		moving_drawers[slider_id] = window.setTimeout("slide_drawer('" + slider_id + "', " + delta + ", " + target_height + ");", 5);
	}
}

if (YAHOO) {
	var gotyoucovered = YAHOO.namespace('com.digitas.amex.wegotyoucovered');

	//total number of blinds
	gotyoucovered.totalBlinds = 4;

	gotyoucovered.startTransition = function(e) {
		var results = /drawer_([0-9])+_(open|close)$/.exec(this.id);

		if (results && results.length > 0) {
			var idx = Number(results[1]);
			var action = results[2].toLowerCase();

			switch (action) {
				case 'close':
					slide_drawer_start('drawer_'+idx, -10, 0);
					YAHOO.util.Dom.replaceClass('drawer_'+idx+'_close','inline','hide');
					YAHOO.util.Dom.replaceClass('drawer_'+idx+'_open','hide','inline');
					break;

				case 'open':
					//close all drawers and update images
					for (var i=1;i<=gotyoucovered.totalBlinds;i++) {
						slide_drawer_start('drawer_'+i, -10, 0);
						YAHOO.util.Dom.replaceClass('drawer_'+i+'_close','inline','hide');
						YAHOO.util.Dom.replaceClass('drawer_'+i+'_open','hide','inline');
					}

					//set drawer height
					var hght = 295; // 185;

					switch (idx) {
						/*case 4:
							hght = 90;
							break;*/

						default:
							hght = 295; /*185*/;
							break;
					}

					//update the transition call-to-action
					slide_drawer_start('drawer_'+idx, 10, hght);
					YAHOO.util.Dom.replaceClass('drawer_'+idx+'_close','hide','inline');
					YAHOO.util.Dom.replaceClass('drawer_'+idx+'_open','inline','hide');
					break;
			}
		}
	}

	gotyoucovered.Initialize = function() {
		var transitionActions = YAHOO.util.Dom.getElementsByClassName('transitionAction');

		for (var i=0;i<transitionActions.length;i++)
			YAHOO.util.Event.addListener(transitionActions[i],'click',gotyoucovered.startTransition,transitionActions[i],true);
	}

	YAHOO.util.Event.onDOMReady(gotyoucovered.Initialize);
}