var $D = YAHOO.util.Dom;
var $E = YAHOO.util.Event;
// removed because of namespace conflicts with Prototype
//var $A = YAHOO.util.Anim;
var $C = YAHOO.util.Connect;
//var $ = $D.get;

YAHOO.util.AnimMgr.fps = 500;

YAHOO.widget.mEffect = function(el) { this.oEl = YAHOO.util.Dom.get(el); };

YAHOO.widget.mEffect.prototype.showSignup = function() {
	var emailLink = $D.get('emaillist').getElementsByTagName('a')[0];
	$E.removeListener(emailLink, 'click');
	var closers = [emailLink, 'close'];
	$E.addListener(closers, 'click', function(e) {
		$E.stopEvent(e);
		var shrinkForm = new YAHOO.widget.mEffect();
		shrinkForm.hideSignup();
	});
	
	var show = new YAHOO.util.Anim('listsignup', {height: {to: 90}}, 0.2);
	show.onComplete.subscribe(function() {
		$E.addListener('listform', 'submit', function(e) {
			$E.stopEvent(e);
			var sendForm = new YAHOO.widget.mEffect();
			sendForm.submitEmail();
		});
	});
	show.animate();
};

YAHOO.widget.mEffect.prototype.hideSignup = function() {
	var emailLink = $D.get('emaillist').getElementsByTagName('a')[0];
	$E.removeListener(emailLink, 'click');
	$E.removeListener('listform', 'submit');
	$E.addListener(emailLink, 'click', function(e) {
		$E.stopEvent(e);
		var growForm = new YAHOO.widget.mEffect();
		growForm.showSignup();
	});
	var hide = new YAHOO.util.Anim('listsignup', {height: {to: 0}}, 0.1);
	hide.animate();
};

YAHOO.widget.mEffect.prototype.showLogin = function() {
	var loginLink = $D.get('login').getElementsByTagName('a')[0];
	$E.removeListener(loginLink, 'click');
	var closers = [loginLink, 'loginclose'];
	$E.addListener(closers, 'click', function(e) {
		$E.stopEvent(e);
		var shrinkForm = new YAHOO.widget.mEffect();
		shrinkForm.hideLogin();
	});
	
	var show = new YAHOO.util.Anim('droplogin', {height: {to: 150}}, 0.2);
	show.animate();
};

YAHOO.widget.mEffect.prototype.hideLogin = function() {
	var loginLink = $D.get('login').getElementsByTagName('a')[0];
	$E.removeListener(loginLink, 'click');
	$E.addListener(loginLink, 'click', function(e) {
		$E.stopEvent(e);
		var growForm = new YAHOO.widget.mEffect();
		growForm.showLogin();
	});
	var hide = new YAHOO.util.Anim('droplogin', {height: {to: 0}}, 0.1);
	hide.animate();
};

YAHOO.widget.mEffect.prototype.submitEmail = function() {
	var showLoad = new YAHOO.util.Anim('loadImg', {opacity: {to: 1}}, 0.2);
	showLoad.onComplete.subscribe(function() {
		var callback = {
			success : function(o) {
				// successful error
				if(o.responseText.indexOf('error:') != -1) {
					alert(o.responseText);
					var hideLoad = new YAHOO.util.Anim('loadImg', {opacity: {to: 0}}, 0.2);
					hideLoad.animate();
				}
				
				// true success
				else {
					$E.removeListener('listform', 'submit');
					var fadeForm = new YAHOO.util.Anim('listform', {opacity: {to: 0}}, 0.2);
					fadeForm.onComplete.subscribe(function() {
						$D.get('listform').innerHTML = "<p>"+o.responseText+"</p>";
						var fadeIn = new YAHOO.util.Anim('listform', {opacity: {to: 1}}, 0.2);
						fadeIn.onComplete.subscribe(function() {
							setTimeout(function() {
								var shrinkForm = new YAHOO.widget.mEffect();
								shrinkForm.hideSignup();
							}, 3000);
						});
						fadeIn.animate();
					});
					fadeForm.animate();
				}
				
			},
			
			failure : function() {
				alert('There was a problem submitting your signup. Please try again. If problems persist, please contact the site administrator.');
			},
			
			timeout : 15000
		};
		var postData = $C.setForm('listform');
		var transaction = $C.asyncRequest('POST', '/insider_email/signup_ajax', callback, postData);
	});
	showLoad.animate();
};

YAHOO.widget.mEffect.prototype.titlePop = function() {
	var xPos = $D.getX(this.oEl)+15;
	var yPos = $D.getY(this.oEl)+this.oEl.offsetHeight+5;
		
	$D.setXY(this.oEl.mTitle, [xPos, yPos]);
		
	$E.addListener(this.oEl, 'mouseout', function() {
		var hide = new YAHOO.widget.mEffect(this);
		hide.titleHide();
	});

	var appear = new YAHOO.util.Anim(this.oEl.mTitle, {opacity: {to: 0.9}}, 0.1);
	appear.onComplete.subscribe(function() {
		$E.removeListener(this.oEl, 'mouseover');
	});
	appear.animate()
};

YAHOO.widget.mEffect.prototype.titleHide = function() {
	var disappear = new YAHOO.util.Anim(this.oEl.mTitle, {opacity: {to: 0}}, 0.1);
	disappear.onStart.subscribe(function() {
		$E.removeListener(this.oEl, 'mouseout');
		$E.addListener(this.oEl, 'mouseover', function() {
			var show = new YAHOO.widget.mEffect(this);
			show.titlePop();
		});
	});
	setTimeout(function () {
		disappear.animate();
	}, 200);
};

YAHOO.maltby = function() {
	return {
		init : function() {
			var loadImg = document.createElement('img');
			loadImg.src = '/images/listsignup-load.gif';

			var emailLink = $D.get('emaillist').getElementsByTagName('a')[0];
			$E.on(emailLink, 'click', this.initEmail);
			
			var loginLi = $D.get('login');
			if (loginLi) {
				var loginLink = $D.get('login').getElementsByTagName('a')[0];
				$E.on(loginLink, 'click', this.initLogin);
			}
			
			var titles = $D.getElementsByClassName('term', 'a', 'container');
			if(titles.length > 0) {
				for(i = 0; i < titles.length; i++) {
					var titleBox = document.createElement('span');
					$D.generateId(titleBox, 'titleBox');
					titleBox.className = 'titleBox';
					$D.get('container').appendChild(titleBox);
					titleBox.innerHTML = titles[i].getAttribute('title');
					$D.setStyle(titleBox, 'opacity', '0');

					titles[i].setAttribute('title', '');
					titles[i].mTitle = titleBox;
				}
				$E.on(titles, 'mouseover', this.initTitle);
			}
		},
		
		initEmail : function(e) {
			$E.stopEvent(e);
			var xPos = $D.getX('emaillist')+10;
			var yPos = $D.getY('emaillist')+34;
			
			var box = document.createElement('div');
			$D.get(box).setAttribute('id', 'listsignup');
			$D.get(box).innerHTML = '<form method="post" action="/insider_email/signup" id="listform"><fieldset><label for="emailaddr">Enter Your Email Address</label><br /><input type="text" id="emailaddr" name="insider_email[email]" /><br /><input type="submit" id="insidersubmit" name="submit" value="Signup" /><img src="/images/listsignup-load.gif" alt="loading" id="loadImg" /></fieldset></form><img src="/images/listsignup-close.gif" alt="close" id="close" />';
			$D.setStyle(box, 'height', '0');
			$D.setStyle(box, 'z-index', '999');
			$D.get('container').appendChild(box);
			$D.setXY(box, [xPos, yPos]);
			$D.setStyle('loadImg', 'opacity', '0');
			
			var growForm = new YAHOO.widget.mEffect();
			growForm.showSignup();
		},
		
		initLogin : function(e) {
			$E.stopEvent(e);
			var xPos = $D.getX('login')-110;
			var yPos = $D.getY('login')+34;
			
			var box = $D.get('droplogin')
			$D.setStyle(box, 'height', '0');
			$D.setStyle(box, 'display', '')
			$D.setStyle(box, 'z-index', '998');
			$D.setXY(box, [xPos, yPos]);
			$D.setStyle('loadImg', 'opacity', '0');
			
			var growForm = new YAHOO.widget.mEffect();
			growForm.showLogin();
		},
		
		initTitle : function() {
			var show = new YAHOO.widget.mEffect(this);
			show.titlePop();
		}
	}
}();
YAHOO.util.Event.on(window, 'load', YAHOO.maltby.init, YAHOO.maltby, true);