function clearText(thefield){
if (thefield.defaultValue==thefield.value)
thefield.value = ""
}

function checkAll(form) {
    for (i = 0, n = form.elements.length; i < n; i++) {
        if(form.elements[i].type == "checkbox") {
            if(form.elements[i].checked == true)
                form.elements[i].checked = false;
            else
                form.elements[i].checked = true;
        }
    }
}

function cmmt_hide_toggle (layerName, thisLink) {



        var style2 = document.getElementById(layerName);

        if (style2.className != "hidden") {
            setLayerClass(layerName,"hidden");
            thisLink.firstChild.nodeValue = "Show Comments";
        } else {
            setLayerClass(layerName,"nothidden");
            thisLink.firstChild.nodeValue = "Hide Comments";
        }
}

function cmmt_this(id) {

    var form = $('cmmt_form');
    var comment_insightid = $('comment_insightid');


    if (form.style.display == 'block' && comment_insightid.value == id) {
        form.style.display = 'none';
        return;
    }

    comment_insightid.value = id;

    var link = $('cmmt_link_' + id);
    var offset = Position.cumulativeOffset(link);

    form.style.left = offset[0] + 'px';
    form.style.top = (offset[1] + link.offsetHeight + 3) + 'px';
    form.style.display = 'block';
}

function isNumeric(sText)

{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;


   for (i = 0; i < sText.length && IsNumber == true; i++)
      {
      Char = sText.charAt(i);
      if (ValidChars.indexOf(Char) == -1)
         {
         IsNumber = false;
         }
      }
   return IsNumber;

   }

// star image rollover
function r(starimage) {
    var starnum = starimage.id.substring(starimage.id.indexOf('\-')+1,starimage.id.length);
    var insightnum = starimage.id.substring(0,starimage.id.indexOf('\-'));
    var starid = "";

    // no star logic
    if (!isNumeric(starnum)) {
        starnum = 0;
        nostarid = insightnum + "-no";
        document.getElementById(nostarid).src='images/no-star-on.gif';
    }

    for (i = 5; i > 0; i--) {
            starid = insightnum + "-" + i;
        if (starnum >= i) {
            document.getElementById(starid).src='images/star.gif';
        } else {
            document.getElementById(starid).src='images/star_off.gif';
        }
    }
}

// reset the insight rating
function s(starimage) {
    var starnum = starimage.id.substring(starimage.id.indexOf('\-')+1,starimage.id.length);
    var insightnum = starimage.id.substring(0,starimage.id.indexOf('\-'));
    var starid = "";

    rating = 0;

    // no star logic
    if (!isNumeric(starnum)) {
        starnum = 0;
        nostarid = insightnum + "-no";
        document.getElementById(nostarid).src='images/no-star.gif';
    }

    for (i = 5; i > 0; i--){
        starid = insightnum + "-" + i;
        if (rating >= i) {
            document.getElementById(starid).src='images/star.gif';
        } else {
            document.getElementById(starid).src='images/star_off.gif';
        }
    }
}

function updInsStatus(insightid, insightnum, actionbutton) {
    var url = "houston_xml.php?op=insightupdatestatus&insightid=" + insightid + "&action=" + actionbutton.value;
    //alert (url);

    insightstatus = document.getElementById("insightstatus" + insightnum);
    //alert(insightstatus.innerHTML);

    switch (actionbutton.value) {
        case "reject":
            actionbutton.value = "unreject";
            setLayerClass("insight" + insightnum, "hidden");
            insightstatus.innerHTML = "(status: rejected)";
            break;
        case "unreject":
            actionbutton.value = "reject";
            insightstatus.innerHTML = "(status: submitted)";
            break;
    }

    loadXMLDoc(url);

}

function issue_ni(issueid) {
    // toggles an issue as "not interested" or "interested"

    var url = "";
    foop = document.getElementById("issue_" + issueid + "_ni_link");

    if (foop.className != "notinterested_on") {
        url = "houston_xml.php?op=issue_ni&val=n&issueid=" + issueid;
        loadXMLDoc(url);
        setLayerClass("issuemain_" + issueid, "issuemain_ni");
        //foop.innerHTML = "Interested.";
        foop.className = "notinterested_on";
    } else {
        url = "houston_xml.php?op=issue_ni&val=y&issueid=" + issueid;
        loadXMLDoc(url);
        setLayerClass("issuemain_" + issueid, "issuemain");
        //foop.innerHTML = "Not Interested.";
        foop.className = "notinterested";
    }
}


// toggles an issue's world readable status
function issue_wr(issueid) {
    var url = "houston_xml.php?op=issue_wr&issueid=" + issueid;
    loadXMLDoc(url);
}


// toggles the given notification flag for the given user
function toggle_unf(uid, flags) {
    var url = "houston_xml.php?op=toggle_unf&uid=" + uid + "&flags=" + flags;
    loadXMLDoc(url);
}


function sht(layerName) {
    // generic toggle show/hide logic

    thelayer = document.getElementById(layerName);

    if (thelayer.className != "hidden") {
        setLayerClass(layerName,"hidden");
    } else {
        setLayerClass(layerName,"nothidden");
    }
}

function sh(thisbutton,layerName) {
    // generic show/hide button logic, given layerName

    if (thisbutton.value=="hide") {
            thisbutton.value="show";
            setLayerClass(layerName,"hidden");
    } else {
            thisbutton.value="hide";
            setLayerClass(layerName,"nothidden");
    }
}

function setLayerClass(whichLayer,newClass) {
    // sets whichLayer to the newClass class

    if (document.getElementById) {
        // this is the way the standards work
        var style2 = document.getElementById(whichLayer);
        style2.className = newClass;
    }
}

// ajax stuff
var req = null;
function loadXMLDoc(url) {
    // for AJAX stuff

    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);

    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}

function processReqChange() {
    // for AJAX stuff

    // only if req shows "complete"
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            // ...processing statements go here...
        } else {
            alert("There was a problem retrieving the XML data:\n" + req.statusText);
        }
    }
}

function togglePermission(uid, perm) {
    // toggle permission
    var url = 'houston_xml.php?op=toggle_perm&u=' + uid + '&p=' + perm;
    loadXMLDoc(url);
}

function toggleActive(uid) {
    // toggle active/inactive
    var url = 'houston_xml.php?op=toggle_active&u=' + uid;
    loadXMLDoc(url);
}

function toggleConfirmed(uid) {
    // toggle confirmed/unconfirmed
    var url = 'houston_xml.php?op=toggle_confirmed&u=' + uid;
    loadXMLDoc(url);
}

// briefly displays a message confirming that changes were saved -- used for providing feedback
//  on changes such as email preferences, for which no form is actually submitted, and the page
//  does not reload
function showChangesSavedMessage(msg, msgElementId) {
    var msgDisplayTime = 2500;  // time in milliseconds to show change acknowlegdement message

    var msgElement = document.getElementById(msgElementId);
    msgElement.innerHTML = '<span style="background: #009900; color: #ffffff; font-weight: bold;">&nbsp;' + msg + '&nbsp;</span>';

    var t=setTimeout("hideChangesSavedMessage('" + msgElementId + "')", msgDisplayTime);
}

function hideChangesSavedMessage(msgElementId) {
    var msgElement = document.getElementById(msgElementId);
    msgElement.innerHTML = '&nbsp;';
}


