/**
* Functionality for User Profile login form
* EXPECTS THE GLOBAL VARIABLE site_id
*/

// Preload the animated standby gif:
var standbyImg = new Image();
standbyImg.src = "/www2/user_profile/site_skins/" + site_id + "/images/ajax_loading.gif";

//global: set domain to use for cookies
var up_login_cookie_domain = '';
var domainArray = location.host.split(".").reverse();
if (domainArray.length > 1) {
    up_login_cookie_domain = "." + domainArray[1] + "." + domainArray[0];
}

// holder of form content for 'try again'
var login_form_content = false;

/**
* Actually, toggles login form in most cases...
*/
function showLoginForm(url) {
    if (login_form_content) {
        //do 'try again'
        $('#loginFormWrapper').html(login_form_content);
        $('#userLoginForm').submit(doUserLogin);
        login_form_content = false;
        return false;
    }
    //alert(url);
    setReturnToCookie(url);

    $("#scrim").toggleClass('visibleScrim');
    $("#loginBox").toggleClass('visibleLoginBox');
    $('select').css('visibility', 'visible'); //show all select boxes
    $('.visibleLoginBox').each(function() {
        //run only when login box is visible
        $('select').css('visibility', 'hidden'); //hide all select boxes
        $('#uname').get(0).focus();
    });
    return false;
}

function doUserLogin() {
    //form validation
    if (this.uname.value.length < 6) {
        alert('Usernames must be at least 6 characters long');
        return false;
    }
    if (this.userPassword.value.length < 1) {
        alert("Password is required - please correct and resubmit");
        return false;

    }

    //save the form for "try again"
    login_form_content = $('#loginFormWrapper').html();

    //store form values here as they may disappear on the DOM form removal
    var name = this.uname.value;
    var password = this.userPassword.value;
    var remember_me = this.remem.checked;

    $('#loginFormWrapper').html('<img src="' + standbyImg.src + '" alt="loading..." />');

    $.post("/www2/user_profile/ajax_requests/login_handler.php",
        {
            userName: name,
            userPassword: password
        },
        function(response)
        {
            handleLoginResponse(response, password, remember_me);
        });
    return false;
}

function handleLoginResponse(response, password, remember_me) {
    //alert(response);
    //if (response instanceof XMLHttpRequest) response = response.responseText;

    response = eval("(" + response + ")");
    //for (ii in response) alert(ii+': '+response[ii]);
    var form_area = $("#loginFormWrapper");

    if (response.type == "userProfile" && response.updatesRequired == 0) {

        var expiry = new Date();
        expiry.setTime(expiry.getTime() + (3 * 60 * 60 * 1000));
        //expiry.setYear(expiry.getFullYear() + 1);
        expiry = expiry.toGMTString();
        //alert(expiry);

        //document.cookie = "idjupsessId=" + response.sessionId + "; path=/; domain=" + up_login_cookie_domain;
        //document.cookie = "idjupsess=" + response.cipher + "; path=/; domain=" + up_login_cookie_domain;
        document.cookie = "idjupsessId=" + response.sessionId + "; expires=" + expiry + "; path=/; domain=" + up_login_cookie_domain;
        document.cookie = "idjupsess=" + response.cipher + "; expires=" + expiry + "; path=/; domain=" + up_login_cookie_domain;
        //alert("idjupsess=" + response.cipher + "; expires=" + expiry + "; path=/; domain=" + up_login_cookie_domain);
        if (remember_me) {
            rememberMe(response.cipher);
        }
        loginRedirect();

    } else if (response.type == "userProfile" && response.updatesRequired == 1) {
        var update_name_text = (response.usernameUpdateRequired == 1)
            ? " We now require usernames to be at least 6 characters long."
            : "";
        form_area.html('\
            <form name="profileCorrectionForm" method="post" \
             action="/www2/user_profile/correct.php?siteId=' + site_id + '">\
            <input type="hidden" name="userName" value="' + response.userName + '" />\
            <input type="hidden" name="userPassword" value="' + password + '" />\
            <input type="hidden" name="siteId" value="' + site_id + '" />\
            </form>\
            You need to update your profile before logging in.' + update_name_text + '<br /><br />\
            <a href="javascript: void document.profileCorrectionForm.submit()"\
            >Click here</a> to update your profile.');
    } else {
        //display error
        form_area.html(response.message);
    }
}

function setSessionCookies() {
        /*
        var expiry = new Date();
        expiry.setTime(expiry.getTime() + (20 * 60 * 60 * 1000));
        //expiry.setYear(expiry.getFullYear() + 1);
        expiry = expiry.toGMTString();
        //alert(expiry);

        //document.cookie = "idjupsessId=" + response.sessionId + "; path=/; domain=" + up_login_cookie_domain;
        //document.cookie = "idjupsess=" + response.cipher + "; path=/; domain=" + up_login_cookie_domain;
        document.cookie = "idjupsessId=" + response.sessionId + "; expires=" + expiry + "; path=/; domain=" + up_login_cookie_domain;
        document.cookie = "idjupsess=" + response.cipher + "; expires=" + expiry + "; path=/; domain=" + up_login_cookie_domain;
        //alert("idjupsess=" + response.cipher + "; expires=" + expiry + "; path=/; domain=" + up_login_cookie_domain);
        */
}


function rememberMe(cipher) {
    var expiry = new Date();
    expiry.setYear(expiry.getFullYear() + 1);
    expiry = expiry.toGMTString();
    var remember = "idjupsessremember=" + cipher + "; expires=" + expiry
        + "; path=/; domain=" + up_login_cookie_domain;
    document.cookie = remember;

}

function loginRedirect() {
    if (!up_login_cookie_domain) {
        alert('Your login was accepted; however, your current URL domain "'
            + location.host + '" may not be compatible with the IDJ network.');
    }
    var going_to = getReturnToCookie();
    if (going_to) {
        //alert("going to: " + going_to);
        //Going somewhere else -- re-set the return cookie to this page
        setReturnToCookie();
        location.href = going_to;
    } else location.reload();
}

function doUserLogout() {
    document.cookie = "idjupsessId=; path=/; domain=" + up_login_cookie_domain;
    document.cookie = "idjupsess=; path=/; domain=" + up_login_cookie_domain;

    var date = new Date();
    date.setTime(date.getTime() + (-3 * 24 * 60 * 60 * 1000));

    document.cookie = "idjupsessremember=; expires=" + date.toUTCString() + "; path=/; domain=" + up_login_cookie_domain;
    // BBS Cookies as well:
    document.cookie = "cookpass=; path=/; domain=" + up_login_cookie_domain;
    var cooks = document.cookie.split(";");
    var len = cooks.length;

    for (var i=0; i<len; i++) {
        var cook = cooks[i];
        if (cook.indexOf('=') > -1) {
            var cookName = cook.substring(0, cook.indexOf('='));

            if (cookName.indexOf("bbs") > -1) {
                if (cookName.indexOf("_user_id") > -1) {
                    //alert("hit: " + cookName);
                    document.cookie = cookName + "= ; path=/; domain=" + up_login_cookie_domain;
                } else if (cookName.indexOf("_cookpass") > -1) {
                    //alert("hit: " + cookName);
                    document.cookie = cookName + "= ; path=/; domain=" + up_login_cookie_domain;
                }
            }
        }
    }
    //location.reload();
    // location.reload() is causing problems w/ FF on iframed pages (bbs), but the following works (szarecor on 20060908):
    location.href = location.href;
    return false;
}

function showEditProfileForm()
{
    setReturnToCookie();
    location.href = "/www2/user_profile/update.php?siteId=" + site_id;
    return false;
}

function showNewRegistrationForm()
{
    setReturnToCookie();
    location.href = "/www2/user_profile/registration.php?siteId=" + site_id;
    return false;
}

function showForgotInfoForm()
{
    setReturnToCookie();
    location.href = "/www2/user_profile/forgot.php?siteId=" + site_id;
    return false;
}

function setReturnToCookie(url) //{{{
{
    if (!url || typeof url == 'undefined' || typeof url == 'object') {
        url = location.href;
    }
    //alert("Set return cookie to :\n" + url);
    document.cookie = "idjupsessreturnto=" + url + "; path=/; domain=" + up_login_cookie_domain;
} //}}}

function getReturnToCookie()
{
    var return_cookie = document.cookie.match(/idjupsessreturnto=([^;]+)/);
    return (return_cookie instanceof Array) ? return_cookie[1] : false;
}

function cancelShowLoginForm() {
    var tmp = document.getElementById("loginBox");
    tmp.className = "hiddenLoginBox";
    showHideScrim("hidden");
}
