// This file has a dependency on PartyCounter.js so let's include it directly rather than
// relying on the module to supply the include.
function JS_Include(file) {  
    var script  = document.createElement('script');  
    script.src  = file;  
    script.type = 'text/javascript';  
    script.defer = true;  

    document.getElementsByTagName('head').item(0).appendChild(script);  
}

JS_Include('/DesktopModules/SFS_AJAXPartyCounter/PartyCounter.js');  
  
// These get filled in by the Menu module codebehind
var SubscribeConst_CodeTextboxText;
var SubscribeConst_EmailTextboxText;
var SubscribeConst_EmailErrorTextboxText;
var SubscribeConst_CaptchaEmptyErrorText;
var SubscribeConst_CaptchaResultLabelClientID
var SubscribeConst_ControlsPanelClientID;
var SubscribeConst_PartyId;
var SubscribeConst_PortalId;

function Subscribe_Subscribe() {
    var divs = document.getElementsByTagName("div");
    for (var i = 0; i < divs.length; i++) {
        if (/lvMenuSubscribeControls/.test(divs[i].className)) {
            divs[i].style.display = "block";
            return;
        }
    }
}
function Subscribe_FocusCodeTextbox(element) {
    if (element.value == SubscribeConst_CodeTextboxText) element.value = "";
    element.style.fontStyle = "normal";
}

function Subscribe_BlurCodeTextbox(element) {
    if (element.value == "") element.value = SubscribeConst_CodeTextboxText;;
    if (element.value == SubscribeConst_CodeTextboxText) element.style.fontStyle = "italic";
}
function Subscribe_FocusEmailTextbox(element) {
    if (element.value == SubscribeConst_EmailTextboxText) element.value = "";
    element.style.fontStyle = "normal";
}

function Subscribe_BlurEmailTextbox(element) {
    if (element.value == "") element.value = SubscribeConst_EmailTextboxText;;
    if (element.value == SubscribeConst_EmailTextboxText) element.style.fontStyle = "italic";
    Subscribe_ClientSideValidateEmail();
}

function Subscribe_ClientSideValidate() {
    var CaptchaIsValid = Subscribe_ClientSideValidateCaptcha();
    var EmailIsValid = Subscribe_ClientSideValidateEmail();
    var CompletelyPointlessCheckboxIsValid = Subscribe_ClientSideValidateCompletelyPointlessCheckbox();
    
    if (EmailIsValid && CaptchaIsValid && CompletelyPointlessCheckboxIsValid) 
        return true;
   
    return false;
}

function Subscribe_ClientSideValidateCompletelyPointlessCheckbox() {
    var CompletelyPointlessCheckboxIsValid = true;
    var PointlessWasteOfProgrammingTime = document.getElementById("CompletelyPointlessCheckbox");
    if (PointlessWasteOfProgrammingTime && !PointlessWasteOfProgrammingTime.checked) {
        CompletelyPointlessCheckboxIsValid = false;
    }
    
    var CompletelyPointlessErrorMsg = document.getElementById("CompletelyPointlessCheckboxClientSideValidationLabel");
    if (CompletelyPointlessCheckboxIsValid && CompletelyPointlessErrorMsg) CompletelyPointlessErrorMsg.innerHTML = "";
    else if (CompletelyPointlessErrorMsg) CompletelyPointlessErrorMsg.innerHTML = "For legal reasons, this checkbox must be checked in order to subscribe.";
    
    return CompletelyPointlessCheckboxIsValid;
}

function Subscribe_ClientSideValidateEmail() {
    var EmailIsValid = true;

    var inpts = document.getElementsByTagName("input");
    for (var i = 0; i < inpts.length; i++) {
        if (/SubscribeEmailTextbox/.test(inpts[i].className)) {
            if ((inpts[i].value == "") || (inpts[i].value == SubscribeConst_EmailErrorTextboxText)) {
                EmailIsValid = false;
                break;
            }
        }
    }
    
    var EmailErrorMsg = document.getElementById("SubscribeEmailTextboxClientSideValidationLabel");
    if (EmailIsValid && EmailErrorMsg) EmailErrorMsg.innerHTML = "";
    else if (EmailErrorMsg) EmailErrorMsg.innerHTML = SubscribeConst_EmailErrorTextboxText + "<br />";
    
    return EmailIsValid;
}

function Subscribe_ClientSideValidateCaptcha() {
    var CaptchaIsValid = true;
    
    var divs = document.getElementsByTagName("div");
    for (var i = 0; i < divs.length; i++) {
        if (/SubscribeCaptcha/.test(divs[i].className)) {
            var inpts = divs[i].getElementsByTagName("input");
            if (inpts && inpts[0] && (inpts[0].value == "")) {
                CaptchaIsValid = false;
                break;
            }
        }
    }
    
    var CaptchaErrorMsg = document.getElementById("SubscribeCaptchaClientSideValidationLabel");
    if (CaptchaIsValid && CaptchaErrorMsg) {
        if (CaptchaErrorMsg.innerHTML != "")
            CaptchaErrorMsg.innerHTML = "<br />";
        }
    else if (CaptchaErrorMsg) CaptchaErrorMsg.innerHTML = SubscribeConst_CaptchaEmptyErrorText;
    
    var ServerCaptchaErrorMsg = document.getElementById(SubscribeConst_CaptchaResultLabelClientID);
    if (ServerCaptchaErrorMsg) ServerCaptchaErrorMsg.innerHTML = "";
    
    return CaptchaIsValid;
}

// Functions for help popup box
function Subscribe_DialogPosition() {
    var w = 0, h = 0;
    if( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        w = window.innerWidth;
        h = window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        w = document.documentElement.clientWidth;
        h = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        //IE 4 compatible
        w = document.body.clientWidth;
        h = document.body.clientHeight;
    }
    var SubscribeDialog = document.getElementById(SubscribeConst_ControlsPanelClientID);


    var x_pos = (w - SubscribeDialog.offsetWidth)/2;
    var y_pos = (h - SubscribeDialog.offsetHeight)/2;
    if (x_pos < 0) x_pos = 0;
    if (y_pos < 0) y_pos = 0;

    return [x_pos, y_pos];
}


function Subscribe() {
    Subscribe_OpenDialog();  
    SNAP_PartyCounter_Increment(SubscribeConst_PartyId, "ClickSubscribe", SubscribeConst_PortalId); 
}

function Subscribe_OpenDialog() {
    var SubscribeDialog = document.getElementById(SubscribeConst_ControlsPanelClientID);

    SubscribeDialog.style.display = "block";
    
    var pos = Subscribe_DialogPosition();
    SubscribeDialog.style.top = (pos[1]).toString() + "px";
    SubscribeDialog.style.left = (pos[0]).toString() + "px";
   
    var darken = document.getElementById("darkenBackground");
    if (darken && darken.style) {
        darken.style.display = "block";
        if (isIE) {
            darken.style.position = "absolute";
            darken.style.top = document.body.scrollTop;
            SubscribeDialog.style.top = (pos[1] + document.body.scrollTop).toString() + "px";
        }
    }
}

function Subscribe_CloseDialog() {
    var SubscribeDialog = document.getElementById(SubscribeConst_ControlsPanelClientID);
    SubscribeDialog.style.display = "none";
    var darken = document.getElementById("darkenBackground");
    if (darken && darken.style) darken.style.display = "none";
}


function Subscribe_CloseButtonMouseover(elm) {
    elm.src = "/Portals/0/UI/close_button_lit.gif";
}
function Subscribe_CloseButtonMouseout(elm) {
    elm.src = "/Portals/0/UI/close_button.gif";
}
