AARP.Login = {
	__version__: '1.0b1'
	// Hash used to determine which servers use WAM
	, WAMable: { 
		'beta-d.aarp.org': 'login-d', 
		'www-d.aarp.org': 'login-d', 
		'bulletin-d.aarp.org': 'login-d', 
		'products-d.aarp.org': 'login-d', 
		'beta-s.aarp.org': 'login-s', 
		'www-s.aarp.org': 'login-s', 
		'bulletin-s.aarp.org': 'login-s', 
		'products-s.aarp.org': 'login-s', 
		'beta.aarp.org': 'login', 
		'www.aarp.org': 'login', 
		'bulletin.aarp.org': 'login', 
		'products.aarp.org': 'login'
	}
	, open: function()
	{
		var WAMserver = AARP.Login.WAMable[AARP.page.host];
		if ( WAMserver )
		{
			document.location = 'https://' + WAMserver + '.aarp.org/community/auth/wamloginhandler.bt?referrer=' + document.location.toString();
			return;
		}
	}
	, close: function()
	{
		turnOffWait();
		Effect.Squish('loginOverlay');
	}
	, register: function()
	{
		var WAMserver = AARP.Login.WAMable[ AARP.page.host ] ;
		if ( WAMserver ) {
			document.location = 'https://' + WAMserver + '.aarp.org/community/register/index.bt' ;
			return;
		}
		else {
			document.location = 'https://login.aarp.org/community/register/index.bt' ;
			return;
		}
	}
};

function openLogin() { AARP.Login.open(); }
function closeLogin() { AARP.Login.close(); }

function showFailureMessage() {
	alert('System Error, Sorry.');
	closeLogin();
}

function submitLogin() {
	var errorFlag = 0;
	var username = $F('username');
	if (username == '') {
		errorFlag = 1;
		Effect.Appear('loginOverlayValidationError');
		$('username').setStyle({borderColor: '#F40E0E'});
	}
	var password = $F('password');
	if (password == '') {
		errorFlag = 1;
		Effect.Appear('loginOverlayValidationError');
		$('password').setStyle({borderColor: '#F40E0E'});
	}
	if (errorFlag == 0) {
		$('loginOverlayWait').show();
		var formValues = $('loginFormOverlay').serialize();
		var loginRequest = new Ajax.Request( '/community/auth/performAjaxLogin.bt', {method: 'post', parameters: formValues, onSuccess: showResponse, onFailure: showFailureMessage} );
	}
}

function showResponse(originalRequest) {
	var gotBack = originalRequest.responseText;
	if (gotBack.match(/NoMatch/)) {
		setTimeout("turnOffWait();", 2000);
		setTimeout("Effect.Shake('loginOverlay')", 2000);
		Effect.Appear('loginOverlayValidationError');
		Form.reset('loginFormOverlay');
		Form.focusFirstElement('loginFormOverlay');
	}
	else {
		// Commented out all of this pageantry because the
		// reload preempts it all anyway. - jas
		//setTimeout("turnOffWait()", 2000);
		//setTimeout("Effect.Squish('loginOverlay')", 2000);
		//prepHeader();
		document.location.reload();
	}
}

function turnOffWait() {
	$('loginOverlayWait').hide();
}

function submitLoginFullPage() {
	var errorFlag = 0;
	var username = $F('membernameText');
	if (username == '') {
		errorFlag = 1;
		$('membernameText').setStyle({borderColor: '#F40E0E'});
	}
	var password = $F('passwordText');
	if (password == '') {
		errorFlag = 1;
		$('passwordText').setStyle({borderColor: '#F40E0E'});
	}
	if (errorFlag == 0) {
		return true;
	}
	else {
		return false;
	}
}


/*
Pretty straight-forward. Sets or removes the search box text based on a default
value and the event taking place.
*/
var searchTerm = {
	defaultText: 'Enter Search Terms'
	, toggle: function( event )
	{
		var ele = Event.element( event );
		if ( ele.id == 'searchTerms' )
		{
			if ( event.type == 'focus' )
			{
				if ( ele.value == searchTerm.defaultText )
					ele.value = '';
			}
			else if ( event.type == 'blur' )
			{
				if ( ele.value.trim() == '' )
					ele.value = searchTerm.defaultText;
			}
		}
	}
};


function prepHeader() {
	// NEW: [2007-10-17] utilizing AARP.User instead of cookie hacking
	if ( AARP.User.isLoggedIn )
	{
		var firstName = AARP.User.firstName;
		if (firstName.length > 13) {
			firstName = firstName.substring(0, 14) + '&#8230;';
		}
		var newMessageCount = AARP.User.messages;
		var membername = AARP.User.name;
		
		$('welcomeAnon').hide();
		$('welcomeLoggedIn').show();
		$('firstName').update(firstName);
		if (newMessageCount > 0) {
			$('newMessageCount').update(' (' + newMessageCount + ' New)');
		}
	}

	gotSubNav = 0;
	channelPaths = $w('/health /money /leisure /makeadifference /family /membership /community');
	channelPaths.each(function(i) {
		if ((location.pathname).indexOf(i) != -1 ) {
			$(i.split('/')[1]+'Tab').addClassName('active');
			$(i.split('/')[1]+'SubNav').show(); gotSubNav = 1;
			topicPathList = (((location.pathname).slice((location.pathname).indexOf(i))).split('/')).without('');
			if (topicPathList.length > 1) {
				if ($(topicPathList[1].split('.html')[0] + 'SubTab')) { 
					$(topicPathList[1].split('.html')[0] + 'SubTab').addClassName('current');
				}
			}
		}
	});
	if ((location.pathname).indexOf('/onlinecommunity') != -1) {
		$('communityTab').addClassName('active');
		$('communitySubNav').show(); gotSubNav = 1;
	};
	
	if (gotSubNav == 0) {
		$('header').setStyle({height: '144px'});
		$('healthTab').setStyle({height: '32px'});
		$('moneyTab').setStyle({height: '32px'});
		$('leisureTab').setStyle({height: '32px'});
		$('makeadifferenceTab').setStyle({height: '32px'});
		$('familyTab').setStyle({height: '32px'});
		$('communityTab').setStyle({height: '32px'});
		$('membershipTab').setStyle({height: '32px'});
	};

	try {
		document.execCommand("BackgroundImageCache", false, true);
	}
	catch (err) {}
	
	Event.observe( 'searchTerms', 'blur', searchTerm.toggle, false );
	Event.observe( 'searchTerms', 'focus', searchTerm.toggle, false );

	Event.observe('searchTerms', 'focus', function() {
		$('searchTerms').setStyle({borderColor: '#000', color: '#000'});
	});
	Event.observe('searchTerms', 'blur', function() {
		$('searchTerms').setStyle({borderColor: '#999999', color: '#949189'});
	});
}

function prepProductsHeader() {
	if ( AARP.User.isLoggedIn ) {
		var firstName = AARP.User.firstName;
		if (firstName.length > 13) {
			firstName = firstName.substring(0, 14) + '&#8230;';
		}
		var newMessageCount = AARP.User.messages;
		var membername = AARP.User.name;
		
		$('welcomeAnon').hide();
		$('welcomeLoggedIn').show();
		$('firstName').update(firstName);
		if (newMessageCount > 0) {
			$('newMessageCount').update(' (' + newMessageCount + ' New)');
		}
	}

	try {
		document.execCommand("BackgroundImageCache", false, true);
	}
	catch (err) {}
	
	Event.observe( 'searchTerms', 'blur', searchTerm.toggle, false );
	Event.observe( 'searchTerms', 'focus', searchTerm.toggle, false );

	Event.observe('searchTerms', 'focus', function() {
		$('searchTerms').setStyle({borderColor: '#000', color: '#000'});
	});
	Event.observe('searchTerms', 'blur', function() {
		$('searchTerms').setStyle({borderColor: '#999999', color: '#949189'});
	});
}

// ---------------------------------------------------
function showSelectBoxes() {
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "visible";
	}
}

// ---------------------------------------------------
function hideSelectBoxes() {
	var selects = document.getElementsByTagName("select");
	for (i = 0; i != selects.length; i++) {
		selects[i].style.visibility = "hidden";
	}
}

// ---------------------------------------------------
function showFlash() {
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "visible";
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "visible";
	}
}

// ---------------------------------------------------
function hideFlash() {
	var flashObjects = document.getElementsByTagName("object");
	for (i = 0; i < flashObjects.length; i++) {
		flashObjects[i].style.visibility = "hidden";
	}

	var flashEmbeds = document.getElementsByTagName("embed");
	for (i = 0; i < flashEmbeds.length; i++) {
		flashEmbeds[i].style.visibility = "hidden";
	}
}

// ---------------------------------------------------
function showCalcs() {
	var calcs = document.getElementsByName("calculator");
	for (var i=0; i<calcs.length; i++) {
			calcs[i].style.visibility = "visible";
	}
}

// ---------------------------------------------------
function hideCalcs() {
	var calcs = document.getElementsByName("calculator");
	for (var i=0; i<calcs.length; i++) {
			calcs[i].style.visibility = "hidden";
	}
}

// ---------------------------------------------------
function getPageScroll() {
	var xScroll, yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
		xScroll = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
		xScroll = document.documentElement.scrollLeft;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
		xScroll = document.body.scrollLeft;	
	}

	arrayPageScroll = new Array(xScroll,yScroll);
	return arrayPageScroll;
}

// ---------------------------------------------------
function getPageSize() {
	var xScroll, yScroll;

	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = window.innerWidth + window.scrollMaxX;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}

	var windowWidth, windowHeight;

	if (self.innerHeight) {	// all except Explorer
		if(document.documentElement.clientWidth){
			windowWidth = document.documentElement.clientWidth; 
		} else {
			windowWidth = self.innerWidth;
		}
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	

	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	if(xScroll < windowWidth){	
		pageWidth = xScroll;		
	} else {
		pageWidth = windowWidth;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight);
	return arrayPageSize;
}

// ---------------------------------------------------
function overlayConfirmation(dialogBoxContentsDivID) {
	hideCalcs();
	hideSelectBoxes();
	hideFlash();

	var objBody = document.getElementsByTagName("body").item(0);
	
	var objOverlay = document.createElement("div");
	objOverlay.setAttribute('id','overlay');
	objOverlay.style.display = 'none';
	objBody.appendChild(objOverlay);

	var objDialogBox = document.createElement("div");
	objDialogBox.setAttribute('id','dialog');
	objDialogBox.style.display = 'none';
	objBody.appendChild(objDialogBox);

	var arrayPageSize = getPageSize();
	$('overlay').style.width = arrayPageSize[0] +"px";
	$('overlay').style.height = arrayPageSize[1] +"px";

	var overlayDuration = 0.2;	// shadow fade in/out duration
	var overlayOpacity = 0.6;	// controls transparency of shadow overlay
	new Effect.Appear('overlay', { duration: overlayDuration, from: 0.0, to: overlayOpacity });
	
	var arrayPageScroll = getPageScroll();
	var dialogBoxTop = arrayPageScroll[1] + (arrayPageSize[3] / 3);
	var dialogBoxWidth = 350;
	var dialogBoxLeft = ((arrayPageSize[2] / 2) - (dialogBoxWidth / 2)) + arrayPageScroll[0];
	
	$('dialog').style.top = dialogBoxTop +"px"; 
	$('dialog').style.left = dialogBoxLeft +"px"; 
	$('dialog').update($(dialogBoxContentsDivID).innerHTML);
	
	$('dialog').show();
}

// ---------------------------------------------------
function closeOverlayConfirmation() {
	$('dialog').hide();
	var overlayDuration = 0.2;	// shadow fade in/out duration
	new Effect.Fade('overlay', { duration: overlayDuration});
	showCalcs();
	showSelectBoxes();
	showFlash();
}

// ---------------------------------------------------
function overlayUI() {
	//hideSelectBoxes();
	hideCalcs();
	hideFlash();

	var objOverlay = document.createElement("div");
	objOverlay.setAttribute('id','overlay');
	objOverlay.style.display = 'none';
	$$('body')[0].appendChild(objOverlay);

	var arrayPageSize = getPageSize();
	$('overlay').style.width = arrayPageSize[0] +"px";
	$('overlay').style.height = arrayPageSize[1] +"px";

	var overlayDuration = 1.2;	// shadow fade in/out duration
	var overlayOpacity = 0.6;	// controls transparency of shadow overlay
	new Effect.Appear('overlay', { duration: overlayDuration, from: 0.0, to: overlayOpacity });
}

// ---------------------------------------------------
function closeOverlayUI() {
	var overlayDuration = 0.2;	// shadow fade in/out duration
	new Effect.Fade('overlay', { duration: overlayDuration});
	showCalcs();
	showSelectBoxes();
	showFlash();
}
