﻿// JScript File
function validateSessions(sessCode, thisDate, thisStart, thisEnd)
{
    
    //going to pass the function the date, start and end times for each session
    
    var aDate = new Date(thisDate);
    var aStart = new Date(thisStart);
    var aEnd = new Date(thisEnd);
    
    var sCode = null;
    var sDate = new Date();
    var sStart = new Date();
    var sEnd = new Date();
    var myform = document.forms['aspnetForm'];
	if (!myform) {
		myform = document.aspnetForm;
	}
    var iSelf = 0;    

    //formatting time for alert output    
    var hoursStart = aStart.getHours()
    var minutesStart = aStart.getMinutes()

    var suffix = "AM";
    if (hoursStart >= 12) {
    suffix = "PM";
    hoursStart = hoursStart - 12;
    }
    if (hoursStart == 0) {
    hoursStart = 12;
    }

    if (minutesStart < 10)
    minutesStart = "0" + minutesStart
    
    var StartDateTime = (" " + hoursStart + ":" + minutesStart + " " + suffix + " ");
    
    var hoursEnd = aEnd.getHours()
    var minutesEnd = aEnd.getMinutes()

    var suffix2 = "AM";
    if (hoursEnd >= 12) {
    suffix2 = "PM";
    hoursEnd = hoursEnd - 12;
    }
    if (hoursEnd == 0) {
    hoursEnd = 12;
    }

    if (minutesEnd < 10)
    minutesEnd = "0" + minutesEnd
    
    var EndDateTime = (" " + hoursEnd + ":" + minutesEnd + " " + suffix2 + " ");
    //end format date time
    
    //if checkbox is being unchecked dont run and set var to id ourself
    for (i = 0; i < myform.elements.length; i++){
        
        if (myform.elements[i].type == "checkbox"){
            if (sessCode == myform.elements[i].value) {
                //we found ourselves
                //if we are unchecked bail out
                if (myform.elements[i].checked == false) {
                    return;
                }
                //if we stay in the game, save ourselves
                iSelf = i;
            }
        }   
    }
    //loop thru all checkboxes and uncheck if have more than 1 that will overlap
    for (i = 0; i < myform.elements.length; i++){
        
        if (myform.elements[i].type == "checkbox"){
            //is checkbox checked
            if (myform.elements[i].checked == true){
                //check other checkboxs with matching dates, to see if any are already checked
                
                //determine current element value so we can determine which corresponding hidden date to check
                sCode = myform.elements[i].value;
                //get dates for hidden form fields with related name
                sDate = new Date(myform.elements[sCode + "date"].value);
                if (sessCode != sCode){
                    if (Date(sDate) == Date(thisDate)){
                    // if date matches our target date continue, otherwise, we're done
                        
                        //get other dates for hidden form fields with related name                
                        sStart = new Date(myform.elements[sCode + "sTime"].value);
                        sEnd = new Date(myform.elements[sCode + "eTime"].value);
                        // if sStart <= thisEnd then we can't do this session, uncheck current checkbox
                        if ((aStart <= sEnd) && (aEnd >= sStart)){
                            alert("You may only select one Educational session between the hours of \"" + StartDateTime + " and " + EndDateTime + "\"");
                            myform.elements[iSelf].checked = false;
                            //break;
                        }
                    }
                }                
            }            
        }
    }
}
function highlightSelection(thisCBox, thisTimeID, thistitleID)
{
	if (document.getElementById(thisCBox).checked == true){
		document.getElementById(thisTimeID).style.color = "White";		
		document.getElementById(thistitleID).style.color = "White";		
	}
	else{
		document.getElementById(thisTimeID).style.color = "Black";		
		document.getElementById(thistitleID).style.color = "Black";		
	}
}

function sameSession(thisCode, span1, span1display, span2, span2display, span3, span3display, span4, span4display)
{
	if (document.getElementById(thisCode).checked == true){
		document.getElementById(span1).style.display = span1display;
		document.getElementById(span2).style.display = span2display;
		document.getElementById(span3).style.display = span3display;
		document.getElementById(span4).style.display = span4display;		
	}
	else{
		document.getElementById(span1).style.display = "none";
		document.getElementById(span2).style.display = "none";
		document.getElementById(span3).style.display = "none";
		document.getElementById(span4).style.display = "none";
	}
}

function switchSessions(thisCode, showRow, showRow2, checkSession, hideRow, hideRow2, uncheckSession)
{
	var NeedReselect = false;
	if (document.getElementById(uncheckSession).checked == true){
		NeedReselect = true;
	}
	if (document.getElementById(thisCode).checked == true){
		document.getElementById(showRow).style.display = "block";
		document.getElementById(showRow2).style.display = "block";
		document.getElementById(checkSession).checked = true;
		document.getElementById(checkSession).disabled = true;
		document.getElementById(hideRow).style.display = "none";
		document.getElementById(hideRow2).style.display = "none";
		document.getElementById(uncheckSession).checked = false;
	}
	else{
		document.getElementById(showRow).style.display = "none";
		document.getElementById(showRow2).style.display = "none";
		document.getElementById(checkSession).checked = false;
		document.getElementById(checkSession).disabled = false;
		document.getElementById(hideRow).style.display = "block";
		document.getElementById(hideRow2).style.display = "block";
		document.getElementById(uncheckSession).checked = NeedReselect;
	}
}
function validateCreditCardNumber(cardTypeCD, cardNumber)
{
	var validChars = "0123456789";
	var number = new Array(16); // number to validate

	// Remove non-digits
	var len = 0;
	for(var i = 0; i < cardNumber.length; i++)
	{
		var strChar = cardNumber.charAt(i);
		if(validChars.indexOf(strChar) > -1)
		{
			if(len == 16) return false; // number has too many digits
			number[len++] = parseInt(strChar);
		}
	}

	// Validate based on card type, first it tests length, second tests prefix
	switch(cardTypeCD)
	{
		case 'MC':
			if(len != 16)
				return false;
			if(number[0] != 5 || number[1] == 0 || number[1] > 5) 
				return false;
			break;
    
		case 'VI':
			if(len != 16 && len != 13) 
				return false;
			if(number[0] != 4) 
				return false;
			break;
	}

	// Use Luhn Algorithm to validate
	var sum = 0;
	for(var i = len - 1; i >= 0; i--)
	{
		if(i % 2 == len % 2)
		{
			var n = number[i] * 2;
			sum += parseInt(n/10) + parseInt(n%10);
		}
		else
			sum += number[i];
	}
	return (sum % 10 == 0);	
}

function validate_characters(xname){
		var xitem
		xitem = xname.value
		if (xitem != ""){
			if (!(/^[0-9A-Za-z\s\-\(\)\.\'\"\,\_]{1,}$/.test(xitem)))
				{
				alert("Invalid character used in Form.");
				xname.focus();
				document.getElementById("buttondiv").style.visibility = 'visible';
				document.getElementById("buttongonediv").style.visibility = 'hidden';
				}
			}
	}
function validate_username(xname){
		var xitem
		xitem = xname.value
		if (xitem != ""){
			if (!(/^[0-9A-Za-z\s]{1,}$/.test(xitem)))
				{
				alert("Invalid character used in Form.");
				xname.focus();
				document.getElementById("buttondiv").style.visibility = 'visible';
				document.getElementById("buttongonediv").style.visibility = 'hidden';
				}
			}
	}

function validate_address_characters(xname){
		var xitem
		xitem = xname.value
		if (xitem != ""){
			if (!(/^[0-9A-Za-z\s\-\(\)\.\#\'\"\,\_]{1,}$/.test(xitem)))
				{
				alert("Invalid character used in Form.");
				xname.focus();
				document.getElementById("buttondiv").style.visibility = 'visible';
				document.getElementById("buttongonediv").style.visibility = 'hidden';
				}
			}
	}
	

function phoneNumberBlur(textbox)
{
	
	var thistextbox = document.getElementById(textbox);
	thistextbox.value = thistextbox.value.trim();
	if ((thistextbox.value != "") && (thistextbox.value.length == 10)){
		var phone = thistextbox.value.replace('(','').replace(')','').replace(/-/g,'').replace(/ /g,'');
		if (phone != '')
		{
			phone = "(" + phone.substring(0,3) + ") " + phone.substring(3,6) + '-' + phone.substring(6);
		}
		thistextbox.value = phone;
	}
	else{
		//do nothing
	}
}