/* LOAD */
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); }

function ms_initOverlay() {
    checkUrlForParams();
    generateCaptchaImage();
    if(ms_isLoggedIn() == true) {
        //$('cnnWelcomeLoggedIn').style.display = 'block';
        //$('cnnWelcomeLoggedOut').style.display = 'none';
    } else {
       // $('cnnWelcomeLoggedIn').style.display = 'none';
       // $('cnnWelcomeLoggedOut').style.display = 'block';
    }
}

/* FORM */

function cnn_formConnectLogin(formId) {
    var email = $(formId).email.value;
    var password = $(formId).password.value;

    // client-side validation
    var pass = true;
    var errorText = 'Registration isn\'t complete without your ';
    var validationErrors = [];
    if(validateEmail(email) == false) {
        pass = false;
        validationErrors[validationErrors.length] = 'E-mail Address';
		$(formId).email.value = 'E-mail';
		$(formId).email.className = 'cnnConnectFormbgnone cnn_connectoverlay_email cnnredtxt';
    }
    if(password == '') {
        pass = false;
        validationErrors[validationErrors.length] = 'Password';
		$(formId).password.value = 'Password';
		$(formId).password.className = 'cnnConnectFormbgnone cnn_connectoverlay_password cnnredtxt';
		$(formId).password.type = 'text';
    }
    if(pass) { 
        ms_doLogin(email, password, 'ms_uiDoLogin');
    } else {
        cnnConnectOverlayLoginValidationError('clear');
        if(validationErrors.length == 2) {
            cnnConnectOverlayLoginValidationError('add', 'Login isn\'t complete without your ' + validationErrors[0] + ' and ' + validationErrors[1] + '.');
        } else {
            cnnConnectOverlayLoginValidationError('add', 'Login isn\'t complete without your ' + validationErrors[0] + '.');
        }
        cnnConnectOverlayLoginValidationError('show');
    }
}
function ms_formRegister(formId) {
    var email = $(formId).email.value.trim();
    var password = $(formId).password.value;
    var screenname = $(formId).screenName.value.trim();
    //show the screenname with spaces removed.
    $(formId).screenName.value = screenname;

    var captcha = $(formId).captcha.value;
    var privacy = ($(formId).privacyPolicy.checked == true) ? 'domestic_version' : 'no';
    var newsletters = '';
    if($(formId).breakingNewsAlerts.checked == true && $(formId).specialOffers.checked == true) {
        newsletters = 'textbreakingnews, member_services';
    } else if($(formId).breakingNewsAlerts.checked == true) {
        newsletters = 'textbreakingnews';
    } else if($(formId).specialOffers.checked == true) {
        newsletters = 'member_services';
    }
    
    // client-side validation
    var pass = true;
    var errorText = 'Registration isn\'t complete without your ';
    var validationErrors = [];
    if(validateEmail(email) == false) {
        pass = false;
        validationErrors[validationErrors.length] = 'E-mail Address';
        cnnConnectOverlayRegisterError('email');
    }
    if(password == '') {
        pass = false;
        validationErrors[validationErrors.length] = 'Password';
        cnnConnectOverlayRegisterError('password');
    } else if (password.length < 6 || password.indexOf(' ') != -1 || password.length > 10) {
        pass = false;
        cnnConnectOverlayRegisterError('password');
        cnnConnectOverlayError('errorText', 'Password must be 6 - 10 characters and may not contain spaces');
        return;
    }
    var screenNamePattern = /^\w+$/;
    if(screenname == '') {
        pass = false;
        validationErrors[validationErrors.length] = 'Screen Name';
        cnnConnectOverlayRegisterError('screenName');
    } else if (screenname.length < 3) {
        pass = false;
        //cnnConnectOverlayRegisterError('screenName');
        cnnConnectOverlayError('errorText', 'The screen name that you entered is to short.');
		$('cnnConnectFormRegister').screenName.className = 'cnnConnectFormbgnone cnn_connectoverlay_screenname cnnredtxt';
        return;
    } else if (screenname.length > 12) {
        pass = false;
        //cnnConnectOverlayRegisterError('screenName');
        cnnConnectOverlayError('errorText', 'Your screen name must be 3-12 characters; numbers and letters only.');
        return;
    } else if (screenNamePattern.test(screenname) == false) {
        pass = false;
        //cnnConnectOverlayRegisterError('screenName');
        cnnConnectOverlayError('errorText', 'Your screen name includes invalid characters.');
        return;
    }
    if(captcha == '') {
        pass = false;
        validationErrors[validationErrors.length] = 'Captcha';
        cnnConnectOverlayRegisterError('captcha');
    }
    if(privacy == 'no') {
        pass = false;
        validationErrors[validationErrors.length] = 'Privacy Policy';
    }
    if(pass == true) {
        ms_doRegister(email, password, screenname, captcha, privacy, newsletters, 'ms_uiDoRegister');
    } else {
        switch (validationErrors.length) {
            case 1:
                errorText += validationErrors[0];
                break;
            case 2:
                errorText += validationErrors[0] + ' and ' + validationErrors[1];
                break;
            default:
                for(var i=0; i<validationErrors.length; i++) {
                    errorText += (i == (validationErrors.length -1)) ? 'and ' + validationErrors[i] + '.' : validationErrors[i] + ', ';
                }
                break;
        }
        cnnConnectOverlayError('errorText', errorText);
    }
}

function ms_formResetUserPassword(formId) {
    var email = $(formId).email.value;
    if(validateEmail(email) == false) {
        //Check and resubmit your e-mail address, it does not match our records.
        cnnConnectOverlayForgotValidationError('clear');
        cnnConnectOverlayForgotValidationError('add', 'You must enter your e-mail address in order to reset your password.');
        cnnConnectOverlayForgotValidationError('show');
    } else {
        ms_resetUserPassword(email, 'ms_uiResetUserPassword');
    }
}

function ms_formSetUserPassword(formId) {
    var email = $(formId).email.value;
    var resetCode = $(formId).resetCode.value;
    var newPassword = $(formId).newPassword.value;
    var confirmNewPassword = $(formId).confirmNewPassword.value;
    
    // client-side validation
    var pass = true;
    var errorText = 'Reset Password isn\'t complete without your ';
    var validationErrors = [];
    if(validateEmail(email) == false || email == 'Email Address') {
        pass = false;
        validationErrors[validationErrors.length] = 'e-mail address';
        cnnConnectOverlayResetError('email');
    }
    if(resetCode == '' || resetCode == 'Reset Code') {
        pass = false;
        validationErrors[validationErrors.length] = 'reset code';
        cnnConnectOverlayResetError('resetCode');
    }
    if(newPassword == '' || newPassword == 'New Password') {
        pass = false;
        validationErrors[validationErrors.length] = 'new password';
        cnnConnectOverlayResetError('newPassword');
    }
    if(confirmNewPassword == '' || confirmNewPassword == 'Confirm New Password') {
        pass = false;
        validationErrors[validationErrors.length] = 'password confirmation';
        cnnConnectOverlayResetError('confirmNewPassword');
    }
    if(pass == true) {
        ms_setUserPassword(resetCode, email, newPassword, confirmNewPassword, 'ms_uiSetUserPassword');
    } else {
        cnnConnectOverlayResetValidationError('clear');
        switch (validationErrors.length) {
            case 1:
                errorText += validationErrors[0];
                break;
            case 2:
                errorText += validationErrors[0] + ' and ' + validationErrors[1];
                break;
            default:
                for(var i=0; i<validationErrors.length; i++) {
                    errorText += (i == (validationErrors.length -1)) ? 'and ' + validationErrors[i] + '.' : validationErrors[i] + ', ';
                }
                break;
        }
        cnnConnectOverlayResetValidationError('add', errorText);
        cnnConnectOverlayResetValidationError('show');
    }
}

/* API */

function ms_doLogout() {
    CNN_killCookie('the_forum', '/', 'cnn.com');
    CNN_killCookie('authid', '/', 'cnn.com');
    CNN_killCookie('authpass', '/', 'cnn.com');
    CNN_killCookie('displayname', '/', 'cnn.com');
    CNN_killCookie('firstName', '/', 'cnn.com');
    var queueItem = new ms_QueueItem(ms_baseStandard+'logout.api', 'post');
    queueItem.addParam('callback', 'ms_uiDoLogout');
    var queueItemObj = queueItem.getQueueItem();
    msQueueManager.addRequest(queueItemObj);
	//frames['bialogin_iframe'].location.replace('http://www.disqus.com/saml/cnn/logout');
	document.location = 'http://www.disqus.com/saml/cnn/logout?target=' + encodeURIComponent(document.location);
    //window.msReload();
}

function ms_doLogin(email, password, view) {
    var queueItem = new ms_QueueItem(ms_baseStandard+'login.api', 'post');
    queueItem.addParam('email', email);
    queueItem.addParam('password', password);
    queueItem.addParam('echourl', ms_echoURL);
    queueItem.addParam('callback', view);
    var queueItemObj = queueItem.getQueueItem();
    msQueueManager.addRequest(queueItemObj);
}

function ms_doRegister(email, password, screenname, captcha, privacy, newsletters, view) {    
    var queueItem = new ms_QueueItem(ms_baseStandard+'register.api', 'post');
    queueItem.addParam('email', email);
    queueItem.addParam('password', password);
    queueItem.addParam('displayname', screenname);
    queueItem.addParam('kaptcha', captcha);
    queueItem.addParam('privacy', privacy);
    queueItem.addParam('newsletters', newsletters);
    queueItem.addParam('echourl', ms_echoURL);
    queueItem.addParam('callback', view);
    var queueItemObj = queueItem.getQueueItem();
    msQueueManager.addRequest(queueItemObj);    
}

function ms_resetUserPassword(email, view) {
    var queueItem = new ms_QueueItem(ms_baseStandard+'passwordRecovery.api', 'post');
    queueItem.addParam('action', 'sendResetPasswordCode');
    queueItem.addParam('email', email);
    queueItem.addParam('callback', view);
    var queueItemObj = queueItem.getQueueItem();
    msQueueManager.addRequest(queueItemObj);
}

function ms_setUserPassword(resetCode, email, password, confirmPassword, view) {
    var queueItem = new ms_QueueItem(ms_baseStandard+'passwordRecovery.api', 'post');
    queueItem.addParam('action', 'changePassword');
    queueItem.addParam('email', email);
    queueItem.addParam('resetCode', resetCode);
    queueItem.addParam('password', password);
    queueItem.addParam('confirmPassword', confirmPassword);
    queueItem.addParam('callback', view);
    var queueItemObj = queueItem.getQueueItem();
    msQueueManager.addRequest(queueItemObj);
}

function ms_sendConfirmEmailAgain(email, view) {
    var queueItem = new ms_QueueItem(ms_baseStandard+'emailConfirm.api', 'post');
    queueItem.addParam('action', 'resendEmailConfirmation');
    queueItem.addParam('email', email);
    queueItem.addParam('callback', view);
    var queueItemObj = queueItem.getQueueItem();
    msQueueManager.addRequest(queueItemObj);
}

/* RESPONSE */

function ms_uiDoLogout(jsonResponse) {
    msQueueManager.requestReceived(); // lets iJax know it can process the next request
    var error = (typeof jsonResponse.errors == 'undefined') ? false : true;
    if(error == false) {
        // update ui for successful
        window.msReload();
    } else {
        // update ui for errors
        window.msReload();
    }
}


function ms_uiDoLogin(jsonResponse) {
    msQueueManager.requestReceived(); // lets iJax know it can process the next request
    var error = (typeof jsonResponse.errors == 'undefined') ? false : true;
    if(error == false) {
		createLoginIframe();
        $('cnnConnectOverlayBox').style.display = 'none';
        window.msReloadCheck();
    } else {
        // update ui for errors
        cnnConnectOverlayLoginValidationError('clear');
        cnnConnectOverlayLoginValidationError('add', 'Check and resubmit your e-mail address or password. Something does not match our records.');
        cnnConnectOverlayLoginValidationError('show');
    }
}

function ms_uiDoRegister(jsonResponse) {
    msQueueManager.requestReceived(); // lets iJax know it can process the next request
    var error = (typeof jsonResponse.errors == 'undefined') ? false : true;
    if(error == false) {
        // update ui for successful
        $('cnnConnectOverlayBox').style.display = 'none';
        showOverlayMessage(0);
    } else {
        cnnConnectOverlayError('clearErrorText');
        for(var i=0; i<jsonResponse.errors.length; i++) {
            switch (jsonResponse.errors[i]) {
                case 'email address not available':
                    cnnConnectOverlayRegisterError('email');
                    cnnConnectOverlayError('addErrorText', 'That e-mail address is already taken.<br/>');
                    break;
                case 'missing email address':
                    cnnConnectOverlayRegisterError('email');
                    cnnConnectOverlayError('addErrorText', 'You forgot to enter your e-mail address.<br/>');
                    break;
                case 'bad email address':
                    cnnConnectOverlayRegisterError('email');
                    cnnConnectOverlayError('addErrorText', 'You entered an invalid e-mail address.<br/>');
                    break;
                case 'missing password':
                    cnnConnectOverlayRegisterError('password');
                    cnnConnectOverlayError('addErrorText', 'You forgot to enter your password.<br/>');
                    break;
                case 'bad password':
                    cnnConnectOverlayRegisterError('password');
                    cnnConnectOverlayError('addErrorText', 'You entered an incorrect password.<br/>');
                    break;
                case 'missing screen name':
                    cnnConnectOverlayRegisterError('screenName');
                    cnnConnectOverlayError('addErrorText', 'You forgot to enter your screen name.<br/>');
                    break;
                case 'screen name not available':
                   // cnnConnectOverlayRegisterError('screenName');
                    //cnnConnectOverlayError('addErrorText', 'That screen name is already taken. Please choose another.<br/>');
					jQuery("input#screenName_bia").val('Screen name is already taken.');
                    break;
                case 'missing captcha':
                    cnnConnectOverlayRegisterError('captcha');
                    cnnConnectOverlayError('addErrorText', 'You forgot to type in the captcha image in the grey box.<br/>');
                    break;
                case 'bad captcha':
                    cnnConnectOverlayRegisterError('captcha');
                    cnnConnectOverlayError('addErrorText', 'You entered the captcha image in the grey box incorrectly.<br/>');
                    break;
                case 'missing privacy policy':
                    cnnConnectOverlayError('addErrorText', 'You must agree to the privacy policy.<br/>');
                    break;
                default:
                    break;
            }
        }
        cnnConnectOverlayError('showErrorText');
    }
}

function ms_uiResetUserPassword(jsonResponse) {
    msQueueManager.requestReceived(); // lets iJax know it can process the next request
    var forgotFormId = 'cnnConnectFormForgot';
    var resetFormId = 'cnnConnectFormReset';
    var error = (typeof jsonResponse.errors == 'undefined') ? false : true;
    var html = '';
    if(error == false) {
        // update ui for successful
        cnnConnectOverlayUpdate('forgot2reset');
    } else {
        cnnConnectOverlayForgotValidationError('clear');
        cnnConnectOverlayForgotValidationError('add', 'Check and resubmit your e-mail address. It does not match our records.');
        cnnConnectOverlayForgotValidationError('show');
    }
}

function ms_uiSetUserPassword(jsonResponse) {
    msQueueManager.requestReceived(); // lets iJax know it can process the next request
    var error = (typeof jsonResponse.errors == 'undefined') ? false : true;
    if(error == false) { 
        // update ui for successful
        //cnnConnectOverlayUpdate('reset2login');
        cnnConnectOverlayUpdate('reset2loginsuccess');

    } else {
        cnnConnectOverlayResetValidationError('clear');
        for(var i=0; i<jsonResponse.errors.length; i++) {
            switch (jsonResponse.errors[i]) {
                case 'missing email address':
                    cnnConnectOverlayResetError('email');
                    cnnConnectOverlayResetValidationError('add', 'You forgot to enter your e-mail address.<br/>');
                    break;
                case 'profile not found':
                    cnnConnectOverlayResetError('email');
                    cnnConnectOverlayResetValidationError('add', 'Check and resubmit your e-mail address or reset code. Something does not match our records.<br/>');
                    break;
                case 'missing new password':
                    cnnConnectOverlayResetError('newPassword');
                    cnnConnectOverlayResetValidationError('add', 'You forgot to enter your new password.<br/>');
                    break;
                case 'missing confirm new password':
                    cnnConnectOverlayResetError('confirmNewPassword');
                    cnnConnectOverlayResetValidationError('add', 'You forgot to confirm your new password.<br/>');
                    break;
                case 'confirm password did not match':
                    cnnConnectOverlayResetError('newPassword');
                    cnnConnectOverlayResetError('confirmNewPassword');
                    cnnConnectOverlayResetValidationError('add', 'Your passwords do not match.<br/>');
                    break;
                case 'reset code has expired':
                    cnnConnectOverlayResetError('resetCode');
                    cnnConnectOverlayResetValidationError('add', 'Your reset code has expired. Send another e-mail with an updated link and reset code to reset your password.<br/>');
                    break;
                default:
                    break;
            }
        }
        cnnConnectOverlayResetValidationError('show');
    }
}

function ms_uiSendConfirmEmailAgain(jsonResponse) {
    msQueueManager.requestReceived(); // lets iJax know it can process the next request
    var error = (typeof jsonResponse.errors == 'undefined') ? false : true;
    if(error == false) {
        // update ui for successful
    } else {
    }
}

/* GUI */

function cnnConnectOverlayUpdate(option) {
    /*  use this function when you need multiple view changes to occur
        otherwise just call the single functions directly */
        
    switch (option) {
        case "login2forgot":
            cnnConnectOverlayResetGetEmailFromLogin();
            cnnConnectOverlayHideLogin();
            cnnConnectOverlayShowForgot();
            cnnConnectOverlayClearLogin();
            break;
        case "forgot2reset":
            cnnConnectOverlayHideForgot();
            cnnConnectOverlayGetEmailFromForgot();
            cnnConnectOverlayClearForgot();
            cnnConnectOverlayShowReset();
            break;
        case "all2login":
            cnnConnectOverlayHideForgot();
            cnnConnectOverlayHideReset();
            cnnConnectOverlayClearRegister();
            cnnConnectOverlayShowLogin();
            break;
        case "forgot2login":
            cnnConnectOverlayHideForgot();
            cnnConnectOverlayShowLogin();
            cnnConnectOverlayClearForgot();
            break;
        case "reset2login":
            cnnConnectOverlayHideReset();
            cnnConnectOverlayLoginShowText1();
            cnnConnectOverlayShowLogin();
            cnnConnectOverlayClearReset();
            break;
        case "2resetWithCode":
            cnnConnectOverlayShowResetWithPasscode('test1@test.com', 'asdf');
            cnnConnectOverlayHideLogin();
            cnnConnectOverlayShowReset();
            break;
        case "forgot2resetWithoutCode":
            cnnConnectOverlayShowMsg2();
            cnnConnectOverlayHideForgot();
            cnnConnectOverlayShowReset();
            break;
        case "reset2loginsuccess":
            cnnConnectOverlayHideReset();
            cnnConnectOverlayLoginShowText2();
            cnnConnectOverlayShowLogin();
            cnnConnectOverlayClearReset();
            break;
    }
}

function cnnConnectOverlayShowOverlay() {
    $('cnnConnectOverlayBox').show();
}

function cnnConnectOverlayHideOverlay() {
	cnnConnectOverlayUpdate("all2login");
    $('cnnConnectOverlayBox').hide();
}

function cnnConnectOverlayShowLogin() {
    $('cnnConnectLoginContainer').show();
}

function cnnConnectOverlayHideLogin() {
    $('cnnConnectLoginContainer').hide();
}

function cnnConnectOverlayClearLogin() {
    cnnConnectOverlayLoginShowText1();
    $('cnnConnectLoginErrors').hide();
    $('cnnConnectFormLogin').email.value = '';
    $('cnnConnectFormLogin').password.value = '';
    $('cnnConnectFormLogin').email.className = 'cnnConnectFormbg5 cnn_connectoverlay_email';
    $('cnnConnectFormLogin').password.className = 'cnnConnectFormbg6 cnn_connectoverlay_password';
}

function cnnConnectOverlayLoginShowText1() {
    $('cnnConnectLoginText2').hide();
    $('cnnConnectLoginText1').show();
}

function cnnConnectOverlayLoginShowText2() {
    $('cnnConnectLoginText1').hide();
    $('cnnConnectLoginText2').show();
}

function cnnConnectOverlayLoginValidationError(type, text) {
    switch (type) {
        case "clear":
            $('cnnConnectLoginErrors').hide();
            $('cnnConnectLoginErrors').innerHTML = '<br/>';
            break;
        case "add":
            $('cnnConnectLoginErrors').innerHTML += text;
            break;
        case "show":
            $('cnnConnectFormLogin').email.className = 'cnn_connectoverlay_email cnnredtxt';
            $('cnnConnectFormLogin').password.className = 'cnn_connectoverlay_password cnnredtxt';
            $('cnnConnectFormLogin').password.value = 'Password';
            $('cnnConnectFormLogin').password.type = 'text';
            $('cnnConnectLoginErrors').show();
            break;
    }
}

function cnnConnectOverlayShowForgot() {
    $('cnnConnectForgotContainer').show();
}

function cnnConnectOverlayHideForgot() {
    $('cnnConnectForgotContainer').hide();
}

function cnnConnectOverlayClearForgot() {
    $('cnnConnectForgotErrors').hide();
    $('cnnConnectFormForgot').email.value = '';
    $('cnnConnectFormForgot').email.className = 'cnnConnectFormbg5 cnn_connectoverlay_email';
}

function cnnConnectOverlayForgotShowErrors() {
    $('cnnConnectFormForgot').email.className = 'cnn_connectoverlay_email cnnredtxt';
    $('cnnConnectForgotErrors').show();
}

function cnnConnectOverlayResetGetEmailFromLogin() {
    if($('cnnConnectFormLogin').email.value != '') {
        $('cnnConnectFormForgot').email.value = $('cnnConnectFormLogin').email.value;
        $('cnnConnectFormForgot').email.className = 'cnnConnectFormbgnone cnn_connectoverlay_email';
    }
}

function cnnConnectOverlayForgotValidationError(type, text) {
    switch (type) {
        case "clear":
            $('cnnConnectForgotErrors').hide();
            $('cnnConnectForgotErrors').innerHTML = '<br/>';
            break;
        case "add":
            $('cnnConnectForgotErrors').innerHTML += text;
            break;
        case "show":
            $('cnnConnectFormForgot').email.className = 'cnn_connectoverlay_email cnnredtxt';
            $('cnnConnectForgotErrors').show();
            break;
    }
}

function cnnConnectOverlayShowReset() {
    $('cnnConnectResetContainer').show();
}

function cnnConnectOverlayHideReset() {
    $('cnnConnectResetContainer').hide();
}

function cnnConnectOverlayClearReset() {
    
    //$('cnnConnectFormReset').email.value = 'Email Address';
    //$('cnnConnectFormReset').resetCode.value = 'Reset Code';
    //$('cnnConnectFormReset').newPassword.value = 'New Password';
    //$('cnnConnectFormReset').confirmNewPassword.value = 'Confirm New Password';
    
    //$('cnnConnectFormReset').newPassword.type = 'text';
    //$('cnnConnectFormReset').confirmNewPassword.type = 'text';
    
    //$('cnnConnectFormReset').email.className = 'cnngraytxt cnn_connectoverlay_email3';
    //$('cnnConnectFormReset').resetCode.className = 'cnngraytxt cnn_connectoverlay_password3';
    //$('cnnConnectFormReset').newPassword.className = 'cnngraytxt cnn_connectoverlay_password4';
    //$('cnnConnectFormReset').confirmNewPassword.className = 'cnngraytxt cnn_connectoverlay_password5';
    
    $('cnnConnectResetText1').hide();
    $('cnnConnectResetText2').hide();
    
    cnnConnectOverlayResetValidationError('clear');
}

function cnnConnectOverlayGetEmailFromForgot() {
    $('cnnConnectFormReset').email.value = $('cnnConnectFormForgot').email.value;
    $('cnnConnectFormReset').email.className = 'cnnblacktxt cnn_connectoverlay_email3';
    cnnConnectOverlayShowMsg1()
}

function cnnConnectOverlayShowResetWithPasscode(email, resetCode) {
    $('cnnConnectFormReset').email.value = email;
    $('cnnConnectFormReset').email.className = 'cnnblacktxt cnn_connectoverlay_email3';
    $('cnnConnectFormReset').resetCode.value = resetCode;
    $('cnnConnectFormReset').resetCode.className = 'cnnblacktxt cnn_connectoverlay_password3';
    cnnConnectOverlayShowMsg2()
}

function cnnConnectOverlayShowMsg1() {
    $('cnnConnectResetText1').show();
}

function cnnConnectOverlayShowMsg2() {
    $('cnnConnectResetText2').show();
}

function cnnConnectOverlayResetValidationError(type, text) {
    switch (type) {
        case "clear":
            $('cnnConnectResetErrors').hide();
            $('cnnConnectResetErrors').innerHTML = '<br/>';
            break;
        case "add":
            $('cnnConnectResetErrors').innerHTML += text;
            break;
        case "show":
            $('cnnConnectResetErrors').show();
            break;
    }
}

function cnnConnectOverlayResetError(field) {
    switch (field) {
        case "email":
            $('cnnConnectFormReset').email.className = 'cnn_connectoverlay_email3 cnnredtxt';
            break;
        case "resetCode":
            $('cnnConnectFormReset').resetCode.className = 'cnn_connectoverlay_password3 cnnredtxt';
            break;
        case "newPassword":
            $('cnnConnectFormReset').newPassword.className = 'cnn_connectoverlay_password4 cnnredtxt';
            break;
        case "confirmNewPassword":
            $('cnnConnectFormReset').confirmNewPassword.className = 'cnn_connectoverlay_password5 cnnredtxt';
            break;
    }
}

function cnnConnectOverlayShowRegister() {
    $('cnnConnectResetContainer').show();
}

function cnnConnectOverlayHideRegister() {
    $('cnnConnectResetContainer').hide();
}

function cnnConnectOverlayClearRegister() {
    $('cnnConnectFormRegister').email.value = '';
    $('cnnConnectFormRegister').password.value = '';
    $('cnnConnectFormRegister').screenName.value = '';
    $('cnnConnectFormRegister').captcha.value = '';
    
    $('cnnConnectFormRegister').email.className = 'cnnConnectFormbg1 cnn_connectoverlay_email2';
    $('cnnConnectFormRegister').password.className = 'cnnConnectFormbg2 cnn_connectoverlay_password2';
    $('cnnConnectFormRegister').screenName.className = 'cnnConnectFormbg3 cnn_connectoverlay_screenname';
    $('cnnConnectFormRegister').captcha.className = 'cnnConnectFormbg4 cnn_connectoverlay_enterit';
    
    $('cnnConnectFormRegister').privacyPolicy.checked = false;
    $('cnnConnectFormRegister').breakingNewsAlerts.checked = false;
    $('cnnConnectFormRegister').specialOffers.checked = true;
    
    $('cnnConnectRegisterErrors').hide();
    
    generateCaptchaImage();
}

function cnnConnectOverlayError(error, errorMessage) {
    switch(error) {
        case "email":
            if($('cnnConnectFormRegister').email.value != '') $('cnnConnectFormRegister').email.className = 'cnnConnectFormbgnone cnn_connectoverlay_email2 cnnredtxt';
            break;
        case "password":
            if($('cnnConnectFormRegister').password.value != '') $('cnnConnectFormRegister').password.className = 'cnnConnectFormbgnone cnn_connectoverlay_password2 cnnredtxt';
            break;
        case "errorText":
            $('cnnConnectRegisterErrors').hide();
            $('cnnConnectRegisterErrors').innerHTML = errorMessage;
            $('cnnConnectRegisterErrors').show();
            break;
        case "clearErrorText":
            $('cnnConnectRegisterErrors').hide();
            $('cnnConnectRegisterErrors').innerHTML = '';
            break;
        case "addErrorText":
            $('cnnConnectRegisterErrors').innerHTML += errorMessage;
            break;
        case "showErrorText":
            $('cnnConnectRegisterErrors').show();
            break;
    }
}

function cnnConnectOverlayRegisterError(field) {
    switch (field) {
        case "email":
            $('cnnConnectFormRegister').email.className = 'cnnConnectFormbgnone cnn_connectoverlay_email2 cnnredtxt';
			$('cnnConnectFormRegister').email.value = '* E-mail';
            break;
        case "password":
            $('cnnConnectFormRegister').password.className = 'cnnConnectFormbgnone cnn_connectoverlay_password2 cnnredtxt';
			$('cnnConnectFormRegister').password.type = 'text';
            $('cnnConnectFormRegister').password.value = '* Password (Make it 6-10 characters, and don\'t use spaces)';
            break;
        case "screenName":
            $('cnnConnectFormRegister').screenName.className = 'cnnConnectFormbgnone cnn_connectoverlay_screenname cnnredtxt';
            $('cnnConnectFormRegister').screenName.value = '* Screen Name (Select one with 3-12 characters; number and letters only)';
            break;
        case "captcha":
            $('cnnConnectFormRegister').captcha.className = 'cnnConnectFormbgnone cnn_connectoverlay_enterit cnnredtxt';
            $('cnnConnectFormRegister').captcha.value = '* Type what you see in the grey box';
            break;
    }
}
function getRandomId() {
	var randomId = Math.round(Math.random()*9999999999);
	return randomId;
}
function generateCaptchaImage() {
    var randKaptchaId = getRandomId();
	$('cnnConnectCaptchaImage').src= ms_baseStandard + "kaptcha?challenge_id=" + randKaptchaId;
}


function showToggleOverlay() {
    var divId = 'cnnConnectOverlayBox';
    if($(divId).style.display == 'none') {
        $(divId).style.display = 'block';
        centerDivOfPage('cnnConnectOverlayBox');
        cnnConnectOverlayClearLogin();
    } else {
        $(divId).style.display = 'none';
    }
}

function checkUrlForParams() {
    if(location.href.indexOf("code=") != -1) {
        var queryVars = location.href.toQueryParams();
        cnnConnectOverlayShowResetWithPasscode(queryVars.email, queryVars.code);
        cnnConnectOverlayHideLogin();
        cnnConnectOverlayShowReset();
        showToggleOverlay();
    } else if(location.href.indexOf('emailConfirmed=success') > -1) {
        // add for successful confirmation of email
        showOverlayMessage(1);
        //showToggleOverlay();
    } else if(location.href.indexOf('emailConfirmed=error') > -1) {
        showOverlayMessage(2);
    }
}

function showOverlayMessage(option) {

    if(option == 'hide') {
        $('cnnConnectMessageContent').innerHTML = '';
        $('cnnConnectMessageContainer').style.display = 'none';
    } else {
    
        var overlayMessage = [];
        
        // thank you for registering
        if(typeof(msStorage.profile) == 'undefined') {
            overlayMessage[0] = '<h1>Thanks! You are a CNN.com member</h1>';        
        } else {
            if(msStorage.profile.firstName != '') {
                overlayMessage[0] = '<h1>Thanks, <span id="cnnConnectThankYouName">'+msStorage.profile.firstName+'</span>! You are a CNN.com member</h1>';        
            } else if(msStorage.profile.screenName != '') {
                overlayMessage[0] = '<h1>Thanks, <span id="cnnConnectThankYouName">'+msStorage.profile.screenName+'</span>! You are a CNN.com member</h1>';
            } else {
                overlayMessage[0] = '<h1>Thanks! You are a CNN.com member</h1>';
            }
        }

        overlayMessage[0] += '<p class="connectptxt3">You are ready to participate in all activities and conversations on this site. Enjoy!</p>';

        overlayMessage[0] += '<p class="connectptxt4"><div class="cnnConnectReturnLink"><a href="/profile" title="" alt="">Go to Your Profile Page</a></div></p>';
	
	    // thank you for confirming your e-mail address
	    overlayMessage[1] = '<h1>Thank you for confirming your email address.</h1>';
	    overlayMessage[1] += '<p class="connectptxt3">You are ready to participate in all activities and conversations on this site. Enjoy!</p>';
	    if(ms_isLoggedIn() == true) {
	        overlayMessage[1] += '<p class="connectptxt4"><div class="cnnConnectReturnLink"><a href="/profile" title="" alt="">Go to Your Profile Page</a></div></p>';
        }
	
	    // problem confirming your e-mail address
	    overlayMessage[2] = '<h1>There was an error confirming your e-mail address.</h1>';
	    if(ms_isLoggedIn() == true) {
	        overlayMessage[2] += '<p class="connectptxt3">In order to correct this problem, please resend your confirmation e-mail by <a href="javascript:void(0);" onclick="showOverlayMessage(\'hide\');showToggleProfile();">going to Your Profile Page</a>.';
        } else {
            overlayMessage[2] += '<p class="connectptxt3">In order to correct this problem, please resend your confirmation e-mail by logging in and then going to edit my details.';
        }
	    
        $('cnnConnectMessageContainer').style.display = 'block';
	    $('cnnConnectMessageContent').innerHTML = overlayMessage[option];
	    centerDivOfPage('cnnConnectMessageContainer');
	
	}

}
