﻿function BuildURL(grid)
{

    var s = GetCheckedItems(grid);
    
    var ctrl = document.getElementById("subjectarea");
    
    var sURL = "";
    if (s == "")
        sURL = "BasicSurveyResults.aspx?SK=" + ctrl.value;
    else    
        sURL = "BasicSurveyResults.aspx?SK=" + ctrl.value + "&CK=" + s ;
    
    return sURL;
}

//------------------------------------------------------------
// Open the printable results window.
//
// 
function PrintCurrent(u)
{

    window.open(u,"","","");

}



function GetCheckedItems(grid) 
{ 
  try
   {
    
//        var grid = document.getElementById("Grid1");
        var bFirst = true;
        var param = "";
        
        var gridItem; 
        var itemIndex = 0; 
        while(gridItem = grid.Table.GetRow(itemIndex++)) 
        { 
            if(gridItem.Cells[6].Value) 
            { 
                if (bFirst)
                {
                    param = gridItem.Cells[5].Value;
                    bFirst = false;
                    
                }
                else
                {
                    param += "_" + gridItem.Cells[5].Value;
                }
            }            
        } 
        
        return param;
    } 
    catch(ex)
    {
        alert("Exception GetCheckedItems: " + ex.name + " " + ex.message);
    
    
    }
    return "";
} 

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function ltrim(stringToTrim) {
	return stringToTrim.replace(/^\s+/,"");
}
function rtrim(stringToTrim) {
	return stringToTrim.replace(/\s+$/,"");
}

function trimLeft(str) { 
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
	return str.substring(k, str.length);
}

function isWhitespace(charToCheck) {
	var whitespaceChars = " \t\n\r\f";
	return (whitespaceChars.indexOf(charToCheck) != -1);
}

function fixHtml(value)
{
    var s = value.replace('#%cLt#%','<').replace('>','>');
    
    while (s.indexOf('#%plus%#') > 0)
        s = s.replace('#%plus%#', '+');   
    return trimLeft(s);
}



//
// node select in the school treeview.  If they picked
// a school, then update the edit control and close
// the menu.
//
function SchoolTreeView_onNodeSelect(sender, eventArgs)
{
    try
    {
        var v = eventArgs.get_node().get_value();
        if (v == "School")
        {
          document.getElementById('txtDropDown').value = eventArgs.get_node().get_text(); 
          document.getElementById('DistrictKey').value = eventArgs.get_node().get_id();
          Menu1.hide(); 
        }
    }
    catch(ex)
    {
        alert("Exception SchoolTreeView_onNodeSelect: " + ex.name + "-" + ex.message);
    
    }    
}


function OnCheckChanged(item, columnIndex, checkbox)
{
  try
   {
        var ans = document.getElementById("ResponseCnt");
        var max = document.getElementById("MaxResponseCnt");
        
        var cnt = ans.value;
        
        MarkFormDirty();

        
        if (checkbox.checked)
        {
            if (cnt > max)
            {
                eventArgs.set_cancel(true);
            }
            else
            {
                cnt++;
            }
        }
        else
        {
            cnt--;
        }

        ans.value = cnt;
        UpdateProgress();
    }
    catch(ex)
    {
        alert("Exception OnCheckChanged: " + ex.name + " " + ex.message);
    }
   
   return true;
}

function MarkFormDirty()
{
    try
    {
    
        var ctrl = document.getElementById("FormIsDirty");
        ctrl.value = "1";
        ctrl = document.getElementById("ErrLabel");
        ctrl.innerText = "";

    }
    catch(ex)
    {
        alert("Exception OnCheckChanged: " + ex.name + " " + ex.message);
    
    }
    

}

function isEMailAddr(elem) 
{

    MarkFormDirty();
    var str = elem.value;
    if (str == "")
        return true;
        
    str = str.toLowerCase();
    if (str.indexOf("@") > 1) {
        var addr = str.substring(0, str.indexOf("@"));
        var domain = str.substring(str.indexOf("@") + 1, str.length);
        // at least one top level domain MinResponseCnt
        if (domain.indexOf(".") == -1) {
            alert("Verify the domain portion of the email address.");
            return false;
        }
        // parse address portion first, character by character
        for (var i = 0; i < addr.length; i++) {
            oneChar = addr.charAt(i).charCodeAt(0);
            // dot or hyphen not allowed in first position; dot in last
            if ((i == 0 && (oneChar == 45 || oneChar == 46))  || 
                (i == addr.length - 1 && oneChar == 46)) {
                alert("Verify the user name portion of the email address.");
                return false;
            }
            // acceptable characters (- . _ 0-9 a-z)
            if (oneChar == 45 || oneChar == 46 || oneChar == 95 || 
                (oneChar > 47 && oneChar < 58) || (oneChar > 96 && oneChar < 123)) {
                continue;
            } else {
                alert("Verify the user name portion of the email address.");
                return false;
            }
        }
        for (i = 0; i < domain.length; i++) {
            oneChar = domain.charAt(i).charCodeAt(0);
            if ((i == 0 && (oneChar == 45 || oneChar == 46)) || 
                ((i == domain.length - 1  || i == domain.length - 2) && oneChar == 46)) {
                alert("Verify the domain portion of the email address.");
                return false;
            }
            if (oneChar == 45 || oneChar == 46 || oneChar == 95 || 
                (oneChar > 47 && oneChar < 58) || (oneChar > 96 && oneChar < 123)) {
                continue;
            } else {
                alert("Verify the domain portion of the email address.");
                return false;
            }
        }
        return true;
    }
    alert("The email address may not be formatted correctly. Please verify.");
    return false;
}

 
//
// node select in the school treeview.  If they picked
// a school, then update the edit control and close
// the menu.
//
function SchoolTreeView_onNodeSelect(sender, eventArgs)
{
    try
    {
        var v = eventArgs.get_node().get_value();
        if (v == "School")
        {
          document.getElementById('txtDropDown').value = eventArgs.get_node().get_text(); 
          document.getElementById('DistrictKey').value = eventArgs.get_node().get_id();
          Menu1.hide(); 
        }
    }
    catch(ex)
    {
        alert("Exception SchoolTreeView_onNodeSelect: " + ex.name + "-" + ex.message);
    
    }    
}


//
// update question progress.
//
    function UpdateProgress()
    {
        try
        {
            var ctrlTot = document.getElementById("QuestionTotal");
            var ctrlResp = document.getElementById("ResponseCnt");
            var ctrlMin = document.getElementById("MinResponseCnt");
            var ctrlMax = document.getElementById("MaxResponseCnt");
            
            var cnt = parseInt(ctrlResp.value);
            var tot = parseInt(ctrlTot.value);
            var min = parseInt(ctrlMin.value);
            var max = parseInt(ctrlMax.value);
            var s = "";

            if (cnt > max)
            {
                var many = cnt - max;
                // exceeded count
            
                s = "You have exceeded the maximum number of Topic Statements allowed. Please deselect at least " + many.toString() + " Topic Statements for a valid submittal.";
                
            }
            else if (cnt == max)
            {
                // complete
                s = "You have reached the maximum number of selections allowed.  Please click submit if you are finished.";            
            }
            else if (cnt < min)
            {
                // less then max
                var more = min - cnt;
                s = "You have selected " + cnt.toString() + " of the required " + min.toString() + " Topic Statements for a valid submittal. Please select " + more.toString() + " more Topic Statements.";
//                s = "You have answered " + cnt.toString() + " of the required " + min.toString() + " answers for a valid survey.  You have to answer " + more.toString() + " more questions.";                   
            
            }
            else
            {
                var more = max - cnt;
                s = "You have selected " + cnt.toString() + " Topic Statements. You may select up to " + more.toString() + " more if you wish.";
                
            
            }
            
            
            var p = document.getElementById("Progress");
            p.value = s;
        }
        catch(ex)
        {
            alert("Exception UpdateProgress: " + ex.name + "-" + ex.message);
        }    
    }
    
    function BeforeNodeChange(sender,eventArgs)
    {
//        try
//        {
//            eventArgs.set_cancel(true);
//            var x = eventArgs.get_cancel();
//            eventArgs.set_cancel(true);
//            
//        }
//        catch(ex)
//        {
//            alert("Exception BeforeNodeChange: " + ex.name + "-" + ex.message);
//        }
    
    }
    
    function NodeCheckChange(sender,eventArgs)
    {
       
       try
       {
            var c = eventArgs.get_node();
            var ans = document.getElementById("ResponseCnt");
            var max = document.getElementById("MaxResponseCnt");
            
            var cnt = ans.value;
            
            
            if (c.get_checked())
            {
                if (cnt > max)
                {
                    eventArgs.set_cancel(true);
                }
                else
                {
                    cnt++;
                }
            }
            else
            {
                cnt--;
            }

            ans.value = cnt;
            UpdateProgress();
        }
        catch(ex)
        {
            alert("Exception NodeCheckChange: " + ex.name + " " + ex.message);
        }
    }
    
   
