AARP.Login = {
	__version__: '1.0b1'
	// Hash used to determine which servers use WAM
	, WAMable: { 'beta-d.aarp.org': 'login-d', 'beta.aarp.org': 'login', 
	'www-d.aarp.org': 'login-d', 'www.aarp.org': 'login',
	'bulletin-d.aarp.org': 'login-d', 'bulletin.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();
			// document.location = 'https://' + WAMserver + '.aarp.org/community/auth/wamloginhandler.bt?referrer=' + AARP.page.url;
			return;
		}
		
		Effect.Appear('loginOverlay');
		$('username').setStyle({borderColor: '#666666'});
		$('password').setStyle({borderColor: '#666666'});
		$('loginOverlayValidationError').hide();
		Form.reset('loginFormOverlay');
		Form.focusFirstElement('loginFormOverlay');		
	}
	, close: function()
	{
		turnOffWait();
		Effect.Squish('loginOverlay');
	}
}

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)');
		}
	}

	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();
			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('active');
				}
			}
		}
	});
	if ((location.pathname).indexOf('/onlinecommunity') != -1) {
		$('communityTab').addClassName('active');
		$('communitySubNav').show();
	};
	
	// NEW: add behavior to searchTerms box
	// added by kaiser, 2007-09-17
	Event.observe( 'searchTerms', 'blur', searchTerm.toggle, false );
	Event.observe( 'searchTerms', 'focus', searchTerm.toggle, false );
}


// ---------------------------------------------------
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 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) {
	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});
	showSelectBoxes();
	showFlash();
}

// ---------------------------------------------------
function overlayUI() {
	//hideSelectBoxes();
	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});
	showSelectBoxes();
	showFlash();
}
