
function toggleOverlay(idName,showBoolean)
{
    closeAll();
    toggleOverlayExecute(idName,showBoolean);
}

// separate this out so that it can be called without recursion
function toggleOverlayExecute(idName,showBoolean)
{
    var layerDiv = document.getElementById(idName);

    // hide fields    
    if (showBoolean)
    {
        toggleFormFields("hidden");
        layerDiv.style.visibility="visible";
    }
    else
    {
        layerDiv.style.visibility="hidden";
        toggleFormFields("visible");
    }
    
    // show help
}

function closeAll()
{
    toggleOverlayExecute("score_detail",false);
}
    

// hide all input fields within the body tag
// this allows the help to display
function toggleFormFields(status)
{
    var i = 0;
    for (i = 0; i < document.forms.length; i++) 
    {
        var formRef = document.forms[i];
        if (isInBody(formRef))
        {
            var k = 0;
            for (k = 0; k < formRef.elements.length; k++)
            {
                formRef.elements[k].style.visibility=status;
            }
        }
    }    
}


// test to see if form reference is in body div tag
function isInBody(formRef)
{
    var parent = formRef.parentNode;
    
    while (parent != null)
    {
        if (parent.id == "body")
            return true;
    
        else
            parent = parent.parentNode;
    }
    
    return false;
}

// update the credit field if it exists
function setCredit(creditsUsed,maxCredits)
{
    var value = creditsUsed + " / " + maxCredits + " credits used this quarter"
    var node = document.getElementById("credit");
    if (node != null)
    {
        var tmp = node.firstChild.nodeValue;
        if (tmp != value) {
            node.firstChild.nodeValue = value;
        }
    }
}

function postDecision(name,value)
{
    var url = "post_decision.htm";
    
    postField(url,"D_" + name,value);
}


function postMessage(name,value)
{
    var url = "post_decision.htm";
    
    postField(url,"M_" + name,value);
}

// Ajax utilities
var req;
function postField(url,name,value) {
    var queryString = name + "=" + value;

    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processResponse;
        req.open("POST", url, true);
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        
        req.send(queryString);
        return true;
        
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processResponse;
            req.open("POST", url, true);
            req.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            req.send(queryString);
        } 
        return true;
    }
    return false;
}

function callInProgress(xmlhttp) {
    switch ( req.readyState ) {
        case 1, 2, 3:
            return true;
        break;

        // Case 4 and 0
        default:
            return false;
        break;
    }
}

// call back function from XMLHttpObject
function processResponse()
{
    if (req.readyState == 4) {
        if (req.status == "200") { // OK 
            var response = req.responseText;
            eval(response);
        }
    }
}



function changeLeanInitiative(fld)
{
    var url = "get_credits.htm";    
    postField(url,fld.name,fld.value);
}

function changePushPull(fld)
{
    var url = "change_pushpull.htm";    
    postField(url,fld.name,fld.value);
}

function setPushPull(val,usedcredits,maxcredits)
{
    if (usedcredits > maxcredits)
    {
        
        // revert buttons
        if (val == 1)
        {
            document.getElementById("pullbtn").checked = true;
        }
        else 
        {
            document.getElementById("pushbtn").checked = true;        
        }

        alert("Can not change Production System as this would exceed available credits.");

        var url = "get_credits.htm";    
        postField(url,"D_Build To Order",val);

        
        return;
        
    }
    
    if (val == 1)
    {
        document.getElementById("push").style.display = "none";
        document.getElementById("pull").style.display = "block";
    }
    else
    {
        document.getElementById("push").style.display = "block";
        document.getElementById("pull").style.display = "none";        
    }
    setCredits(usedcredits,maxcredits);
}

function changeLeanInitiativeIfChecked(fld)
{
    if (fld.checked = true) {
        changeLeanInitiative(fld);
    }
}

function setCredits(usedcredits,maxcredits)
{
    var credit = document.getElementById("capitalrow");
    credit.innerHTML = "Capital Budget: " + usedcredits + " / " + maxcredits + " used";

    var advance = document.getElementById("submitBtn");
    var msg = document.getElementById("creditmessage");
    if (usedcredits > maxcredits)
    {
        advance.style.display = 'none';
        msg.style.display = 'inline';
    }
    else 
    {
        advance.style.display = 'inline';
        msg.style.display = 'none';
    }    
    
    
}


var registrationInProgress;

// link
function registerUser()
{
    if (registrationInProgress)
        return;

    var result = checkRegistration();

    var frm = document.getElementById("registration");
    
    if (result)
        frm.submit();        
}

function registerFormSubmit()
{
    if (registrationInProgress)
        return false;
        
    var result = checkRegistration();
       
    return result;    
}

function checkRegistration()
{
    registrationInProgress = true;

    var frm = document.getElementById("registration");
    
    var ok = true;
    
    ok = ok && checkField(frm["M_reg_first_name"],"First Name");
    ok = ok && checkField(frm["M_reg_last_name"],"Last Name");
    ok = ok && checkField(frm["M_reg_company"],"Company");
    ok = ok && checkField(frm["M_reg_address"],"Address");
    ok = ok && checkField(frm["M_reg_city"],"City");
    ok = ok && checkField(frm["M_reg_country"],"Country");
    ok = ok && checkSelected(frm["M_reg_title"],"Title",1);
    ok = ok && checkField(frm["M_reg_email"],"Email");
    ok = ok && checkField(frm["M_reg_phone"],"Business Phone Number");

    if (ok)
    {
        if (frm["M_reg_country"].value == "USA")
        {
            ok = ok && checkField(frm["M_reg_state"],"State/Province",1);
            ok = ok && checkField(frm["M_reg_zip"],"Zip/Postal Code");                
        }

    }


    // note that registration is complete
    if (ok)
    {
        frm["M_registered"].value="true"
        frm["M_registered_session"].value="true"
        frm["FD_action"].value = "post_score";
    }
 
    
    registrationInProgress = false;

    return ok;

}


function testUser() {
    var frm = document.getElementById("registration");

    enterField(frm["M_reg_first_name"],"John");
    enterField(frm["M_reg_last_name"],"Smith");
    selectField(frm["M_reg_title"],2);
    enterField(frm["M_reg_address"],"1000 Main Street");
    enterField(frm["M_reg_city"],"Pleasantville");
    enterField(frm["M_reg_email"],"jsmith@abc.com");
    enterField(frm["M_reg_phone"],"+1 111.111.1111");

    selectField(frm["M_reg_state"],6);
    enterField(frm["M_reg_zip"],"11111");                
    enterField(frm["M_reg_company"],"Smith & Partners Manufacturing");                

}

function enterField(fld,value)
{
    if (fld.value == "")
        fld.value = value;
}

function selectField(fld,index)
{
    if (fld.value == "")
        fld.selectedIndex = index;
}


function checkField(fld,label)
{
    if (fld.value == "")
    {
        alert("Please enter your " + label + ".");
        fld.focus();
        return false;
    }
    
    else
        return true;
}

// index must be >= minIndex
function checkSelected(fld,label,minIndex)
{
    if (fld.selectedIndex < minIndex)
    {
        alert("Please select your " + label + ".");
        fld.focus();
        return false;
    }
    
    else
        return true;
}


// animate the "read" link, then send a XMLHTTPRequest to signal it's been read
var origColor;
function animateReadLink(page)
{
    origColor = document.getElementById("leanoverviewlink").style.backgroundColor;
    setTimeout('highlightLink("leanoverviewlink",true)',500);    
    setTimeout('highlightLink("leanoverviewlink",false)',1000);    
    setTimeout('highlightLink("leanoverviewlink",true)',1500);    
    setTimeout('highlightLink("leanoverviewlink",false)',2000);    
    setTimeout('highlightLink("leanoverviewlink",true)',2500);    
    setTimeout('highlightLink("leanoverviewlink",false)',3000);    
    
    // prevent this from highlighting again
    postMessage("read_" + page,"true");
}

// animate the a given object, and send a XMLHTTPRequest to signal it's been read
var origColor;
function animateDiv(id)
{
    origColor = document.getElementById(id).style.backgroundColor;
    setTimeout('highlightLink("'+id+'",true)',500);    
    setTimeout('highlightLink("'+id+'",false)',1000);    
    setTimeout('highlightLink("'+id+'",true)',1500);    
    setTimeout('highlightLink("'+id+'",false)',2000);    
    setTimeout('highlightLink("'+id+'",true)',2500);    
    setTimeout('highlightLink("'+id+'",false)',3000);    
    
    // prevent this from highlighting again
    postMessage("read_" + id,"true");
}

function highlightLink(id,onoff)
{   
    if (onoff)
    {
        document.getElementById(id).style.backgroundColor = "#CCCCCC";
    }
    else
    {
        document.getElementById(id).style.backgroundColor = origColor;
    }
}


function openPopupWindow(winURL,popW,popH){

    //default values for parent location
    var t = 0, l = 0;
    
    // parent window
    var w = 800;
    var h = 600;

    if (document.all) {            //IE
       /* the following is only available after onLoad */
       w = document.body.clientWidth;
       h = document.body.clientHeight;
       t = window.screenTop
       l = window.screenLeft
    }
    else if (document.layers) {    //Netscape
       w = window.innerWidth;
       h = window.innerHeight;
       t = window.screenY
       l = window.screenX
    }
        

    var leftPos = 0, topPos = 0;

    var leftPos = (w-popW)/2 + l, topPos = (h-popH)/2 + t;

    w = window.open(winURL,'_blank','width=' + popW + ',height='+popH+',top='+topPos+',left='+leftPos+',scrollbars=yes,toolbar=yes,status=yes,titlebar=yes,resizable=yes,location=yes');
    w.focus();
}

