﻿function VerifyNewCamperPerCamp(camp)
{
    var inp = document.getElementsByTagName("input");
    var fname = inp[4].value;
    var lname = inp[5].value;
    var sel = document.getElementsByTagName("select");
    var mon = sel[0].selectedIndex;
    var day = sel[1].selectedIndex;
    var yr = sel[2].value;
    var date = mon + "/" + day + "/" + yr;
    
    var xmlhttp = CreateXMLHttp();
    
    var response;
    var request;
    
    request = "<?xml version='1.0' encoding='utf-8'?>";
    request += "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>";
    request += "<soap:Body>";
    request += "<VerifyNewCamperPerCamp xmlns='http://www.campwave.net/'>";
    request += "<CampUID>" + camp + "</CampUID>";
    request += "<FirstName>" + fname + "</FirstName>";
    request += "<LastName>" + lname + "</LastName>";
    request += "<DOB>" + date + "</DOB>";
    request += "</VerifyNewCamperPerCamp>";
    request += "</soap:Body>";
    request += "</soap:Envelope>";
  
    if(!xmlhttp == false)
    {               
        xmlhttp.open("POST", "CamperServices.asmx", false);
        xmlhttp.setRequestHeader("Content-type", "text/xml");  
        xmlhttp.send(request);
        
        var i = 0;
        
        setTimeout("i = 5", 2000);
        
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        response = xmlhttp.responseText;
    }
       
    if(response.search("<VerifyNewCamperPerCampResult>1</VerifyNewCamperPerCampResult>") > -1)
    {
        return true;
    }
    else
    {
        alert("A camper with these credentials has already registered for this camp.");
        return false;
    }
}

function ValidateLookup(camp)
{
    var tbl = document.getElementById("tblCustomerLookup");
    var tr = tbl.getElementsByTagName("tr");
    
    var td1 = tr[0].getElementsByTagName("td");
    var td2 = tr[1].getElementsByTagName("td");
    var td3 = tr[2].getElementsByTagName("td");
    
    var inp1 = td1[1].getElementsByTagName("input");
    var inp2 = td2[1].getElementsByTagName("input");
    var sel = td3[1].getElementsByTagName("select");
    
    if(inp1[0].value == "")
    {
        alert("Please enter your first name.");
        inp1[0].focus();
        return false;
    }
    if(inp2[0].value == "")
    {
        alert("Please enter your last name.");
        inp2[0].focus();
        return false;
    }
    if((sel[0].value == "--")||(sel[1].value == "--")||(sel[2].value == "--"))
    {
        alert("Please enter a valid date of birth.");
        return false;
    }
    if(VerifyNewCamperPerCamp(camp))
    {
        return true;
    }
    else
    {
        return false;
    }
}

function ValidatePersonalInfo(tablename)
{
    if(!ValidateStaticFields("ctl00_ContentPlaceHolder1_tblCamperInfo"))
    {
        return false;
    }
    
    var tbl = document.getElementById(tablename);
    var tr = tbl.getElementsByTagName("tr");
    
    for(var i =0; i < tr.length; i++)
    {
        var inp = tr[i].getElementsByTagName("input");
        var txt = tr[i].getElementsByTagName("textarea");
        var spa = tr[i].getElementsByTagName("span");
       
        var type = "";
        var selectedCount = 0;
        
        if(spa.length >= 1 && spa[0].innerText.charAt(0) == "*")
        {
            for(var x =0; x < inp.length; x++)
            {
                if(inp[x].type == "text")
                {
                    type = "t";
                    if(inp[x].value == "")
                    {
                        alert("Please enter values for all required fields.");
                        inp[x].focus();
                        return false;
                    }
                }
                if(inp[x].type == "checkbox")
                {
                    type = "c";
                    if(inp[x].checked)
                    {
                        selectedCount++;
                    }
                }
            }
            
            for(var x =0; x < txt.length; x++)
            {
                if(txt[x].value == "")
                {
                    alert("Please enter values for all required fields.");
                    txt[x].focus();
                    return false;
                }
        
                if(type == "c")
                {
                    if(selectedCount == 0)
                    {
                        alert("Please enter values for all required fields.");
                        return false;
                    }
                }
            }
        }
    }
}

function ValidateStaticFields(tablename)
{    
    var tbl = document.getElementById(tablename);
    var tr = tbl.getElementsByTagName("tr");
    
    for(var i =0; i < tr.length; i++)
    {
        var inp = tr[i].getElementsByTagName("input");
        var txt = tr[i].getElementsByTagName("textarea");
        var lbl = tr[i].getElementsByTagName("label");
       
        var type = "";
        var selectedCount = 0;
        
        if(lbl.length >= 1 && lbl[0].innerText.charAt(0) == "*")
        {
            for(var x =0; x < inp.length; x++)
            {
                if(inp[x].type == "text")
                {
                    type = "t";
                    if(inp[x].value == "")
                    {
                        alert("Please enter values for all required fields.");
                        inp[x].focus();
                        return false;
                    }
                }
                if(inp[x].type == "checkbox")
                {
                    type = "c";
                    if(inp[x].checked)
                    {
                        selectedCount++;
                    }
                }
            }
            
            for(var x =0; x < txt.length; x++)
            {
                if(txt[x].value == "")
                {
                    alert("Please enter values for all required fields.");
                    txt[x].focus();
                    return false;
                }
        
                if(type == "c")
                {
                    if(selectedCount == 0)
                    {
                        alert("Please enter values for all required fields.");
                        return false;
                    }
                }
            }
        }
    }
    
    return true;
}

function ValidateSessions()
{
    var tbl = document.getElementsByTagName("table");
    var chk = tbl[1].getElementsByTagName("input");
    
    var selected = false;
    
    for(var i =0; i < chk.length; i++)
    {
        if(chk[i].checked)
        {
            selected = true;
        }
    }
    
    if(!selected)
    {
        alert("Please select at least one camp session.");
        return false;
    }
}

function ValidateOptions()
{
    var tbl = document.getElementsByTagName("table");
    var cont = tbl[1].getElementsByTagName("table");
    
    var selectedCount = 0;
    
    for(var i =0; i < cont.length; i++)
    {
        var rad = cont[i].getElementsByTagName("input");
        
        for(var x=0; x < rad.length; x++)
        {
            if(rad[x].checked)
            {
                selectedCount = selectedCount + 1;
            }
        }
    }
    
    if(selectedCount != cont.length)
    {
        alert("Please select an option for every session listed.");
        return false;
    }
}

function CreateXMLHttp()
{
    var xmlhttp = false;
    
    /*@cc_on @*/
    /*@if (@_jscript_version >= 5)
    // JScript gives us Conditional compilation, we can cope with old IE versions.
    // and security blocked creation of the objects.
    try 
    {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } 
    catch (e) 
    {
        try 
        {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } 
        catch (E) 
        {
            xmlhttp = false;
        }
    }
    @end @*/
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') 
    {
        try 
        {
	        xmlhttp = new XMLHttpRequest();
        } 
        catch (e) 
        {
	        xmlhttp=false;
        }
    }
    if (!xmlhttp && window.createRequest) 
    {
        try 
        {
	        xmlhttp = window.createRequest();
        } 
        catch (e) 
        {
	        xmlhttp=false;
        }
    }
    
    if(!xmlhttp)
    {
        alert('Your browser does not support JavaScript.');
    }
    
    return xmlhttp;
}

function extractNumber(obj, decimalPlaces, allowNegative)
{
	var temp = obj.value;
	
	// avoid changing things if already formatted correctly
	var reg0Str = '[0-9]*';
	if (decimalPlaces > 0) {
		reg0Str += '\\.?[0-9]{0,' + decimalPlaces + '}';
	} else if (decimalPlaces < 0) {
		reg0Str += '\\.?[0-9]*';
	}
	reg0Str = allowNegative ? '^-?' + reg0Str : '^' + reg0Str;
	reg0Str = reg0Str + '$';
	var reg0 = new RegExp(reg0Str);
	if (reg0.test(temp)) return true;

	// first replace all non numbers
	var reg1Str = '[^0-9' + (decimalPlaces != 0 ? '.' : '') + (allowNegative ? '-' : '') + ']';
	var reg1 = new RegExp(reg1Str, 'g');
	temp = temp.replace(reg1, '');

	if (allowNegative) {
		// replace extra negative
		var hasNegative = temp.length > 0 && temp.charAt(0) == '-';
		var reg2 = /-/g;
		temp = temp.replace(reg2, '');
		if (hasNegative) temp = '-' + temp;
	}
	
	if (decimalPlaces != 0) {
		var reg3 = /\./g;
		var reg3Array = reg3.exec(temp);
		if (reg3Array != null) {
			// keep only first occurrence of .
			//  and the number of places specified by decimalPlaces or the entire string if decimalPlaces < 0
			var reg3Right = temp.substring(reg3Array.index + reg3Array[0].length);
			reg3Right = reg3Right.replace(reg3, '');
			reg3Right = decimalPlaces > 0 ? reg3Right.substring(0, decimalPlaces) : reg3Right;
			temp = temp.substring(0,reg3Array.index) + '.' + reg3Right;
		}
	}
	
	obj.value = temp;
}

function blockNonNumbers(obj, e, allowDecimal, allowNegative)
{
	var key;
	var isCtrl = false;
	var keychar;
	var reg;
		
	if(window.event) {
		key = e.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(e.which) {
		key = e.which;
		isCtrl = e.ctrlKey;
	}
	
	if (isNaN(key)) return true;
	
	keychar = String.fromCharCode(key);
	
	// check for backspace or delete, or if Ctrl was pressed
	if (key == 8 || isCtrl)
	{
		return true;
	}

	reg = /\d/;
	var isFirstN = allowNegative ? keychar == '-' && obj.value.indexOf('-') == -1 : false;
	var isFirstD = allowDecimal ? keychar == '.' && obj.value.indexOf('.') == -1 : false;
	
	return isFirstN || isFirstD || reg.test(keychar);
}
