//vars set in page source:
//	storeRoot, siteDirectory, server_check
//	hasPremiumAccess, hasLimitedAccess, isLoggedIn (only true when user is signed in without IP Auth)
//Add this to sites as we change them and remove the if statement for that site:
//	promoList, sourceSiteName

function trimString(str) {
    return str.split(' ').join('');
}

var theURL = escape(document.URL);
//var promo= siteDirectory; //only change the exceptions
var homeURL = "/jsp/" + siteDirectory + "/index.jsp";
var siteName = "";
var promoArray = new Array();
var domainRoot = storeRoot;

//save the user's state
var isSignedIn = false; //So we know when to let the form submit occur; must be a global variable
var displaySignIn = true;
var useremail = "";
useremail = get_cookie("useremail");

submitInactive = new Image;
submitInactive.src = "/img/universal/signin_submit_inactive.gif";
submitActive = new Image;
submitActive.src = "/img/universal/signin_submit_hover.gif";

if (typeof (promoList) != "undefined" && typeof (sourceSiteName) != "undefined") {//if promolist is declared in the page source
    promoList = promoList + ";PT"; //add the platinum promo code
    promoArray = promoList.split(";");
    siteName = sourceSiteName;
    if (siteDirectory == "mlj" || siteDirectory == "law" || siteDirectory == "iplawandbusiness" || siteDirectory == "scm") {
        displaySignIn = false;
    } else if (siteDirectory == "dailybusinessreview") {
        homeURL = "/index.jsp";
        domainRoot = storeRoot.replace("law", "dailybusinessreview");
    }
} else {
    promoArray.push(siteDirectory);
    if (siteDirectory == "ca") {
        siteName = "The Recorder";

    } else if (siteDirectory == "cc09" || siteDirectory == "cc") {
        siteName = "Corporate Counsel";
        promoArray.pop();
        promoArray.push("cc");

    } else if (siteDirectory == "dailybusinessreview") {
        siteName = "the Daily Business Review";
        homeURL = "/index.jsp";


    } else if (siteDirectory == "lawtechnologynews") {
        siteName = "Law Technology News";
        promoArray.pop();
        promoArray.push("IMLT");
        promoArray.push("LT");

    } else if (siteDirectory == "mlj") {
        siteName = "Minority Law Journal";
        displaySignIn = false;

    } else if (siteDirectory == "nj") {
        siteName = "New Jersey Law Journal";

    } else if (siteDirectory == "nlj") {
        siteName = "National Law Journal";
        promoArray.pop();
        promoArray.push("nl");

    } else if (siteDirectory == "law_firm_inc") {
        siteName = "Law Firm Inc";
        promoArray.pop();
        promoArray.push("lfi");

    } else if (siteDirectory == "nylj/nylawyer") {
        siteName = "New York Lawyer";
        promoArray.pop();
        promoArray.push("nyl");

    } else if (siteDirectory == "pa") {
        siteName = "The Legal Intelligencer";

    } else if (siteDirectory == "tal") {
        if (theURL.search(/digestTAL/) >= 0 || theURL.search(/litigation_daily/) >= 0) {
            siteName = "The Am Law Litigation Daily";
            promoArray.pop();
            promoArray.push("lit");
            homeURL = "/jsp/tal/litigation_daily.jsp";
        } else {
            siteName = "AmericanLawyer.com";
        }

    } else if (siteDirectory == "nylitigator") {
        siteName = "SmartLitigator.com";
        promoArray.pop();
        promoArray.push("li");
        storeRoot = domainRoot.replace("smartlitigator", "law");
    } else if (siteDirectory == "tx") {
        siteName = "Texas Lawyer";
    } else if (siteDirectory == "law") {
        siteName = "Law.com";
        promoArray.pop();
        promoArray.push("lc");

    } else if (siteDirectory == "lawjobs") {
        siteName = "Lawjobs.com";
        promoArray.pop();
        promoArray.push("lj");
        promoArray.push("lc");
        homeURL = "/newsandviews/index.jsp";
        /*displaySignIn = false;*/
        domainRoot = storeRoot.replace("law", "lawjobs");
    } else if (siteDirectory == "sc") {
        siteName = "the Supreme Court Insider";
        promoArray.pop();
        promoArray.push("SC");
        homeURL = "/jsp/nlj/supreme_court_insider.jsp";

    } else if (siteDirectory == "scm") {
        siteName = "the U.S. Supreme Court Monitor";
        promoArray.pop();
        promoArray.push("USSupreme");
        displaySignIn = false;
    } else if (siteDirectory == "iplawandbusiness") {
        siteName = "I.P. Law and Business";
        promoArray.pop();
        promoArray.push("iplb");
        displaySignIn = false;
    }
    promoArray.push("PT");
}


/**************************/
/**** Start Global Nav ****/
/**************************/

function globalNav() {
    if (!document.getElementById) return null;
    globalNav.display(siteDirectory);
    if (displaySignIn) {
        globalNav.showSignIn(siteDirectory);
    }
    return true;
} //function globalNav(pub)

globalNav.display = function (siteDirectory) {
    if (siteDirectory == "nylj/nylawyer") {
        siteDirectory = "law";
    }

    /* Write global nav links */
    document.write("<ul id='globallinks'>");
    document.write("<li><a href='http://www.law.com'>Law.com Home</a></li>");
    document.write("<li><a href='http://www.law.com/newswire/'>Newswire</a></li>");
    document.write("<li><a href='http://www.lawjobs.com'>LawJobs</a></li>");
    document.write("<li><a href='http://www.clecenter.com'>CLE Center</a></li>");
    document.write("<li><a href='http://www.lawcatalog.com/default.cfm?affil=236722'>LawCatalog</a></li>");
    document.write("<li><a href='http://www.law.com/service/site_map.shtml'>Our Sites</a></li>");
    document.write("<li><a href='http://www.law.com/jsp/law/advertiseOpp.jsp?site=" + siteDirectory + "'>Advertise</a></li>");
    document.write("</ul>");
} //GlobalNav.display

/* Check the cookie for user state */
function get_cookie(cookie_name) {
    var results = document.cookie.match(cookie_name + '=(.*?)(;|$)');
    if (results)
        return (unescape(results[1]));
    else
        return null;
}
globalNav.showSignIn = function (siteDirectory) {

    var userAccount = get_cookie("userAccount");
    var accountType = get_cookie("accountType");
    var ipAccount = get_cookie("ipAccount");
    if (siteDirectory == "lawtechnologynews") {
        siteDirectory = "lt";
    }
    if (siteDirectory == "nlj") {
        siteDirectory = "nl";
    }
    if (siteDirectory == "nylj") {
        siteDirectory = "ny";
    }


    /* signed in if they have a userAccount cookie */
    document.write("<div id='loginbar'>");
    if (userAccount != null) {
        //document.write("<a href='javascript:signOut()'>Sign Out</a>");

        if (siteDirectory == "law" || siteDirectory == "law_10") {
            if (ipAccount == null && accountType == null) {
                document.write("<a class='signOut' href='javascript:signOut()'>Sign Out</a><a class='myAccount'  href='https://" + storeRoot + "/Registration/MyAccount.aspx?p=" + siteDirectory + "&source=" + theURL + "'>My Account</a>");
            } else {
                document.write("<a class='overlayMore' href='javascript:signOut()'>Sign Out</a>");
            }
        } else if (ipAccount == null && accountType == null) {
            document.write("<a href='javascript:signOut()'>Sign Out</a> | <a href='https://" + storeRoot + "/Registration/MyAccount.aspx?p=" + siteDirectory + "&source=" + theURL + "'>My Account</a>");
        } else {
            document.write("<a href='javascript:signOut()'>Sign Out</a>");
        }

    } else {
        document.write("<a style=\"cursor: pointer;\" onclick=\"addForm();\" class=\"overlayMore\">SIGN IN</a>")
    }
    document.write("</div>"); // End loginbar div

} //globalNav.showSignIn=function(siteDirectory)

function signOut() {
    document.location = "http://" + domainRoot + "/Registration/Logout.aspx?source=" + theURL;
}

/********************************************/
/**** End Global Nav, Start Registration ****/
/********************************************/


//Sign in functions

var signInTop = '<div id="lightbox_box">';
signInTop += '<form name="Form1" method="POST" action="http://' + domainRoot + '/Registration/Login.aspx" id="login-form" ';

var xButton = 'onsubmit="return localSignIn(this, 1);"><p id="lightbox_login_close"><a id="xbox" onClick="document.getElementById(\'lightbox_login\').style.display=\'none\'; scOverlayClose();">X</a></p>';

var premiumText = "";

if (useremail == null || useremail == "") {
    premiumText = 'onsubmit="return localSignIn(this, 2);"><p id="lightbox_login_close"><a onclick="scOverlayClose();" id="xbox" href="' + homeURL + '">X</a></p>';
    premiumText += '<p class="access">The content you have requested requires a premium subscription.</p>';
} else {
    premiumText = 'onsubmit="return localSignIn(this, 2);"><p id="lightbox_login_close"><a onclick="scOverlayClose();" id="xbox" href="' + homeURL + '">X</a></p> <p class="access">The content you have requested requires a premium subscription.</p> <p class="access">' + useremail + ' does not have premium access. <a href="https://' + storeRoot + '/Registration/Default.aspx?promoCode=' + promoArray[0] + '&source=' + theURL + '">Click Here To Upgrade.</a></p>';
}

var limitedText = "";
if (useremail == null || useremail == "") {
    limitedText = 'onsubmit="return localSignIn(this, 1);"><p id="lightbox_login_close"><a onclick="scOverlayClose();" id="xbox" href="' + homeURL + '">X</a></p>';
    limitedText += '<p class="access">This free content is only available with registration.</p>';
} else {
    limitedText = 'onsubmit="return localSignIn(this, 1);"><p id="lightbox_login_close"><a onclick="scOverlayClose();" id="xbox" href="' + homeURL + '">X</a></p> <p class="access">This free content is only available with registration.</p> <p class="access">' + useremail + ' does not have an active registration to this publication. <a href="https://' + storeRoot + '/Registration/Default.aspx?promoCode=' + promoArray[0] + '&source=' + theURL + '">Click Here to Register.</a></p>';
}

var signInMiddle1 = '<div class="formStatusMessages">';
signInMiddle1 += '<span id="emailCheckStatus"></span>';
signInMiddle1 += '</div>';
signInMiddle1 += '<h3>Sign In</h3>';
signInMiddle1 += '<table id="formLogin">';
signInMiddle1 += '<tr>';
signInMiddle1 += '<td>Email:</td>';
signInMiddle1 += '<td><input type="text" name="uid" id="uid" size="20" class="required email" onblur="this.value=trimString(this.value);" /></td>';
signInMiddle1 += '</tr>';
signInMiddle1 += '<tr>';
signInMiddle1 += '<td>Password:</td>';

var premiumPassword = '<td><input type="password" name="upass" id="upass" size="20" class="required" onKeyPress="return submitenter(this,event,2)" /></td>';
var limitedPassword = '<td><input type="password" name="upass" id="upass" size="20" class="required" onKeyPress="return submitenter(this,event,1)" /></td>';

var signInMiddle2 = '</tr>';
signInMiddle2 += '<tr>';
signInMiddle2 += '<td>&nbsp;</td>';
signInMiddle2 += '<td class="rememberMe"><input name="rememberme" value="true" checked="true" type="checkbox" /> Remember me</td>';
signInMiddle2 += '</tr>';
signInMiddle2 += '<tr>';
signInMiddle2 += '<td colspan="2">';
signInMiddle2 += '<input type="hidden" name="mode" value="logon" />';
signInMiddle2 += '<input type="hidden" name="source" id="source" value="" />';

var premiumPromo = '<input type="hidden" name="promocode" value="' + promoArray[0] + '" />';
var limitedPromo = '<input type="hidden" name="promocode" value="' + promoArray[0] + ':LIMITED" />';

var signInBottom = '<input type="image" id="loginSubmit" src="/img/universal/signin_submit_inactive.gif" width="80px" height="20px" alt="Submit" name="submit" value="submit" onmouseover="img_change(\'active\')" onmouseout="img_change(\'inactive\')" />';
signInBottom += '</td>';
signInBottom += '</tr>';
signInBottom += '</table>';
signInBottom += '<p class="forgetPass"><a onclick="sendPassword();">Forgot your password?</a></p>';
signInBottom += '<p class="newUserRegister">';

var premiumSubscribe = '<a id="subscribelink" href="https://' + storeRoot + '/Registration/Default.aspx?promoCode=' + promoArray[0] + '&source=' + theURL + '">Click here to Subscribe to ' + siteName + '! >></a>';
premiumSubscribe += '</p>';
premiumSubscribe += '</form>';
premiumSubscribe += '</div>';

var lawPremiumSubscribe = '<a id="subscribelink" href="https://' + storeRoot + '/Registration/Default.aspx?promoCode=' + promoArray[0] + '&source=' + theURL + '">Click here for your FREE registration to Law.com.  This registration will give you access to all the FREE content within the Law.com network of websites. >></a>';
lawPremiumSubscribe += '</p>';
lawPremiumSubscribe += '</form>';
lawPremiumSubscribe += '</div>';

var limitedSubscribe = '<a id="subscribelink" href="https://' + storeRoot + '/Registration/Default.aspx?promoCode=' + promoArray[0] + '&source=' + theURL + '">Click here to Register for ' + siteName + '! >></a>';
limitedSubscribe += '</p>';
limitedSubscribe += '</form>';
limitedSubscribe += '</div>';

var lawLimitedSubscribe = '<a id="subscribelink" href="https://' + storeRoot + '/Registration/Default.aspx?promoCode=' + promoArray[0] + '&source=' + theURL + '">Click here for your FREE registration to Law.com.  This registration will give you access to all the FREE content within the Law.com network of websites. >></a>';
lawLimitedSubscribe += '</p>';
lawLimitedSubscribe += '</form>';
lawLimitedSubscribe += '</div>';


var formSubmitInProgress = false;

function rewritePage(reqAccess, userAccess) {
    if (userAccess == 2) {
        hasPremiumAccess = true;
        return;
    }
    if (reqAccess == "r" && userAccess == 1) {
        hasLimitedAccess = true;
        return;
    }

    if (reqAccess == "" || reqAccess == "u" || reqAccess == "null") { //user has access
        return;
    }
    if (userAccess == 1) {
        hasLimitedAccess = true;
    }

    var articleSignIn = "";
    var browser = navigator.appName;
    var theHeight = "";

    if (reqAccess == "r" && userAccess == 0) {
        if (siteDirectory == "law") {
            articleSignIn = '<div id="lightbox_login">' + signInTop + limitedText + signInMiddle1 + limitedPassword + signInMiddle2 + limitedPromo + signInBottom + lawLimitedSubscribe + '</div>';
        } else {
            articleSignIn = '<div id="lightbox_login">' + signInTop + limitedText + signInMiddle1 + limitedPassword + signInMiddle2 + limitedPromo + signInBottom + limitedSubscribe + '</div>';
        }
    } else { //reqAccess == p && userAccess is 0 or 1
        articleSignIn = '<div id="lightbox_login">' + signInTop + premiumText + signInMiddle1 + premiumPassword + signInMiddle2 + premiumPromo + signInBottom + premiumSubscribe + '</div>';
    }

    if (browser == "Microsoft Internet Explorer") {
        document.execCommand('Stop');
    } else {
        window.stop(); //non-IE
    }
    document.body.innerHTML = articleSignIn;
    document.getElementById('lightbox_login').style.display = 'block';
    document.getElementById("uid").focus();
    return;
}


//Submit the form if the enter key is pressed
function submitenter(myfield, e, mylevel) {

    var keycode;
    if (window.event) keycode = window.event.keyCode;
    else if (e) keycode = e.which;
    else return true;

    if (keycode == 13) {
        if (localSignIn(myfield.form, mylevel)) {
            myfield.form.submit();
            return false;
        } else {
            return true;
        }
    } else {
        return true;
    }

}


function addForm() {
    var lightbox = document.getElementById("lightbox_login");
    if (siteDirectory == "law") {
        lightbox.innerHTML = signInTop + xButton + signInMiddle1 + limitedPassword + signInMiddle2 + premiumPromo + signInBottom + lawPremiumSubscribe;
    }
    else {
        lightbox.innerHTML = signInTop + xButton + signInMiddle1 + limitedPassword + signInMiddle2 + premiumPromo + signInBottom + premiumSubscribe;
    }
    lightbox.style.display = 'block';
    document.getElementById("uid").focus();
}

function localSignIn(theForm, theLevel) {
    document.getElementById("source").value = document.URL;
    var theEmail = theForm.uid;
    var thePassword = theForm.upass;
    var rememberMe = 0;

    if (theForm.rememberme.checked) {
        rememberMe = 1;
    }
    if (!validField(theEmail, "Email Address")) {
        return false;
    }
    if (!validField(thePassword, "Password")) {
        return false;
    }
    if (!validUser(theEmail, thePassword, rememberMe, theLevel)) {
        return false;
    }
    return true;
}

function validField(formField, fieldLabel) {
    var result = true;
    var theValue = formField.value;

    if (theValue == "") {
        alert('Please enter a value for the "' + fieldLabel + '" field.');
        formField.focus();
        result = false;
    }
    return result;
}

function validUser(pEmail, pPassword, rememberMe, theLevel) {
    if (isSignedIn) {
        return true; //Validation already done, quit now
    }

    var theEmail = pEmail.value;
    var thePassword = pPassword.value;
    var theServer = document.domain;

    var dataString = 'http://' + storeRoot + '/Registration/DataWebservice.asmx/CheckLoginAndGetAccessList&queryString=' + 'email%3D' + theEmail + '%26' + 'password%3D' + thePassword;

    dataString = "http://" + theServer + "/jsp/utils/serviceProxy.jsp?server=" + dataString; //changed from server_check to theServer
    $("#emailCheckStatus").html('<p class="going">Processing...</p>');

    if (formSubmitInProgress)
        return false; //Block form submissions while the prior request is still in progress
    formSubmitInProgress = true; //To block any future requests while this one is in progress

    $.ajax({
        type: "GET",
        url: dataString,
        dataType: "xml",
        timeout: 30000,
        success: function (data) {

            formSubmitInProgress = false; //Remove blocking
            var result = $('string', data).text();

            //make all promo codes have a semi-colon at the beginning
            result = ";" + result.toLowerCase();

            var promoLocal, premiumReg, limitedReg;
            var premiumAccess = false;
            var limitedAccess = false;

            //alert("promo array is "+promoArray);

            for (var i = 0; i < promoArray.length; i++) {
                //make everything lowercase so that it doesn't matter what we get, it still works
                promoLocal = promoArray[i].toLowerCase();

                if (!premiumAccess) {
                    premiumReg = new RegExp(";" + promoLocal + ";");
                    premiumAccess = premiumReg.test(result);
                }

                if (!limitedAccess) {
                    //for checking limited access, change platinum to law.com
                    if (promoLocal == "pt") {
                        limitedReg = new RegExp(";lc;");
                    } else {
                        limitedReg = new RegExp(";" + promoLocal + ":limited;");
                    }
                    limitedAccess = limitedReg.test(result);
                }
            }

            if (isLoggedIn == false && (hasPremiumAccess == true || hasLimitedAccess == true)) { //already signed in with IP Auth
                $("#emailCheckStatus").html('<p class="going">Login successful, please wait...</p>');
                isSignedIn = true;
                $('#loginSubmit').click();
            } else if (limitedAccess == true && theLevel == 1) { //user has limited access
                $("#emailCheckStatus").html('<p class="going">Login successful, please wait...</p>');
                isSignedIn = true;
                $('#loginSubmit').click();
            } else if (premiumAccess == true) { //user has premium access
                $("#emailCheckStatus").html('<p class="going">Login successful, please wait...</p>');
                isSignedIn = true;
                $('#loginSubmit').click();
            } else if (limitedAccess == true && theLevel == 2) { //user has limited access, content is premium
                $("#emailCheckStatus").html('<p>The content you have requested is available only to premium access subscribers. <span class="user">' + theEmail + '</span> only has limited access. <a href="http://' + storeRoot + '/Registration/Login.aspx?mode=logon&uid=' + theEmail + '&upass=' + thePassword + '&rememberme=' + rememberMe + '&promoCode=' + promoArray[0] + '&returnUrl=' + theURL + '">Click Here To Upgrade.</a></p>');

                document.getElementById("subscribelink").href = 'http://' + storeRoot + '/Registration/Login.aspx?mode=logon&uid=' + theEmail + '&upass=' + thePassword + '&rememberme=' + rememberMe + '&promoCode=' + promoArray[0] + '&returnUrl=' + theURL;

                document.getElementById("xbox").href = 'http://' + domainRoot + '/Registration/Login.aspx?mode=logon&uid=' + theEmail + '&upass=' + thePassword + '&rememberme=' + rememberMe + '&promoCode=' + promoArray[0] + '&source=http://' + server_check + homeURL;
            } else {
                $("#emailCheckStatus").html('<p><span class="user">' + theEmail + '</span> does not have an active registration to this publication. <a href="http://' + storeRoot + '/Registration/Login.aspx?mode=logon&uid=' + theEmail + '&upass=' + thePassword + '&rememberme=' + rememberMe + '&promoCode=' + promoArray[0] + '&returnUrl=' + theURL + '">Click Here to Register.</a></p>');

                document.getElementById("subscribelink").href = 'http://' + storeRoot + '/Registration/Login.aspx?mode=logon&uid=' + theEmail + '&upass=' + thePassword + '&rememberme=' + rememberMe + '&promoCode=' + promoArray[0] + '&returnUrl=' + theURL;

                document.getElementById("xbox").href = 'http://' + domainRoot + '/Registration/Login.aspx?mode=logon&uid=' + theEmail + '&upass=' + thePassword + '&rememberme=' + rememberMe + '&promoCode=' + promoArray[0] + '&source=http://' + server_check + homeURL;
            }

            var s = s_gi(s_account);
            s.linkTrackVars = "prop21,eVar20,events";
            s.linkTrackEvents = "event8";
            s.prop21 = theEmail;
            s.eVar20 = "subscriber login";
            s.events = "event8";
            s.tl(this, 'o', 'login overlay signin');

        }, //End success function

        error: function (xhr, textStatus, errorThrown) {
            formSubmitInProgress = false; //Remove blocking
            if (textStatus == "timeout") {
                $("#emailCheckStatus").html('<p>The server did not respond in a timely fashion - please try again</p>');
            } else {
                $("#emailCheckStatus").html('<p>The login credentials are incorrect - please try again</p>');
                document.getElementById("xbox").href = homeURL;
            }
        } //End error function 
    });

    return false; //To stop the form from submitting

} //End validUser function

//End Sign in fucntions

// Password Reminder
function sendPassword() {
    var emailField = document.getElementById("uid");
    var theEmail = emailField.value;
    if (theEmail == "") {
        $("#emailCheckStatus").html('<p>Please enter your email address.</p>');
        emailField.focus();
        return false;
    }
    var dataString = 'http://' + storeRoot + '/Registration/DataWebservice.asmx/SendPasswordReminder&queryString=' + escape('Email=' + theEmail + '&PromotionCode=' + promoArray[0]);
    dataString = "http://" + server_check + "/jsp/utils/serviceProxy.jsp?server=" + dataString;
    $("#emailCheckStatus").html('<p class="going">Processing...</p>');
    $.ajax({
        type: "GET",
        url: dataString,
        dataType: "xml",
        timeout: 60000,
        success: function (data) {
            $("#emailCheckStatus").html('<p>Email sent, please check your inbox.</p>');
        }, //End success function
        error: function (xhr, textStatus, errorThrown) {
            if (textStatus == 'timeout') {
                $("#emailCheckStatus").html('<p>The server did not respond in a timely fashion - please try again</p>');
            } else {
                $("#emailCheckStatus").html('<p>There was an error processing your request. Please check your email address.</p>');
            }
            emailField.focus();
        } //End error function
    }); //End ajax call
    return false;
}


function img_change(imgName) {
    if (imgName == "active") {
        document.getElementById("loginSubmit").src = submitActive.src;
    } else {
        document.getElementById("loginSubmit").src = submitInactive.src;
    }
}

/**************************/
/**** End Registration ****/
/**************************/
