/*
 * header functions
 */
var blindDownSections = new Array("learn", "join", "succeed", "community");
var copyspeed;
var pausespeed;
var ticker_speed;
var registrationInfoLoaded = false;
var onJoinSuccess;

function showJoin2(interstitial) {
	interstitial.options.hideEffectOptions.beforeFinish = function(){
		showJoin();
	}
	interstitial.hide();
}

function showSignin2(interstitial) {
	interstitial.options.hideEffectOptions.beforeFinish = function(){
		showSignin('/DietTelevision/signin.html?popupId=signin');
	}
	interstitial.hide();
}

// Shows the signin overlay
function showSignin(url) {
	showFormsignin(url, 'signinimg', staticContentBase + '/images/nav_signin_On.png');
	var l = ((document.body.clientWidth - 980)/2 + 644);
	var left = (l < 644) ? 644 : l;

	winsignin.setLocation(132, left);
	pauseTicker();
	setTimeout('$(\'email\').focus()',500);
	return false;
}

function toggleHeaderImg(img, src) {
	var section = img.id.substring(0, img.id.indexOf("img"));
	if ($(section + "Id").className != "sectionon") {
		toggleImg(img,src);
	}
}

// Toggles a Blind Up/Down overlay
// Additionally, any pre-blind-down'd overlay is blinded up
function toggleBlind(section, overlay,show) {

	var qpos = "front";
	//var sectionImg = section + "img";
	var sectionFunc = section.substring(0,1).toUpperCase() + section.substring(1);
	for (var sec = 0; sec < blindDownSections.length; sec++) {
		var theSection = blindDownSections[sec];
		var theSectionFunc = theSection.substring(0,1).toUpperCase() + theSection.substring(1);

		// Attempt to hide any blind-downs that may
		// be active (other than the one requested)
		if (theSection != section) {
			var secImg = theSection + "img";
			if ($(theSection + "Id")) {
				if ($(theSection + "Id").className == "sectionon") {
				//if (currentSection == section) {
					eval("hide" + theSectionFunc + "()");
					$(theSection + "Id").className = "sectionoff";
					// Only set Queue position to the end if we
					// are actually blinding down the section
					// If current section than the img is 'On'
					// but we are not blinding down
					if (theSection != currentSection) qpos = "end";
				}
			}
		}
	}

	if (show=="false") {
		//$(sectionImg).src= staticContentBase + '/images/nav_' + section + '.png';
		Effect.BlindUp(overlay);
		//$(section + "Id").className = "sectionoff";
	} else {
		//$(sectionImg).src= staticContentBase + '/images/nav_' + section + '_On.png';
		Effect.BlindDown(overlay, { queue: qpos});
		//$(section + "Id").className = "sectionon";
		return true;
	}
	return false;
}

// Hides (Blinds Up) an Overlay
function hideBlind(section, overlay) {
	var sectionImg = section + "img";
	//if ($(sectionImg) && section != currentSection) $(sectionImg).src= staticContentBase + '/images/nav_' + section + '.png';
	Effect.BlindUp(overlay, { queue: 'front'});
	return false;
}

// Blind Up/Down the Succeed Overlay
function showSucceed() {
	// If Join img does not exist we are already signed in
	// so go directly to the Succeed section
	//if (signedIn) {
		document.location = contextRoot + '/succeed.html';
		return false;
	//}

	//if ( toggleBlind('succeed', 'SucceedNotAlreadyMember_Overlay')) {
	//	showInnerSignin();
	//}
	//document.location = contextRoot + "/
	//return false;
}

// Blind Up/Down the Community Overlay
function showCommunity() {
	// If Join img does not exist we are already signed in
	// so go directly to the Succeed section
	//if (!$('joinimg')) {
		document.location = contextRoot + '/community.html';
		return false;
	//}

	//if ( toggleBlind('community', 'SucceedNotAlreadyMember_Overlay')) {
	//	showInnerSignin();
	//}
	//return false;
}
function mustRegister() {
	var qpos = "front";
	var section = 'join';
	var sectionImg = section + "img";
	var sectionFunc = section.substring(0,1).toUpperCase() + section.substring(1);
	for (var sec = 0; sec < blindDownSections.length; sec++) {
		var theSection = blindDownSections[sec];
		var theSectionFunc = theSection.substring(0,1).toUpperCase() + theSection.substring(1);

		// Attempt to hide any blind-downs that may
		// be active (other than the one requested)
		if (theSection != section) {
			if ($(theSection + "Id")) {
				if ($(theSection + "Id").className == "sectionon") {
				//if (currentSection == section) {
					eval("hide" + theSectionFunc + "()");
					$(theSection + "Id").className = "sectionoff";
					// Only set Queue position to the end if we
					// are actually blinding down the section
					// If current section than the img is 'On'
					// but we are not blinding down
					if (theSection != currentSection) qpos = "end";
				}
			}
		}
	}
	//$(sectionImg).src= staticContentBase + '/images/nav_' + section + '_On.png';

    if(!registrationInfoLoaded){
        registrationInfoLoaded = true;
        var xmlHttp = getXmlHttp();
        var url = contextRoot + "/join.jsp";
        url=url + "?dummy=" + new Date().getTime();
        xmlHttp.onreadystatechange=function(){
            if (xmlHttp.readyState==4){
                $('JoinOverlay').innerHTML = xmlHttp.responseText;
                Effect.BlindDown('JoinOverlay', { queue: qpos});
                initJoin(); //showInnerSignin('');
            }
        };
        xmlHttp.open("GET",url,true);
        xmlHttp.send(null);
	}else{
        Effect.BlindDown('JoinOverlay', { queue: qpos});
        initJoin(); //showInnerSignin('');
    }
    return false;
}
// Blind Up the Community Overlay
function hideCommunity() {
	hideBlind('community', 'SucceedNotAlreadyMember_Overlay');
	return false;
}
// Displays the inner signin page
function showInnerSignin(ext) {
	initInnerSignin(ext);
	$('ReturningMembersColP' + ext).style.display="none";
	$('ReturningMembersCol' + ext).style.display="block";
	//AjaxReplacePage('ReturningMembersCol','signininline.jsp', '');
	return false;
}
// Displays the inner forgot password page
function showInlinePassword(ext) {
	initInnerForgotPassword(ext);

	$('ReturningMembersCol' + ext).style.display="none";
	$('ReturningMembersColP' + ext).style.display="block";
	return false;
}

// Cancels the inline signin blind-down or overlay
function cancelInlineSignin(ext, cancelFunc) {
	if ($('succeedimg').src.indexOf("_On") > -1) {
		hideSucceed();
	} else {
		if (cancelFunc)
		{
			eval(cancelFunc);
		}
	}
	return false;
}

// Blind Up/Down the Join Overlay
function showJoin(onJoinSuccessCallback,show) {

	// see joinSuccess()
	onJoinSuccess = onJoinSuccessCallback;
    //if (isLoggedIn()) {
	//	displayError("You are already logged in!");
	//	return false;
	//}

    if(!registrationInfoLoaded){
        registrationInfoLoaded = true;
        var xmlHttp = getXmlHttp();
        var url = contextRoot + "/join.jsp";
        url=url + "?dummy=" + new Date().getTime();
        xmlHttp.onreadystatechange=function(){
            if (xmlHttp.readyState==4){
                $('JoinOverlay').innerHTML = xmlHttp.responseText;
                if (toggleBlind('join', 'JoinOverlay',show)){
                    initJoin();
		            setCorrectDays();
		            pauseTicker();
                }
            }
        };
        xmlHttp.open("GET",url,true);
        xmlHttp.send(null);
    }else{
        if (toggleBlind('join', 'JoinOverlay',show)){
            initJoin();
            setCorrectDays();
            pauseTicker();
        }
    }
	//}
	return false;
}

// Shows the Select Diet Overlay
function showSelectDietOverlay(dietId, dietName) {

	var onSuccess = 'setUserDiet(\'' + dietId + '\');';

	var theUrl = contextRoot + '/selectDiet.jsp?dietId=' + dietId +
		'&dietName=' + escape(dietName) +
		'&onSuccess=' + escape(onSuccess);

	showFormselectdiet(theUrl, '', '');

	if (!$('joinimg')) {

		setUserDiet(dietId);
		/*
		var url = contextRoot + '/ChangeCurrentDiet.do';
		var pars = {};
		doJsonAjaxRequest(url, pars, function() {
				$('CongratsOverlay').style.display = "block";
		   		$('JoinOverlayArea').style.height="220px";
		   	}
		);
		*/

		/* Begin Coremetrics code */
		cmCreateConversionEventTag(dietName, "2", "Diet Signup");
		/* End Coremetrics code */

    } else {
		showInnerSignin('Diet');
	}
}

function setUserDiet(dietId)
{
	var url = contextRoot + '/ChangeCurrentDiet.do';
	var pars = { dietId: dietId };
	doJsonAjaxRequest(url, pars, function() {} );
}

// Shows the register (join) blind down from the selected diet overlay
function registerWithSelectedDiet(dietId, dietName) {
	$('SelectDietOverlay').style.display = "none";
	winselectdiet.hide();

	var onSuccess = 'showSelectDietOverlay(\'' + dietId + '\', \'' + dietName + '\');';
	showJoin(onSuccess);
}

// Blind Up the Succeed Overlay
function hideSucceed() {
	hideBlind('succeed', 'SucceedNotAlreadyMember_Overlay');
	return false;
}

// Blind Up the Join Overlay
function hideJoin() {
	hideBlind('join', 'JoinOverlay');
	startTicker();
	return false;
}

// Reset the Inner SignIn Div to it's default (non-error) state
function initInnerSignin(ext) {
	$('ReturningMembersCol' + ext).style.backgroundColor='#FFF';
	$('ReturningMembersCol' + ext).style.border='1px solid #ccc';
	$('ReturningMembersCol' + ext).style.width='318px';
	$('emailLbl' + ext).innerHTML='Email Address';
	$('passwdLbl' + ext).innerHTML='Password';
	$('errorLbl' + ext).style.display = "none";
	$('errordiv' + ext).innerHTML = "";
	$('signin_submitbtn' + ext).className='GreenButton';
   	$('link' + ext).style.color = '#7ea831';
   	$('cancelbtn' + ext).style.color ='#7ea831';
    $('emailLbl' + ext).style.color='#666';
    $('passwdLbl' + ext).style.color='#666';
}
// Reset the Inner Forgot Password Div to it's default (non-error) state
function initInnerForgotPassword(ext) {
		$('errorLblForgot' + ext).style.display = 'none';
       	$('ReturningMembersColP' + ext).style.backgroundColor = '#FFF';
       	$('ReturningMembersColP' + ext).style.border = '1px solid #ccc';
       	$('forgotPassword_submitbtn' + ext).className='GreenButton';
       	$('linkBack' + ext).style.color = '#7ea831';
       	$('emailLblForgot' + ext).innerHTML='Email Address';
		$('emailLblForgot' + ext).style.color='#666';
      	$('errordivForgot' + ext).style.innerHTML='';

      	undoConfirmGenerateNewPassword(ext);
}

// Show the appropriate sign-in header area
function toggleSigninDiv(screenName) {
	$('signindiv').style.display="none";
	$('signindiv').innerHTML = "";
	$('Welcome').style.display="block";
	$('welcomeuser').innerHTML = screenName;
}

// Perform Sign-In form error checks
function doSigninErrors(div, ext) {
	var e = trim($('email' + ext).value);
	var p = trim($('password' + ext).value);
	var hasErrors = false;
	var hasEmailE = false;
	var hasPasswdE = false;

	var hasOtherE = ($('errordiv' + ext).innerHTML != "");
	if (hasOtherE) hasErrors = true;

	if ( !validEmail(e))
	{
		hasEmailE = true;
		hasErrors = true;
	} else {
		$('emailLbl' + ext).innerHTML='Email Address';
	}

	if (p == '') {
		hasPasswdE = true;
		hasErrors = true;
	} else {
		$('passwdLbl' + ext).innerHTML='Password';
	}
	if (hasErrors) {
		$('SigninOverlayHeader').style.borderBottom="0px dotted #cc3333";
        $('SigninOverlayHeader').style.paddingBottom="0px";
        $('errorLbl' + ext).style.display = 'block';
       	$(div).morph('background-color:#FCC8B1;border: 1px solid #cc3333');
       	if (!ext)
       	{
       		$('closebtn' + ext).src = staticContentBase + "/images/butt_close-error.png";
		}
		else
		{
		   	$('cancelbtn' + ext).style.color ='#CC3333';
       	}
       	$('signin_submitbtn' + ext).className='ErrorRedButton';
       	$('link' + ext).style.color = '#666';
       	if (hasEmailE) {
       		$('emailLbl' + ext).innerHTML='Re-enter a valid email address';
			$('emailLbl' + ext).style.color='#cc3333';
       	}
       	if (hasPasswdE) {
       		$('passwdLbl' + ext).innerHTML='Re-enter your password';
			$('passwdLbl' + ext).style.color='#cc3333';
		}
		if (hasOtherE) {
			$('errordiv' + ext).style.color='#cc3333';
		}
		return true;
	}

	//$('signinimg').src= staticContentBase + '/images/nav_signin.png';

	return false;
}

// Perform Forgot Password form error checks
function doForgotPasswordErrors(div, ext) {

	var e = trim($('emailForgot' + ext).value);
	var hasErrors = false;
	var hasEmailE = false;
	var hasOtherE = ($('errordiv' + ext).innerHTML != "");
	if (hasOtherE) hasErrors = true;

	if ( !validEmail(e))
	{
		hasEmailE = true;
		hasErrors = true;
	} else {
		$('emailLblForgot' + ext).innerHTML='Email Address';
	}
	if (hasErrors) {
		$('ForgetPwdOverlayHeader').style.borderBottom="1px dotted #cc3333";

		$('errorLbl' + ext).style.display = 'block';
       	$(div).morph('background-color:#FCC8B1;border: 1px solid #cc3333');
       	if (!ext)
       		$('closebtn' + ext).src = staticContentBase + "/images/butt_close-error.png";
       	$('forgotPassword_submitbtn' + ext).className='ErrorRedButton';
       	$('linkBack' + ext).style.color = '#666';
       	if (hasEmailE) {
       		$('emailLblForgot' + ext).innerHTML='Please enter a valid email address';
			$('emailLblForgot' + ext).style.color='#cc3333';
       	}
       	if (hasOtherE) {
			$('errordiv' + ext).style.color='#cc3333';
		}
		return true;
	}

	//$('signinimg').src=staticContentBase +'/images/nav_signin.png';

	return false;
}

// AJAX call to generate a new password from the signin overlay
function generateNewPassword(div, ext) {
	undoConfirmGenerateNewPassword(ext);

	// undo error treatment
	$('errorLbl' + ext).style.display= 'none';
	$(div).style.backgroundColor = '#FFFFFF';
	// TODO: change close button and 'Back to sign in' back to green

	$('errordiv' + ext).innerHTML = "";
	var email = trim($F('emailForgot' + ext));
	if (doForgotPasswordErrors(div, ext) == false) {
		var url = contextRoot + '/emailPassword.do';
		var pars = {
				email: email
			};
		doJsonAjaxRequest(url, pars,
				function() {
					confirmGenerateNewPassword(div, email, ext); //winsignin.hide();
		    	},
		    	function() {
		    		$('errordiv' + ext).innerHTML='no user with that email address exists';
					doForgotPasswordErrors(div, ext)
		    	}
		);
	}
	return false;
}

function confirmGenerateNewPassword(div, email, ext)
{
	$('ForgotPasswordHeader' + ext).innerHTML = 'WE KNOW YOU!';
	$('ForgotPasswordEmail' + ext).style.display = 'none';
	$('emailLblForgot' + ext).style.display = 'none';
	$('ForgotPasswordText' + ext).innerHTML = 'We\'re sending you a temporary password to: ' + email;
	$('forgotPassword_submitbtn' + ext).style.display = 'none';
}

function undoConfirmGenerateNewPassword(ext)
{
	$('ForgotPasswordHeader' + ext).innerHTML = 'I Forgot My Password!';
	$('ForgotPasswordEmail' + ext).style.display = 'block';
	$('emailLblForgot' + ext).style.display = 'block';
	$('ForgotPasswordText' + ext).innerHTML = 'Please enter the email address that you registered with and we will send you a temporary password.';
	$('forgotPassword_submitbtn' + ext).style.display = 'block';
}

// Update page when successful join
function joinSuccess() {

//COREMETRICS START
    var country = getCountry();
    var timezone = getTimezone();
    var height = 0;
    var weight = $F('join_weight');
    if(country == "UNITED STATES"){
        var feet = $F('joinHeightFt');
        var inches = $F('joinHeightIn');
        height = parseInt(feet) * 12 + parseInt(inches);
    }else{
        var meters = $F('joinHeightMetVal');
        height = Math.round(parseFloat(meters.replace(',','.')) * 39.37007874);
        if(country == "UNITED KINGDOM"){
            weight = parseFloat(weight.replace(',','.')) * 14;
        }else{
            weight = parseFloat(weight.replace(',','.')) * 2.204622622;
        }
    }

    cmCreateConversionEventTag("Registration", 2, null, null);

    var email = trim($F('join_email'));
    var zip = trim($F('joinZipcode'));
    var gender = RF("joinForm",'gender');
	var cmBirthYear = $F('join_year');
	var cmRegistrationDateTime = new Date();
	cmRegistrationDateTime = cmRegistrationDateTime.toGMTString();

    cmCreateRegistrationTag(email, email, null, null, zip, null, gender,
        weight, height, null, null, $('join_selfOffers').checked, 'DTV Alerts', $('join_dtvAlerts').checked,
		country, timezone, cmBirthYear, cmRegistrationDateTime);

    //    doJsonAjaxRequest("/GetUserInfo.do", null, function(json){
    //        cmCreateRegistrationTag(json.email, json.email, json.city, json.state, json.zip, json.age, json.gender,
    //		    json.currentWeight, json.height, null, null, json.wantsSelfOffers, json.wantsDietTvAlerts,
    //				json.wantsDietTvAlerts)
    //    });

//COREMETRICS END

    var screenName = trim($F('join_screenName'));
    if(popunderInter3Window != null){
        popunderInter3Window.close();
    }
    strSignIn = screenName;
    thisMovie("brandingBar_08").fnGetInitVariables(intNavGroup,strSignIn);
  	if (onJoinSuccess) {

   		hideJoin();

   		eval(onJoinSuccess); // set by showJoin()

  	} else {

   		AjaxReplacePage('JoinOverlay', 'joinCongrats.jsp', '');

		$('JoinOverlay').style.backgroundColor='#dfdfdf';

		$('JoinOverlay').style.height="auto";

	}
//        if (typeof(ROIID) + '' != 'undefined') {
//            var trackFunc = 'TrackEvent(\'Registration\', 1, \'' + screenName + '\')';
//            setTimeout(trackFunc, 100);
//        }
}


// triggered e.g. when user entered invalid email address and email could not be sent
function joinError(json)
{
	if (json.error == 'invalid email address') // see EmailRegistrationAction
	{
		$('divFirstName').style.display = "none";
		$('divLastName').style.display = "none";
		$('divPassword').style.display = "none";
		$('divHeight').style.display = "none";
		$('divGender').style.display = "none";
		$('divBirthday').style.display = "none";
		$('divScreenName').style.display = "none";
		$('divWeight').style.display = "none";

		$('lblEmail').innerHTML = "Please enter a valid Email Address";
		$('divEmail').style.display = "block";

	}
	else if (json.error == 'Email Address is already in use') // see UserDAOImpl.joinuser()
	{
		$('divFirstName').style.display = "none";
		$('divLastName').style.display = "none";
		$('divPassword').style.display = "none";
		$('divHeight').style.display = "none";
		$('divGender').style.display = "none";
		$('divBirthday').style.display = "none";
		$('divScreenName').style.display = "none";
		$('divWeight').style.display = "none";

		$('lblEmail').innerHTML = "Email Address is already in use";
		$('divEmail').style.display = "block";
	}
	else if (json.error == 'Screen Name is already in use') // see UserDAOImpl.joinuser()
	{
		// NOTE that Safari on Mac doesn't always update the 'unavailable...' text correctly,
		// so we have to do an extra server side check
		$('divFirstName').style.display = "none";
		$('divLastName').style.display = "none";
		$('divEmail').style.display = "none";
		$('divPassword').style.display = "none";
		$('divHeight').style.display = "none";
		$('divGender').style.display = "none";
		$('divBirthday').style.display = "none";
		$('divWeight').style.display = "none";

		$('lblJoinUseNameB').innerHTML = "Screen Name is not available";
		$('divScreenName').style.display = "block";

		$('ScreenNameAvailableBB').innerHTML = '... unavailable';
		$('ScreenNameAvailableBB').className = 'notavailable';
	}
	else
	{
		doJsonError(json);
		return; // shouldn't get here
	}

	joinErrorsCommon();
}

// Initialize the Join form to it's default (non-error) state
function initJoin() {
    if ($('joinMainDivB').style.display != "none") {
		$('divFirstName').style.display = "block";
		$('divLastName').style.display = "block";
		$('lblEmail').innerHTML = "Please enter a valid email address";
		$('divEmail').style.display = "block";
		$('lblPasswd').innerHTML = "Please enter password";
		$('divPassword').style.display = "block";
		$('lblConfirm').innerHTML = "Please confirm password";
		$('divHeight').style.display = "block";
		$('divBirthday').style.display = "block";
		$('lblJoinUseNameB').innerHTML = "Please enter a screen name";
		$('divScreenName').style.display = "block";
		$('divWeight').style.display = "block";
		$('join_readTerms').checked = false;
        $('join_readTermsB').checked = false;
	    $('join_firstName').value = "";
        $('join_firstNameB').value = "";
		$('join_lastName').value = "";
        $('join_lastNameB').value = "";
		$('join_weight').value = "";
        $('join_weightB').value = "";
		$('join_email').value = "";
        $('join_emailB').value = "";
		$('joinZipcode').value = "";
		$('join_password').value = "";
        $('join_passwordB').value = "";
		$('join_confirmPassword').value = "";
        $('join_confirmPasswordB').value = "";
		$('join_screenName').value = "";
        $('join_screenNameB').value = "";
		$('ScreenNameAvailable').innerHTML = '';
		$('ScreenNameAvailable').className = 'available';

        $('join_month').options[0].selected = true;
        $('join_month1').options[0].selected = true;
        $('join_monthB').options[0].selected = true;
        $('join_month1B').options[0].selected = true;
        $('join_day').options[0].selected = true;
        $('join_dayB').options[0].selected = true;
        $('join_year').options[0].selected = true;
        $('join_yearB').options[0].selected = true;

        $('joinHeightFt').options[0].selected = true;
        $('joinHeightFtB').options[0].selected = true;
        $('joinHeightIn').options[0].selected = true;
        $('joinHeightInB').options[0].selected = true;

        undoJoinErrorsCommon();
        changeCountry();
    }
}

function joinErrorsCommon()
{
	// Hide alerts and reg.benefits
	$('joinMainDiv').style.display = 'none';
	$('joinMainDivB').style.display = 'block';

}

// the opposite of joinErrorsCommon()
function undoJoinErrorsCommon()
{
    $('joinMainDiv').style.display = 'block';
    $('joinMainDivB').style.display = 'none';
}

// Perform the sign in submit
function doSignIn(window, div)
{
	$('errordiv').innerHTML='';

	if (doSigninErrors(div, '') == false) {
		// Submit the form
		var url = contextRoot + '/Login.do';
		//var email = $('email').value;
		//var password = $('password').value;
		//var remember = $('remember').checked;
		var pars = {
			  	email: trim($F('email')),
			  	password: trim($F('password')),
			  	remember: $('remember').checked
			};
		doJsonAjaxRequest(url, pars, function() {
            if(popunderInter3Window != null){
                popunderInter3Window.close();
            }
                if($('foofCreateName') == null){
                document.location = contextRoot + '/succeed.html';
                }else{
                    document.location = contextRoot + '/games.html';
                }
                startTicker();
		     	},
		     	function() {
		    		$('errordiv').innerHTML='Invalid email address/password. Please make sure you have entered both correctly.';
					doSigninErrors(div, '');
		      	}
		   	);
	}
	return false;
}
// Perform the sign in submit
function doSignInInline(window, div, onSuccess, ext)
{
	$('errordiv' + ext).innerHTML='';

	if (doSigninErrors(div, ext) == false) {
		// Submit the form
		var url = contextRoot + '/Login.do';
		var pars = {
			  	email: trim($F('email' + ext)),
			  	password: trim($F('password' + ext)),
			  	remember: $('remember' + ext).checked
			};
		doJsonAjaxRequest(url, pars, function(json) {
                if (onSuccess) {
					//toggleSigninDiv(json.screenName);
					eval(onSuccess);
					showCongrats();
		     	} else {
		    		document.location = contextRoot + '/succeed.html';
		    	}
		     },
		     function() {
		     	$('errordiv' + ext).innerHTML='Invalid email address/password. Please make sure you have entered both correctly.';
				doSigninErrors(div, ext)
		      }
		   	);
	}
	return false;
}

function showCongrats()
{
	$('SelectDietOverlay').style.display="none";
	$('CongratsOverlay').style.display = "block";
}

// Perform the sign out submit
function doSignOut() {
	var url = contextRoot + '/Logoff.do';
	var options = {
		onSuccess: function(transport) {
		    document.location = contextRoot + '/index.html';
	}};
    new Ajax.Request(url, options);
}

// Called when user types in FirstName/LastName fields
// in Join/Register overlay.
// If 'Use Name' is checked, it glues first and last name together
// and sticks them in the screenName field.
// Also, calls checkScreenName() to check if screenName is available.
function firstLastNamePressed()
{
	var useName = $('join_useName').checked;
	if (!useName) { return false; }

	var firstName = trim($F('join_firstName'));
	var lastName = trim($F('join_lastName'));
	var screenName = firstName + ' ' + lastName;

	$('join_screenName').value = screenName;
	return checkScreenName();
}

// Ask server if screenName is available
// and update 'available...' text accordingly.
function checkScreenName(nameField, availableField)
{
	if (nameField == null) {
		nameField = 'join_screenName';
	}
	if (availableField == null) {
		availableField = 'ScreenNameAvailable';
	}

	//var screenName = $F('join_screenName');
	var screenName = trim($F(nameField));
	if (screenName.length == 0)
	{
		return false;
	}

	if (isObscene(screenName))
	{
		$(availableField).innerHTML = '...unavailable';
        $(availableField).style.color = '#ff3300';
		return false;
	}

	var url = contextRoot + "/CheckScreenName.do";
	var pars = {
			screenName: screenName
		};

   	doJsonAjaxRequest(url, pars, function () {
    		$(availableField).innerHTML = '...available';
			$(availableField).style.color = '#7ea831';
		},
		function() {
			$(availableField).innerHTML = '...unavailable';
			$(availableField).style.color = '#ff3300';
		}
	);
    return false;
}
var leetChar = {
	'@': 'a',
	'$': 's',
	'|': 'l',
	'5': 's',
	'1': 'i',
	'3': 'e',
	'0': 'o',
	'7': 't',
	'4': 'a'
};

function isObscene(screenName)
{
	screenName = screenName.replace(/\s+/g, ''); // remove spaces
	screenName = screenName.replace(/([\@\$\|513074])/g,
		function(s) { return leetChar[s]; });
	screenName = screenName.toLowerCase();

	return screenName.search(/(asshole|bitch|blowjob|chink|clit|cock|crap|cunt|dildo|faggot|fuck|goddamn|gook|homo|nigger|nigga|pussy|queer|shit|slut|twat)/) != -1;
}

// Called when user (un)checks 'useName' checkbox in Join/Register overlay.
// If checkbox becomes checked, it should take the current
// first and last name and construct the screenName and
// check if the the result is available.
function useNameChanged()
{
	firstLastNamePressed();
}


// Utility function to set the correct number of days
// in a given month/year
function setCorrectDays() {
	var d = new Date($F('join_year'), $F('join_month')-1, 1);
 	var day = $('join_day');
 	var cDays = $('join_day').options.length;
 	var opts = $('join_day').options;
 	var nDays = 1;
 	do {
 	  	nDays = nDays + 1;
   		d.setDate(d.getDate() + 1);
  	} while (d.getDate() > 1)
    if(nDays < 28) nDays = 32;
  	if (cDays > nDays) {
  		$('join_day').options.length = nDays;
        $('join_dayB').options.length = nDays;
    }
    for (var i = cDays; i < nDays; i++) {
        $('join_day').options[$('join_day').options.length] = new Option(i, i);
    }
    for (var i = cDays; i < nDays; i++) {
        $('join_dayB').options[$('join_dayB').options.length] = new Option(i, i);
    }

}

// Shows the suggestion overlay
function showSuggest() {
	pauseTicker();
	showFormsuggest(contextRoot+'/suggestions.jsp');
	/* Begin Coremetrics code */
	cmCreateConversionEventTag("Make A Suggestion", "1", "Make A Suggestion");
	/* End Coremetrics code */
	return false;
}

// Hides the suggestion overlay
function hideSuggest() {
	winsuggest.hide();
	startTicker();
	return false;
}
// Function display the message in the email div
function displaySuggestEmailMsg(msg) {
	$('emailSuggestContainer').style.display = 'none';
	$('emailThanksContainer').style.display = 'block';
	$('emailThanksContainer').innerHTML= msg;
}
// suggestSuccess
function suggestSuccess() {
	var s = "Thank you for thinking of us. We love getting suggestions from our members because it helps us do a better job of thinking of you.";
	displaySuggestEmailMsg(s);
	/* Begin Coremetrics code */
	cmCreateConversionEventTag("Make A Suggestion", "2", "Make A Suggestion");
	/* End Coremetrics code */
}
// emailFailure
function suggestFailure() {
	displaySuggestEmailMsg('Sorry, there were errors attempting to send your email to Diet Television<br/>');
	/* Begin Coremetrics code */
	cmCreatePageElementTag("Make A Suggestion Server Error", "Error", "Error");
	/* End Coremetrics code */
}
// Send Suggest Email
function sendSuggestEmail() {

	if (validateSuggestEmail()) {
		var fromEmail = trim($F('yourEmailTxt'));
		var fromName = $F('yourNameTxt');
		var url = contextRoot + '/emailContact.do';
		var pars = {
				from: fromEmail,
				fromName: fromName,
				message: $F('contactMsg')
			};

    	doJsonAjaxRequest(url, pars, suggestSuccess, suggestFailure);
	}
	return false;
}
function validateSuggestEmail() {
	var fromEmail = trim($F('yourEmailTxt'));
	var fromName = $F('yourNameTxt');
	var msg = $F('contactMsg');

    var errors = false;
    var s = "";
	if (!validEmail(fromEmail)) {
		s = s +  'Please enter a valid email Address.<br />';
			errors = true;
	}
	if (fromName == "") {
		s = s + 'Please enter your name.<br />';
		errors = true;
	}
	if (msg == "") {
		s = s + 'Please enter a message.<br />';
		errors = true;
	}

	if (errors == true) {
		$('suggestErrors').innerHTML = s;
		$('suggestErrors').style.display="block";
	} else {
		$('suggestErrors').innerHTML ='';
		$('suggestErrors').style.display="none";
	}
	return !errors;
}

// Sign up for an email submit function
function signupEmail(se) {
	if (validEmail(se))
	{   var url = contextRoot + '/emailSignup.do';
		var page= contextRoot + "/signupThanks.jsp?email=" + se;
		var pars = {
				email: se
			};
		doJsonAjaxRequest(url, pars, function() {
		    	showFormsignup(page);
		    });
		/* Begin Coremetrics code */
		cmCreateConversionEventTag("Email Signup","2","Email Signup");
		cmCreateRegistrationTag(se,se);
		/* End Coremetrics code */
	}
	return false;
}
function pauseTicker() {
	copyspeed=pausespeed;
}
function startTicker() {
	copyspeed=ticker_speed;
}

function openRevenuePopup(revenueId)
{
	var theUrl = contextRoot + '/revenuePopup.jsp?revenueId=' + revenueId;
	showFormRevenuePopup(theUrl, '', '');
}

function closeRevenuePopup()
{
	winRevenuePopup.hide();
}


function getXmlHttp(){
    var xmlHttp = null;
    try{
        // Firefox, Opera 8.0+, Safari
        xmlHttp=new XMLHttpRequest();
    }catch (e){
        // Internet Explorer
        try{
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
        }catch (e){
            try{
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }catch (e){}
        }
    }
    return xmlHttp;
}

function getCountry(){
    for(i=0;i<$('joinCountry').options.length;i+=1){
        if($('joinCountry').options[i].selected){
            return $('joinCountry').options[i].value;
        }
    }
    return "UNITED STATES";
}

function getTimezone(){
    for(i=0;i<$('joinTimezone').options.length;i+=1){
        if($('joinTimezone').options[i].selected){
            return $('joinTimezone').options[i].value;
        }
    }
    return null;
}

function createDummy(){
    var xmlHttp = getXmlHttp();
    var url = contextRoot + "/dummyUser.do";
    url=url + "?dummy=" + new Date().getTime();
    xmlHttp.onreadystatechange=function(){
        if (xmlHttp.readyState==4){
            winInterstitial1.hide();
            window.location.reload();
        }
    };
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}

function createDummy2(){
    var xmlHttp = getXmlHttp();
    var url = contextRoot + "/dummyUser.do";
    url=url + "?dummy=" + new Date().getTime();
    xmlHttp.onreadystatechange=function(){
        if (xmlHttp.readyState==4){
            winInterstitial2.hide();
        }
    };
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}

var timeZoneSwitch = true;

function changeCountry(){
    var country = getCountry();
    var xmlHttp = getXmlHttp();
    var url = contextRoot + "/Location.do";
    url=url+"?operation=GET_TIMEZONES";
    url=url+"&country="+ country;
    url=url + "&dummy=" + new Date().getTime();
    if(country == "UNITED STATES"){
        $('joinZipcodeLabel').innerHTML = "Zipcode";
        $('joinWeightUnits').innerHTML = "lbs.";
        $('joinHeightImp').style.display = "block";
        $('joinHeightMet').style.display = "none";

        $('joinMonthSpan1').style.display = "block";
        $('joinMonthSpan2').style.display = "none";
        $('joinMonthSpan1B').style.display = "block";
        $('joinMonthSpan2B').style.display = "none";
        $('spanWeightError').innerHTML = "(>= 80 lbs)";

    }else{
        $('joinMonthSpan1').style.display = "none";
        $('joinMonthSpan2').style.display = "block";
        $('joinMonthSpan1B').style.display = "none";
        $('joinMonthSpan2B').style.display = "block";

        if(country == "UNITED KINGDOM"){
            $('joinWeightUnits').innerHTML = "sts.";
            $('spanWeightError').innerHTML = "(>= 5.72 sts)";
        }else{
            $('joinWeightUnits').innerHTML = "kgs.";
            $('spanWeightError').innerHTML = "(>= 36.29 kgs)";
        }
        $('joinZipcodeLabel').innerHTML = "Postal Code";
        $('joinHeightImp').style.display = "none";
        $('joinHeightMet').style.display = "block";
    }
    $('joinZipcode').value = "";

    //for error start
    $('joinWeightUnitsB').innerHTML =  $('joinWeightUnits').innerHTML;
    $('joinHeightMetB').style.display = $('joinHeightMet').style.display;
    $('joinHeightImpB').style.display = $('joinHeightImp').style.display;
    //for error end

    xmlHttp.onreadystatechange=function(){
        if (xmlHttp.readyState==4){
            var json = eval(xmlHttp.responseText);
            timeZoneSwitch = false;
            if(json.length > 0){
                $('joinTimezone').options.length = 0;
                $('joinTimezoneB').options.length = 0;
                if(json.length > 1){
                    $('joinTimezone').options[0] = new Option("Select One", "");
                    $('joinTimezoneB').options[0] = new Option("Select One", "");
                }
                for(i=0;i<json.length;i+=1){
                    var tvalue = parseInt(json[i]);
                    var tdesc = 'GMT';
                    if(tvalue < 0) tdesc = tdesc + " " + tvalue;
                    if(tvalue > 0) tdesc = tdesc + " +" + tvalue;
                    if(country == "UNITED STATES"){
                        if(tvalue == -10) tdesc = "HST (" + tdesc + ")";
                        if(tvalue == -9) tdesc = "AKST (" + tdesc + ")";
                        if(tvalue == -8) tdesc = "PST (" + tdesc + ")";
                        if(tvalue == -7) tdesc = "MST (" + tdesc + ")";
                        if(tvalue == -6) tdesc = "CST (" + tdesc + ")";
                        if(tvalue == -5) tdesc = "EST (" + tdesc + ")";
                        if(tvalue == -4) tdesc = "AST (" + tdesc + ")";
                    }
                    if(json.length > 1){
                        $('joinTimezone').options[i + 1] = new Option(tdesc, tvalue);
                        $('joinTimezoneB').options[i + 1] = new Option(tdesc, tvalue);
                    }else{
                        $('joinTimezone').options[i] = new Option(tdesc, tvalue);
                        $('joinTimezoneB').options[i] = new Option(tdesc, tvalue);
                    }
                }
            }
            timeZoneSwitch = true;
            if(json.length < 2){
                $('joinMainDiv').className = "RegistrationOverlayWrapper";
                new Effect.Fade('joinTimezoneDiv');
            }else{
                $('joinMainDiv').className = "RegistrationOverlayWrapper TimeZone";
                new Effect.Appear('joinTimezoneDiv');
            }
        }
    };
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}
function changeZipcode(){
    var country = getCountry();
    var xmlHttp = getXmlHttp();
    var url = contextRoot + "/Location.do";
    url=url+"?operation=GET_TIMEZONES";
    url=url+"&country="+ country;
    url=url+"&zipCode="+ $('joinZipcode').value;
    url=url + "&dummy=" + new Date().getTime();
    xmlHttp.onreadystatechange=function(){
        if (xmlHttp.readyState==4){
            var json = eval(xmlHttp.responseText);
            timeZoneSwitch = false;
            if(json.length > 0){
                $('joinTimezone').options.length = 0;
                $('joinTimezoneB').options.length = 0;
                if(json.length > 1){
                    $('joinTimezone').options[0] = new Option("Select One", "");
                    $('joinTimezoneB').options[0] = new Option("Select One", "");
                }
                for(i=0;i<json.length;i+=1){
                    var tvalue = parseInt(json[i]);
                    var tdesc = 'GMT';
                    if(tvalue < 0) tdesc = tdesc + " " + tvalue;
                    if(tvalue > 0) tdesc = tdesc + " +" + tvalue;
                    if(country == "UNITED STATES"){
                        if(tvalue == -10) tdesc = "HST (" + tdesc + ")";
                        if(tvalue == -9) tdesc = "AKST (" + tdesc + ")";
                        if(tvalue == -8) tdesc = "PST (" + tdesc + ")";
                        if(tvalue == -7) tdesc = "MST (" + tdesc + ")";
                        if(tvalue == -6) tdesc = "CST (" + tdesc + ")";
                        if(tvalue == -5) tdesc = "EST (" + tdesc + ")";
                        if(tvalue == -4) tdesc = "AST (" + tdesc + ")";
                    }
                    if(json.length > 1){
                        $('joinTimezone').options[i + 1] = new Option(tdesc, tvalue);
                        $('joinTimezoneB').options[i + 1] = new Option(tdesc, tvalue);
                    }else{
                        $('joinTimezone').options[i] = new Option(tdesc, tvalue);
                        $('joinTimezoneB').options[i] = new Option(tdesc, tvalue);
                    }
                }
            }
            timeZoneSwitch = true;
            if(json.length < 2){
                $('joinMainDiv').className = "RegistrationOverlayWrapper";
                new Effect.Fade('joinTimezoneDiv');
            }else{
                $('joinMainDiv').className = "RegistrationOverlayWrapper TimeZone";
                new Effect.Appear('joinTimezoneDiv');
            }
        }
    };
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
}
function changeJoinHeightFt(){

}
function changeJoinHeightIn(){

}
function changeJoinBDayMonth(monthSelect){
    var index = monthSelect.selectedIndex;
    $('join_month').options[index].selected = true;
    $('join_month1').options[index].selected = true;
    $('join_monthB').options[index].selected = true;
    $('join_month1B').options[index].selected = true;
}
function changeJoinBDayDay(){

}
function changeJoinBDayYear(){

}
function checkNameChange(){
    if($('join_useName').checked){
        $('join_screenName').value = trim($F('join_firstName')) + ' ' + trim($F('join_lastName'));
        $('join_screenNameB').value = trim($F('join_firstName')) + ' ' + trim($F('join_lastName'));
        checkScreenName();
    }else{
        $('join_screenName').value = '';
        $('join_screenNameB').value = '';
    }
}

function checkNameChangeB(){
    $('join_firstName').value = $('join_firstNameB').value;
    $('join_lastName').value = $('join_lastNameB').value;
    $('join_useName').checked = false;
}

function checkScreenNameB(){
    $('join_screenName').value = $('join_screenNameB').value;
    $('join_useName').checked = false;
    checkScreenName('join_screenNameB', 'ScreenNameAvailableBB');
}

function checkZipcode(){
    $('joinZipcode').value = $('joinZipcodeB').value;
}

function changeJoinHeightFtB(){
    for(i=0;i<$('joinHeightFtB').options.length;i+=1){
        $('joinHeightFt').options[i].selected = $('joinHeightFtB').options[i].selected;
    }
}
function changeJoinHeightInB(){
    for(i=0;i<$('joinHeightInB').options.length;i+=1){
        $('joinHeightIn').options[i].selected = $('joinHeightInB').options[i].selected;
    }
}

function changeJoinBDayDayB(){
    for(i=0;i<$('join_dayB').options.length;i+=1){
        $('join_day').options[i].selected = $('join_dayB').options[i].selected;
    }
}
function changeJoinBDayYearB(){
    for(i=0;i<$('join_yearB').options.length;i+=1){
        $('join_year').options[i].selected = $('join_yearB').options[i].selected;
    }
}

function changeTimezone(){
    if(timeZoneSwitch){
        for(i=0;i<$('joinTimezoneB').options.length;i+=1){
            $('joinTimezone').options[i].selected = $('joinTimezoneB').options[i].selected;
        }
    }
}

function getCountry(){
    for(i=0;i<$('joinCountry').options.length;i+=1){
        if($('joinCountry').options[i].selected){
            return $('joinCountry').options[i].value;
        }
    }
    return "UNITED STATES";
}

// Perform the Join Submit
function doJoin(){
	if (doJoinErrors() == false) {
        var country = getCountry();
        var timezone = getTimezone();
        var height = 0;
        var weight = $F('join_weight');
        if(country == "UNITED STATES"){
            var feet = $F('joinHeightFt');
            var inches = $F('joinHeightIn');
            height = parseInt(feet) * 12 + parseInt(inches);
        }else{
            var meters = $F('joinHeightMetVal');
            height = Math.round(parseFloat(meters.replace(',','.')) * 39.37007874);
            if(country == "UNITED KINGDOM"){
                weight = parseFloat(weight.replace(',','.')) * 14;
            }else{
                weight = parseFloat(weight.replace(',','.')) * 2.204622622;
            }
        }

		var mon = $F('join_month');
		var day = $F('join_day');
		var year = $F('join_year');

		//Johnny Angel 08/27/2007 Added Rounding for decimal values.
		//var roundedWeight = Math.round($F('join_weight'));

		var birthday = mon + '/' + day + '/' + year;
		var url = contextRoot + "/Join.do";

		var pars =  {
				firstName: trim($F('join_firstName')),
				lastName: trim($F('join_lastName')),
                country: country,
                timezone: timezone,
				height: height,
				weight: weight,
				email: trim($F('join_email')),
				zip: trim($F('joinZipcode')),
				password: trim($F('join_password')),
				birthday: birthday,
				screenName: trim($F('join_screenName')),
				gender: RF("joinForm",'gender'),
				dtvAlerts: $('join_dtvAlerts').checked,
				selfOffers: $('join_selfOffers').checked
			};
		doJsonAjaxRequest(url, pars, joinSuccess, joinError);
	}
	return false;
}

// Peform the Join Form error checks
function doJoinErrors() {
	var okFields = new Array();
    var terms = $('join_readTerms').checked;
	var firstName = trim($F('join_firstName'));
	var lastName = trim($F('join_lastName'));
	var feet = $F('joinHeightFt');
	var inches = $F('joinHeightIn');
    var meters = $F('joinHeightMetVal');
	var weight = $F('join_weight');
	var email = trim($F('join_email'));
	var zip = trim($F('joinZipcode'));
	var password = trim($F('join_password'));
	var password2 = trim($F('join_confirmPassword'));
	var mon = $F('join_month');
	var day = $F('join_day');
	var year = $F('join_year');
	var screenName = trim($F('join_screenName'));
	var gender = RF("joinForm",'gender');
    var country = getCountry();
    var timezone = getTimezone();

	var errors = false;

	if (!terms) {
		errors = true;
	}

    if (timezone == "") {
		$('divTimeZone').style.display = "block";
		errors = true;
	} else {
		okFields[okFields.length] = $('divTimeZone');
	}

    if (zip == "" && country == "UNITED STATES") {
		$('divZipcode').style.display = "block";
		errors = true;
	} else {
		okFields[okFields.length] = $('divZipcode');
	}

    if (firstName == "") {
		$('divFirstName').style.display = "block";
		errors = true;
	} else {
		okFields[okFields.length] = $('divFirstName');
	}

	if (lastName == "") {
		$('divLastName').style.display = "block";
		errors = true;
	} else {
		okFields[okFields.length] = $('divLastName');
	}
	if (!validEmail(email)) {
		$('divEmail').style.display = "block";
		errors = true;
	} else {
		okFields[okFields.length] = $('divEmail');
	}
	if (password == "" || (password != "" && password.length < 6)) {
		//$('lblPasswd').innerHTML = "Please enter a Password [6-10 characters]";
		$('divPassword').style.display = "block";
		$('join_password').value = "";
		$('join_confirmPassword').value = "";
		errors = true;
	} else {
		if (password != password2) {
			//$('lblPasswd').innerHTML = "Password [6-10 characters]";
			//$('lblConfirm').innerHTML = "Confirm Password must match password";
			$('divPassword').style.display = "block";
			$('join_password').value = "";
			$('join_confirmPassword').value = "";
			errors = true;
		} else {
			okFields[okFields.length] = $('divPassword');
		}
	}

    if(country == "UNITED STATES"){
        if((feet == "" || inches == "")){
            $('divHeight').style.display = "block";
		    errors = true;
	    } else {
		    okFields[okFields.length] = $('divHeight');
        }
    }else{
        if(!IsNumeric(meters.replace(',','.'))){
            $('divHeight').style.display = "block";
		    errors = true;
	    } else {
            var tempHeight  = Math.round(parseFloat(meters.replace(',','.')) * 39.37007874);
            if(tempHeight < 48 || tempHeight > 83){
                $('divHeight').style.display = "block";
                errors = true;
            }else{
                okFields[okFields.length] = $('divHeight');
            }
        }
    }

	if (gender == "") {
		$('divGender').style.display = "block";
		errors = true;
	} else {
		okFields[okFields.length] = $('divGender');
	}

	if (mon == "" || day == "" || year == "") {
		$('divBirthday').style.display = "block";
		errors = true;
	} else {
		okFields[okFields.length] = $('divBirthday');
	}

	if (screenName == "") {
		$('divScreenName').style.display = "block";
		errors = true;
	} else {
		if (isObscene(screenName))
		{
			$('ScreenNameAvailableBB').innerHTML = '...unavailable';
			$('ScreenNameAvailableBB').className = 'notavailable';
		}

		if ($('ScreenNameAvailableBB').innerHTML != "...available" && $('ScreenNameAvailable').innerHTML != "...available") {
			$('lblJoinUseNameB').innerHTML = "Screen Name is not available";
			$('divScreenName').style.display = "block";
			errors = true;
		} else {
			okFields[okFields.length] = $('divScreenName');
		}
	}

    if (weight == "" || !IsNumeric(weight.replace(',','.'))) {
        $('divWeight').style.display="block";
        errors = true;
    } else {
        if(country == "UNITED KINGDOM"){
            weight = parseFloat(weight.replace(',','.')) * 14;
        }else{
            if(country != "UNITED STATES"){
                weight = parseFloat(weight.replace(',','.')) * 2.204622622;
            }
        }
        if(weight < 80 || weight > 600){
		    $('divWeight').style.display="block";
		    errors = true;
        }else{
            okFields[okFields.length] = $('divWeight');
        }
	}
	if (errors == true) {
		var f = $A(okFields);
		f.each(function(elem) {
			elem.style.display = "none";
		});
		joinErrorsCommon();
	}

	return errors;
}
