// for use with mootools v1.11
// Stewart Smith - WGBH Interactive
// http://interactive.wgbh.org/

// form validation and animation for:
// frm_login
// frm_forgot_password
// frm_register

// AJAX processing for login.php with frm_login_overlay

var users = {
	url_login: 'http://' + window.location.host + '/wgbh/amex/users/login.php',
	url_forgot: 'http://' + window.location.host + '/wgbh/amex/users/forgot_password.php',
	url_register_lnk: 'http://' + window.location.host + '/wgbh/amex/users/register.html',
	url_frm_login_overlay: 'http://' + window.location.host + '/wgbh/amex/users/frm_login_overlay.html',

	display_name: '',

	init: function(){
		// forms
		if( $('frm_login') )
			users.init_frm_login();

		if( $('frm_forgot_password') ) 
			users.init_frm_forgot_password();

		if( $('frm_register') )
			users.init_frm_register();

		// links
		if( $('topnav_login') ) users.init_topnav_login();
		
		// homepage
		if( $('users_homepage') ){
			users.init_frm_register_home();
			if( hrefer ){
				var backtoURL = hrefer;
				if( window.location.hash ){
					backtoURL += window.location.hash;
				}
				$('frm_login').backto_url.value = backtoURL;
				$('frm_register_2').backto_url_2.value = backtoURL;
			}
		}
	},

	
	// ***********************************
	// FORMS
	// ***********************************
	// rollover effect for send button
	init_send_fx: function(){
		$('send').fx = new Fx.Styles( $('send'), {duration:200, wait:false} );
		$('send').addEvent('mouseenter', function(e){
			this.fx.start( {'color': '#852e3a'} );
		});
		$('send').addEvent('mouseleave', function(e){
			this.fx.start( {'color': '#069be8'} );
		});
	},
	// login
	init_frm_login: function(){
		// pre validate on rollover
		this.init_send_fx();
		$('send').addEvent('mouseenter', function(e){
			users.validate_frm_login();
		});
		// enhancements - can also modify php returns
		$('js_return').value = 1;
		if( $('backto_url').value.indexOf('#') != -1 ){
			$('backto_url').value = $('backto_url').value + window.location.hash;
		}
		// add hash to all links to register
		
		
		// validation & ajax
//		$('frm_login').addEvent('submit', users.validate_frm_login);
//		$('frm_login').addEvent('submit', users.submit_frm_login);
	},
	validate_frm_login: function(e){
		var err_count = 0;
		// clear prior feedback
		$('err_email').setHTML('');
		$('err_pass1').setHTML('');

		if( $('email').value == '' ){
			$('err_email').setHTML('E-mail address is a required field');
			
			err_count++;
		}
		if( $('pass1').value == '' ){
			$('err_pass1').setHTML('Password is a required field');
			err_count++;
		}

		if( err_count > 0 ){
			(e)? e = new Event(e).stop():'';
		}else{
			(!e)? $('send').fx.start( {'color': '#069be8'} ):'';
		}
	},
	// registration
	init_frm_register: function(){
		this.init_send_fx();
		// pre validate
		$('send').addEvent('mouseenter', function(e){
			users.validate_frm_register();
		});
		// validation
//		$('frm_register').addEvent('submit', users.validate_frm_register);
/*
		// enhancements - can also modify php returns
		$('js_return').value = 1;
		if( $('backto_url').value.indexOf('#') != -1 ){
			$('backto_url').value = $('backto_url').value + window.location.hash;
		}
*/
	},
	init_frm_register_home: function(){
		$('send_2').fx = new Fx.Styles( $('send_2'), {duration:200, wait:false} );
		$('send_2').addEvent('mouseenter', function(e){
			this.fx.start( {'color': '#852e3a'} );
		});
		$('send_2').addEvent('mouseleave', function(e){
			this.fx.start( {'color': '#069be8'} );
		});
		// pre validate
		$('send_2').addEvent('mouseenter', function(e){
			users.validate_frm_register_home();
		});
		// validation
//		$('frm_register').addEvent('submit', users.validate_frm_register);
	},
	validate_frm_register: function(e){
		var err_count = 0;
		// clear prior feedback
		$('err_email').setHTML('');
		$('err_pass1').setHTML('');
		$('err_pass2').setHTML('');
		$('err_first_name').setHTML('');

		if( $('email').value == '' ){
			$('err_email').setHTML('E-mail address is a required field');
			err_count++;
		}
		if( $('pass1').value == '' ){
			$('err_pass1').setHTML('Password is a required field');
			err_count++;
		}
		if( $('pass2').value == '' ){
			$('err_pass2').setHTML('You must retype your password');
			err_count++;
		}
		if( $('first_name').value == '' ){
			$('err_first_name').setHTML('First Name is a requied field');
			err_count++;
		}

		if( err_count > 0 ){
			(e)? e = new Event(e).stop():'';
		}else{
			if( $('pass1').value != $('pass2').value  ){
				$('err_pass1').setHTML('Passwords don\'t match');
				$('err_pass2').setHTML('Enter your password again to confirm');
				$('pass1').focus();
				(e)? e = new Event(e).stop():'';
			}else{
				(!e)? $('send').fx.start( {'color': '#069be8'} ):'';
			}
		}
	},
	validate_frm_register_home: function(e){
		var err_count = 0;
		// clear prior feedback
		$('err_email_2').setHTML('');
		$('err_pass1_2').setHTML('');
		$('err_pass2_2').setHTML('');
		$('err_first_name_2').setHTML('');

		if( $('email_2').value == '' ){
			$('err_email_2').setHTML('E-mail address is a required field');
			err_count++;
		}
		if( $('pass1_2').value == '' ){
			$('err_pass1_2').setHTML('Password is a required field');
			err_count++;
		}
		if( $('pass2_2').value == '' ){
			$('err_pass2_2').setHTML('You must retype your password');
			err_count++;
		}
		if( $('first_name_2').value == '' ){
			$('err_first_name_2').setHTML('First Name is a requied field');
			err_count++;
		}

		if( err_count > 0 ){
			(e)? e = new Event(e).stop():'';
		}else{
			if( $('pass1_2').value != $('pass2_2').value  ){
				$('err_pass1_2').setHTML('Passwords don\'t match');
				$('err_pass2_2').setHTML('Enter your password again to confirm');
				$('pass1_2').focus();
				(e)? e = new Event(e).stop():'';
			}else{
				(!e)? $('send_2').fx.start( {'color': '#069be8'} ):'';
			}
		}
	},
	// ***********************************
	// TOPNAV LOGIN LINK
	// ***********************************
	init_topnav_login: function(){
		// ensure div for the login overlay
		if( !$('cnt_loginbox') ){
			$('cnt_amexnav').appendChild( new Element('div').setProperty('id', 'cnt_loginbox').addClass('hide') );
		}
/*
// This commented out section is working to load the overlay form - not used for inital launch 02/29/2008
		var url = users.url_frm_login_overlay;
		try {
			new Ajax(url, {
				method: 'get',
				update: $('cnt_loginbox'),
				onComplete: function(e){
					users.init_loginbox();
				},
				onFailure: function(e){
					users.show_top_login_status();
				}
			}).request();

			amex.addCSS('../../users/c/frm_login_overlay.css');

		} catch(e){  };
*/
		users.show_top_login_status();		
	},
	topnav_login_click: function(e){
		if( $('cnt_loginbox') ){
			if( Cookie.get('amex.user_id') ){
				e = new Event(e).stop();
				//$('cnt_loginbox').toggleClass('hide');
				Cookie.remove('amex.user_id', { path: '/wgbh/amex/' });
				Cookie.remove('amex.user_name', { path: '/wgbh/amex/' });
				Cookie.remove('amex.user_initials', { path: '/wgbh/amex/' });
				users.show_top_login_status();
				
				if( amexComments ){
					checkLogin(); // from _base.js for comments
				}
			}
/*			
			var strOut = 'amex.user_id: ' + Cookie.get('amex.user_id') + '\n';
			strOut += 'amex.user_name: ' + Cookie.get('amex.user_name') + '\n';
			strOut += 'amex.user_initials: ' + Cookie.get('amex.user_initials') + '\n';
			strOut += users.url_login + '\n';
			alert(strOut);
*/

		}
	},
	show_top_login_status: function(){
		if( $('topnav_login') ){
			var element = $('topnav_login');
			if( Cookie.get('amex.user_id') && Cookie.get('amex.user_name') ){
				element.setHTML('[Logout]');

				users.display_name = 'Welcome,&nbsp;' + Cookie.get('amex.user_name') + '&nbsp;';

				if( $('topnav_login_display_name') ){
					$('topnav_login_display_name').setHTML( users.display_name );
				}else{
					new Element('h2').setHTML( users.display_name ).setProperty('id', 'topnav_login_display_name').addClass('user_login').injectBefore(element);
				}

//				var newDiv = new Element('div').setProperty('id', 'display_name');
//				element.injectAfter( new Element('h2').setHTML( users.display_name ).addClass('user_login').injectInside( newDiv ) );
				
				element.addEvent('click', users.topnav_login_click);
			}else{
				element.setHTML('[Login]');
				element.removeEvent('click');
				element.href += '';
/*
				if( element.href.indexOf('#') != -1 ){
					element.href += $('backto_url').value + window.location.hash;
				}
*/

				if( $('topnav_login_display_name') ){
					$('topnav_login_display_name').remove();
				}
			}
		}
	},
	// ***********************************
	// AJAX LOGIN OVERLAY
	// ***********************************
	init_loginbox: function(e){
		$('lnk_close').addEvent('click', users.loginbox_close_click);

		$('lnk_forgot').addEvent('click', users.loginbox_switch_form);
		$('lnk_backto_login').addEvent('click', users.loginbox_switch_form);
		
		$$('.register_side a').each( function(element){
			element.addEvent('click', users.loginbox_register_click);
		});
		
//		$('frm_login').addEvent('submit', users.submit_frm_login);
//		$('frm_forgot_password').addEvent('submit', users.submit_frm_forgot);
		users.init_frm_login();
	},
	loginbox_switch_form: function(e){
		// clear prior feedback
		$('err_email').setHTML('');
		$('err_pass1').setHTML('');
		$('txt_feedback').setHTML('');

		if( this.id == 'lnk_backto_login' ){
			$E('.login_side h1').setText('Log in');
		}else{
			$E('.login_side h1').setText('Forgot password');		
		}
		// switch forms
		$('cnt_frm_login').toggleClass('hide');
		$('cnt_frm_forgot').toggleClass('hide');
	},
	loginbox_register_click: function(e){
		e = new Event(e).stop();
		window.location = users.url_register_lnk + '#' + presidents.now_playing_vid_name;
	},
	loginbox_close_click: function(e){
		e = new Event(e).stop();
		$('cnt_loginbox').toggleClass('hide');
	},
	// ***********************************
	// AJAX SUBMIT FORMS
	// ***********************************
	submit_frm_login: function(e) {
		var error = false;
		// read form values
		var options = {}
		$('frm_login').getFormElements().each(function(el){
			var name = el.name;
			var value = el.getValue();
			if (value === false || !name || el.disabled) options[value] = false;
			else if (name == 'update') options[name] = value;
			else options[value] = true;
		});
		options[''] 
		options['onComplete'] = users.frm_login_response;
		// it don't work - send is lies?
		//$('frm_login').send(options);
		try{ new Ajax(url,options).request(); } catch(e){ error = true; };
		if( !error ) e = new Event(e).stop();
	},
	frm_login_response: function(){
		alert('frm_login_response');
	},
	submit_frm_forgot: function(e) {
		// Prevent the submit event
		e = new Event(e).stop();
	}
};
window.addEvent('domready', users.init);