document.cookie = "screenres=" + screen.width+'x'+screen.height;

function EndRequestHandler(sender, args)
{
    scroll(0,0);
}

function addGroupItem(intIn, typeIn)
{
    /*if (window.showModalDialog)
    {
        window.showModalDialog('addGroupItem.aspx?ID=' + intIn + '&type=' + typeIn, null,
            'left=20,top=20,width=500,height=500,toolbar=1,resizable=0,scrollbars=1');
    }
    else
    {*/
        window.open('addGroupItem.aspx?ID=' + intIn + '&type=' + typeIn, 'mywin',
            'left=20,top=20,width=500,height=300,toolbar=1,resizable=1,scrollbars=1');
    //}           
}

function openWindow(pageIn)
{
    /*if (window.showModalDialog)
    {
        window.showModalDialog('addGroupItem.aspx?ID=' + intIn + '&type=' + typeIn, null,
            'left=20,top=20,width=500,height=500,toolbar=1,resizable=0,scrollbars=1');
    }
    else
    {*/
        window.open(pageIn, 'mywin',
            'left=20,top=20,width=800,height=600,toolbar=1,resizable=1,scrollbars=1');
    //}           
}

function clearText(elemIn)
{
    if (elemIn.value != null)
    {
        elemIn.focus();
        elemIn.select();
    }
}

function uncheckAll(checkboxIn)
{
    var i, j;

    for (i=0; i<document.forms.length; i++)
    {
        var frm = document.forms[i];
        
        for (j=0; j<frm.elements.length; j++)
        {
            var elem = frm.elements[j];
            
            if (elem.name == checkboxIn.name && elem.value != checkboxIn.value)
                elem.checked = false;
        }
    }
}

function setBack()
{
    var elem = document.getElementById("backClicked");
    elem.value = "Yes";
}

function uncheckOne(checkboxIn)
{
    var i, j;

    for (i=0; i<document.forms.length; i++)
    {
        var frm = document.forms[i];
        
        for (j=0; j<frm.elements.length; j++)
        {
            var elem = frm.elements[j];
            
            if (elem.name == checkboxIn.name && elem.value != checkboxIn.value)
            {
                if (elem.defVal == "checked" || elem.getAttribute("defVal") == "checked")
                    elem.checked = false;
            }
        }
    }
}  

function getQueryVariable(variable) 
{
    var query = window.location.search.substring(1);
    var vars = query.split("&");

    for (var i=0;i<vars.length;i++) 
    {
        var pair = vars[i].split("=");
        if (pair[0] == variable) 
        {
            return pair[1];
        }
    } 
}

function closeWin()
{
    today = new Date(); 
    window.opener.document.location.href = "Questions.aspx?command=skipTo&ID=" + getQueryVariable("ginum") + "#gi" + getQueryVariable("ID");
    window.close();
}

function validate()
{
    var i, j, k;
    var retVal = true;
    
    for (i=0; i<document.forms.length; i++)
    {
        var frm = document.forms[i];
                
        for (j=0; j<frm.elements.length; j++)
        {
            var elem = frm.elements[j];
            
            if (elem.getAttribute("validators") != null)
            {
                errMsgName = "err-" + elem.name;
                errMsgDiv = document.getElementById(errMsgName);
                
                var validateFunctions = elem.getAttribute("validators").split(";");
                
                if (validateFunctions.length > 0)
                {
                    elem.style.color = '#000000';
                    errMsgDiv.innerHTML = "";
                }
                
                for (k=0; k<validateFunctions.length; k++)
                {
                    if (validateFunctions[k] != "")
                    {   
                        funcSplit = validateFunctions[k].split(":");
                        funcName = funcSplit[0];
                        
                        if (funcSplit.length > 1)
                            funcVar = funcSplit[1];
                        else
                            funcVar = -1;
                        
                        switch (funcName)
                        {
                            case "ValidateAlphaNumeric":
                                if (!ValidateAlphaNumeric(elem))
                                    retVal = false;
                                break;
                            case "ValidateEmail":
                                if (!ValidateEmail(elem))
                                    retVal = false;
                                break;
                            case "ValidateNumeric":
                                if (!ValidateNumeric(elem))
                                    retVal = false;
                                break;
                            case "ValidateURL":
                                if (!ValidateURL(elem))
                                    retVal = false;
                                break;
                            case "ValidateDate":
                                if (!ValidateDate(elem))
                                    retVal = false;
                                break;
                            case "ValidateZip":
                                if (!ValidateZip(elem))
                                    retVal = false;
                                break;
                            case "ValidatePhone":
                                if (!ValidatePhone(elem))
                                    retVal = false;
                                break;
                            case "ValidateSSN":
                                if (!ValidateSSN(elem))
                                    retVal = false;
                                break;
                            case "ValidateCustom":
                                if (!ValidateCustom(elem, funcVar))
                                    retVal = false;
                                break; 
                            case "ValidateMaxLength":
                                if (!ValidateMaxLength(elem, funcVar))
                                    retVal = false;
                                break;
                            case "ValidateMinLength":
                                if (!ValidateMinLength(elem, funcVar))
                                    retVal = false;
                                break;
                            case "ValidateRequired":
                                if (!ValidateRequired(elem, funcVar))
                                    retVal = false;
                                break;
                            case "ValidateTotal":
                                if (!ValidateTotal(elem, funcVar))
                                    retVal = false;
                                break;
                            case "ValidateUniqueGroup":
                                if (!ValidateUniqueGroup(elem, funcVar))
                                    return false;
                                break;   
                            case "ValidateMaxCount":
                                if (!ValidateMaxCount(elem, funcVar))
                                    return false;
                                break;   
                            case "ValidateMinCount":
                                if (!ValidateMinCount(elem, funcVar))
                                    return false;
                                break;      
                        }
                    }
                }
                
                if (errMsgDiv.innerHTML.length == 0)
                    errMsgDiv.style.visible = false;                   
            }
        }
    }
    
    return retVal;
}

function ValidateMaxCount(elemIn, funcVarIn)
{
    var i, j, k;
    
    k = 0;
    
    for (i=0; i<document.forms.length; i++)
    {
        var frm = document.forms[i];
        for (j=0; j<frm.elements.length; j++)
        {
            var elem = frm.elements[j];
            
            if (elem.name == elemIn.name)
            {
                if (elem.checked == true)
                {
                    k++;
                }
            }
        }
    }
    
    if (k > funcVarIn)
    {
        var errMsgName = "err-" + elemIn.name;
        var errMsgDiv = document.getElementById(errMsgName);
          
        errMsgDiv.innerHTML = "You may select only " + funcVarIn + " answer(s) to this question.";
        return false;
    }
    
    return true;
}

function ValidateMinCount(elemIn, funcVarIn)
{
    var i, j, k;
    
    k = 0;
    
    for (i=0; i<document.forms.length; i++)
    {
        var frm = document.forms[i];
        for (j=0; j<frm.elements.length; j++)
        {
            var elem = frm.elements[j];
            
            if (elem.name == elemIn.name)
            {
                if (elem.checked == true)
                {
                    k++;
                }
            }
        }
    }
    
    if (k < funcVarIn)
    {
        var errMsgName = "err-" + elemIn.name;
        var errMsgDiv = document.getElementById(errMsgName);
           
        errMsgDiv.innerHTML = "You must select at least " + funcVarIn + " answer(s) to this question.";
        return false;
    }
    
    return true;
}

function ValidateAlphaNumeric(elem)
{
    var tfld = elem.value;
    var exp = /^\w+$/ ;
    if (!tfld.match(exp))
    { 
        var errMsgName = "err-" + elem.name;
        var errMsgDiv = document.getElementById(errMsgName);
    
        elem.style.color = '#FF0000';        
        errMsgDiv.innerHTML = "Alpha-Numeric values only.";
        return false;
    }
    else
    {
        return true;
    } 
}

function ValidateEmail(elem)
{
    var tfld = elem.value;
    var exp = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    if (!tfld.match(exp))
    { 
        var errMsgName = "err-" + elem.name;
        var errMsgDiv = document.getElementById(errMsgName);
    
        elem.style.color = '#FF0000';        
        errMsgDiv.innerHTML = "Email could not be verified.";
        return false;
    }
    else
    {
        return true;
    }   
}

function ValidateUniqueGroup(elemIn, funcVarIn)
{
    var i, j, k;
    
    for (i=0; i<document.forms.length; i++)
    {
        var frm = document.forms[i];
        for (j=0; j<frm.elements.length; j++)
        {
            var elem = frm.elements[j];
            
            if (elem.getAttribute("validators") != null)
            {
                var validateFunctions = elem.getAttribute("validators").split(";");
                
                for (k=0; k<validateFunctions.length; k++)
                {
                    if (validateFunctions[k] != "")
                    {
                        if (validateFunctions[k] == ("ValidateUniqueGroup:" + funcVarIn))
                        {
                            if (elemIn.name != elem.name)
                            {
                                if (elemIn.selectedIndex != null)
                                {
                                    if (elemIn.selectedIndex == elem.selectedIndex)
                                    {
                                        var errMsgName = "err-" + elemIn.name;
                                        var errMsgDiv = document.getElementById(errMsgName);
                                    
                                        elemIn.style.color = '#FF0000';        
                                        errMsgDiv.innerHTML = "Values must be unique.";
                                        return false;
                                    }
                                }
                                else
                                {
                                    if (elemIn.checked != null && elemIn.checked == true)
                                    {
                                        if (elemIn.checked == elem.checked && elemIn.getAttribute("textVal") == elem.getAttribute("textVal"))
                                        {
                                            var errMsgName = "err-" + elemIn.name;
                                            var errMsgDiv = document.getElementById(errMsgName);
                                        
                                            elemIn.style.color = '#FF0000';        
                                            errMsgDiv.innerHTML = "Values must be unique.";
                                            return false;
                                        }  
                                    }
                                    else
                                    {
                                        if (elemIn.value == elem.value)
                                        {
                                            var errMsgName = "err-" + elemIn.name;
                                            var errMsgDiv = document.getElementById(errMsgName);
                                        
                                            elemIn.style.color = '#FF0000';        
                                            errMsgDiv.innerHTML = "Values must be unique.";
                                            return false;
                                        }  
                                    } 
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    
    return true;
}

function ValidateTotal(elemIn, funcVarIn)
{
    var i, j, k;
    var totalAmount, totalGroup, runningTotal;
    var totalAndGroup = funcVarIn.split("~");
    
    totalGroup = totalAndGroup[0];
    totalAmount = parseInt(totalAndGroup[1], 10); 
    runningTotal = 0;   
    
    if (!ValidateNumeric(elemIn))
        return false;
    else
    {    
        for (i=0; i<document.forms.length; i++)
        {
            var frm = document.forms[i];
            for (j=0; j<frm.elements.length; j++)
            {
                var elem = frm.elements[j];
                
                if (elem.getAttribute("validators") != null)
                {
                    var validateFunctions = elem.getAttribute("validators").split(";");
                    
                    for (k=0; k<validateFunctions.length; k++)
                    {
                        if (validateFunctions[k] != "")
                        {
                            if (validateFunctions[k] == ("ValidateTotal:" + funcVarIn))
                            {
                                runningTotal += parseInt(elem.value, 10);
                            }
                        }
                    }
                }
            }
        }
        
        if (runningTotal != totalAmount)
        {
            var errMsgName = "err-" + elemIn.name;
            var errMsgDiv = document.getElementById(errMsgName);
        
            elemIn.style.color = '#FF0000';        
            errMsgDiv.innerHTML = "Total of values must be " + totalAmount;
            return false;
        }
        
        return true;
    }
}

function ValidateNumeric(elem)
{
    var tfld = elem.value;
    var exp = /^\d+$/ ;
    if (!tfld.match(exp))
    { 
        var errMsgName = "err-" + elem.name;
        var errMsgDiv = document.getElementById(errMsgName);
    
        elem.style.color = '#FF0000';        
        errMsgDiv.innerHTML = "Numeric values only.";
        return false;
    }
    else
    {
        return true;
    } 
}

function ValidateURL(elem)
{
    var tfld = elem.value;
    var exp = new RegExp("http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?");
    if (!tfld.match(exp))
    { 
        elem.style.color = '#FF0000';
        
        var errMsgName = "err-" + elem.name;
        var errMsgDiv = document.getElementById(errMsgName);
        
        errMsgDiv.innerHTML = "URL could not be verified.";
        return false;
    }
    else
    {
        return true;
    }
}

function ValidateDate(elem)
{
    var tfld = elem.value;
    var exp = /^([0]\d|[1][0-2])\/([0-2]\d|[3][0-1])\/([2][01]|[1][6-9])\d{2}(\s([0-1]\d|[2][0-3])(\:[0-5]\d){1,2})?$/ ;
    if (!tfld.match(exp))
    { 
        elem.style.color = '#FF0000';
        
        var errMsgName = "err-" + elem.name;
        var errMsgDiv = document.getElementById(errMsgName);
        
        errMsgDiv.innerHTML = "Please enter a valid date in MM/DD/YYYY format.";
        return false;
    }
    else
    {
        return true;
    }
}

function ValidateZip(elem)
{
    var tfld = elem.value;
    var exp = /^\d{5}(-\d{4})?$/ ;
    if (!tfld.match(exp))
    { 
        elem.style.color = '#FF0000';
        
        var errMsgName = "err-" + elem.name;
        var errMsgDiv = document.getElementById(errMsgName);
        
        errMsgDiv.innerHTML = "Postal code could not be verified.";
        return false;
    }
    else
    {
        return true;
    } 
    return false;
}

function ValidatePhone(elem)
{
    var tfld = elem.value;
    var exp = /^[2-9]\d{2}-\d{3}-\d{4}$/ ;
    if (!tfld.match(exp))
    { 
        elem.style.color = '#FF0000';
        
        var errMsgName = "err-" + elem.name;
        var errMsgDiv = document.getElementById(errMsgName);
        
        errMsgDiv.innerHTML = "Please enter phone number in XXX-XXX-XXXX format";
        return false;
    }
    else
    {
        return true;
    }
}

function ValidateSSN(elem)
{
    var tfld = elem.value;
    var exp = /^(?!000)([0-6]\d{2}|7([0-6]\d|7[012]))([ -]?)(?!00)\d\d\3(?!0000)\d{4}$/ ;
    if (!tfld.match(exp))
    { 
        elem.style.color = '#FF0000';
        
        var errMsgName = "err-" + elem.name;
        var errMsgDiv = document.getElementById(errMsgName);
        
        errMsgDiv.innerHTML = "SSN could not be verified.";
        return false;
    }
    else
    {
        return true;
    }
}

function ValidateCustom(elem, funcVar)
{
    var exp = new RegExp(funcVar);    
    var tfld = elem.value;
    if (!tfld.match(exp))
    { 
        elem.style.color = '#FF0000';
        
        var errMsgName = "err-" + elem.name;
        var errMsgDiv = document.getElementById(errMsgName);
        
        errMsgDiv.innerHTML = "Field could not be verified.";
        return false;
    }
    else
    {
        return true;
    }
}

function ValidateMaxLength(elem, funcVar)
{
    if (elem.value.length > funcVar)
    {
        elem.style.color = '#FF0000';
        
        var errMsgName = "err-" + elem.name;
        var errMsgDiv = document.getElementById(errMsgName);
        
        errMsgDiv.innerHTML = "Max Length: " + funcVar;
        return false;
    }
    else
    {
        return true;
    }
}

function ValidateMinLength(elem, funcVar)
{
    if (elem.value.length < funcVar)
    {
        elem.style.color = '#FF0000';
        
        var errMsgName = "err-" + elem.name;
        var errMsgDiv = document.getElementById(errMsgName);
        
        errMsgDiv.innerHTML = "Min Length: " + funcVar;
        return false;
    }
    else
    {
        return true;
    }
}

function ValidateRequired(elem, funcVar)
{   
    var i;
    
    for (i=0; i<document.forms.length; i++)
    {
        var frm = document.forms[i];
        for (j=0; j<frm.elements.length; j++)
        {
            var elemTmp = frm.elements[j];
            
            if (elemTmp.name == elem.name)
            {
                if (elemTmp.selectedIndex != null && elemTmp.selectedIndex >= 0 && elemTmp.value != "DNR-Required")
                {
                    return true;
                }
                
                if (elemTmp.checked != null && elemTmp.checked == true)
                {
                    return true;
                }
                
                if (elemTmp.type == "hidden" && elemTmp.value != null && elemTmp.value.length > 0)
                {
                    return true;
                }
            }
        }
    }  
    
    if ((elem.selectedIndex != null || elem.checked != null) && elem.type != "text" && elem.type != "textarea")
    {
        elem.style.color = '#FF0000';
        
        var errMsgName = "err-" + elem.name;
        var errMsgDiv = document.getElementById(errMsgName);
        
        errMsgDiv.innerHTML = "Required Field";
        return false;
    }                   
                
    if (elem.value.length <= 0)
    {
        elem.style.color = '#FF0000';
        
        var errMsgName = "err-" + elem.name;
        var errMsgDiv = document.getElementById(errMsgName);
        
        errMsgDiv.innerHTML = "Required Field";
        return false;
    }
    else
    {
        return true;
    }
}

// Extended Tooltip Javascript
// copyright 9th August 2002, 3rd July 2005
// by Stephen Chapman, Felgall Pty Ltd

// permission is granted to use this javascript provided that the below code is not altered
var DH = 0;var an = 0;var al = 0;var ai = 0;if (document.getElementById) {ai = 1; DH = 1;}else {if (document.all) {al = 1; DH = 1;} else { browserVersion = parseInt(navigator.appVersion); if ((navigator.appName.indexOf('Netscape') != -1) && (browserVersion == 4)) {an = 1; DH = 1;}}} function fd(oi, wS) {if (ai) return wS ? document.getElementById(oi).style:document.getElementById(oi); if (al) return wS ? document.all[oi].style: document.all[oi]; if (an) return document.layers[oi];}
function pw() {return window.innerWidth != null? window.innerWidth: document.body.clientWidth != null? document.body.clientWidth:null;}
function mouseX(evt) {if (evt.pageX) return evt.pageX; else if (evt.clientX)return evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft); else return null;}
function mouseY(evt) {if (evt.pageY) return evt.pageY; else if (evt.clientY)return evt.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); else return null;}
function popUp(evt,oi) {if (DH) {var wp = pw(); ds = fd(oi,1); dm = fd(oi,0); st = ds.visibility; if (dm.offsetWidth) ew = dm.offsetWidth; else if (dm.clip.width) ew = dm.clip.width; if (st == "visible" || st == "show") { ds.visibility = "hidden"; } else {tv = mouseY(evt) + 20; lv = mouseX(evt) - (ew/4); if (lv < 2) lv = 2; else if (lv + ew > wp) lv -= ew/2; if (!an) {lv += 'px';tv += 'px';} ds.left = lv; ds.top = tv; ds.visibility = "visible";}}}
