// validate.problemfound holds information to tell the caller if there was a problem with the client site validation
validate.problemfound = false;
validate.requiredFieldsErrorMessage = '';
function validate(formObj)
{
	if (formObj != null)
	{
		var formArray = new Array();
		var i, c;
		formArray = formObj.all;
		for( i = 0; i < formArray.length; i++ )
		{
			//alert(formArray[i].name)
			if (formArray[i].validatethis != null)
			{
			
				//formArray[i].style.background = 'white'
				var valReq = formArray[i].validatethis.split(";");
			
				for(c = 0; c < valReq.length; c++)
				{
			
					switch(valReq[c])
					{
					case "notnull":
						 validateNull(formArray[i])
						 break;
					case "ispassword":
						 validatePass(formArray[i])	
						break;
					case "isemail":
						 validateEmail(formArray[i])	
						break;
					case "validateSelectRadio":
						validateSelectRadio(formArray[i])
						break;
					case "isselected":
						validateSelect(formArray[i])
						break;
					case "ismedicareno":
						validateMedicare(formArray[i])
						break;	
					case "isdate":
						validateDate(formArray[i])
						break;
					case "ispcode":
						validatePCode(formArray[i])
						break;
					case "iscalendarday":
						validateDay(formArray[i])
						break;
					case "iscalendarmonth":
						validateMonth(formArray[i])
						break;
					case "isbirthyearvalid":
						validateBirthyear(formArray[i])
						break;
					case "ismedicareexpirevalid":
						validateMedicareExpireyear(formArray[i])
						break;
					case "isnumeric":
						validateNumeric(formArray[i])
						break;
					case "isalpha":
						validateAlpha(formArray[i])
						break;					 
					}		
				}
			}
		}
	}
	OutputError();
}

function OutputError()
{
	if (validate.requiredFieldsErrorMessage || '')
	{
	//	openAlert(szMsg,bOK,bYes,bNo,bCancel)validate.requiredFieldsErrorMessage
		alert(validate.requiredFieldsErrorMessage);
		validate.requiredFieldsErrorMessage = '';
		validate.problemfound=true;
	}
	else
	{
		validate.problemfound=false;
	}
}
function validateNumeric(obj)
{
	if (obj.value.length > 0)
		{
		var Chars = '0123456789';
		for (var i = 0; i < obj.value.length; i++)
		{
		if (Chars.indexOf(obj.value.charAt(i)) == -1)
			{
				validate.requiredFieldsErrorMessage += '- You can only enter numeric values (0-9) in ' + obj.name + '.\r';
				i = obj.value.length;
				obj.focus();
			}
		}
		}
}

function validateEmail(obj)
{
	
	if (obj.value.indexOf("@") == -1)
	{
		validate.requiredFieldsErrorMessage += '- Your username (email) must have an @ in it to be valid.\r'
	}
}
function validateAlpha(obj)
{
	if (obj.value.length > 0)
		{
		var Chars = '0123456789$%@#=?!~`';
		for (var i = 0; i < obj.value.length; i++)
		{
		if (Chars.indexOf(obj.value.charAt(i)) != -1)
			{
				validate.requiredFieldsErrorMessage += '- You can only enter Alphabetic characters in ' + obj.name + '.\r';
				i = obj.value.length;
				obj.focus();
			}
		}
		}
}
function validateMedicareExpireyear(obj)
{
	if (obj.value.length > 0)
		{
		var thedate = new Date( );
		var theyear = thedate.getYear( );
		if (obj.value < theyear)
			{
				validate.requiredFieldsErrorMessage += '- Medicare Card cannot expire in the past.\r';
				obj.focus();
			}
		}
}
function validateBirthyear(obj)
{
	if (obj.value.length > 0)
		{
		var thedate = new Date( );
		var theyear = thedate.getYear( );
		if (obj.value>theyear)
			{
				validate.requiredFieldsErrorMessage += '- Birth year cannot be in the future.\r';
				obj.focus();
			}
		}
}
function validateMonth(obj)
{
	if (obj.value.length > 0)
		{
		if (obj.value<1 || obj.value>12)
			{
				validate.requiredFieldsErrorMessage += '- The month must be between 1 and 12.\r';
				obj.focus();
			}
		}
}
function validateDay(obj)
{
	if (obj.value.length > 0)
		{
		if (obj.value<1 || obj.value>31)
			{
				validate.requiredFieldsErrorMessage += '- The day must be between 1 and 31.\r';
				obj.focus();
			}
		}
}
function validateDate(obj)
{
//	window.onerror=null // for all other strange errors
	var err=0
	a=obj.value
	if (a.length != 10) err=1
	b = a.substring(0, 2)// day
	c = a.substring(2, 3)// '/'
	d = a.substring(3, 5)// month
	e = a.substring(5, 6)// '/'
	f = a.substring(6, 10)// year
	
	if(isNaN(b) || isNaN(d) || isNaN(f)){ err = 8}

	//basic error checking
	if (b<1 || b>31) err = 2
	if (c != '/') err = 3
	if (d<1 || d>12) err = 4
	if (e != '/') err = 3
	if (f<2000) err = 5
	
	//advanced error checking

	// months with 30 days
	if (b==4 || b==6 || b==9 || b==11){
		if (d==31) err=6
	}

	// february, leap year
	if (d==2){
		// feb
		var g=parseInt(f/4)
		if (isNaN(g)) {
			err=1
		}

		if (b>29) err=6
		if (b==29 && ((f/4)!=parseInt(f/4))) err=7
	}

	switch (err)
	{
	
		case 1,3:
			validate.requiredFieldsErrorMessage += 'Date must be in DD/MM/YYYY format for ' + obj.name + '.\r';
			break;
		case 2:
			validate.requiredFieldsErrorMessage += '- The day must be between 1 and 31 for ' + obj.name + '.\r';
			break;
		case 4:
			validate.requiredFieldsErrorMessage += '- The month must be between 1 and 12 for ' + obj.name + '.\r';
			break;
		case 5:
			validate.requiredFieldsErrorMessage += '- Year must be greater than 2000 for ' + obj.name + '.\r';
			break;
		case 5:
			validate.requiredFieldsErrorMessage += '- The month you entered only has 30 days for ' + obj.name + '.\r';
			break;
		case 6:
			validate.requiredFieldsErrorMessage += '- February must have 29 days or less for ' + obj.name + '.\r';
			break;
		case 7:
			validate.requiredFieldsErrorMessage += '- The month you entered is February and has 28 days for ' + obj.name + '.\r';
			break;
		case 8:
			validate.requiredFieldsErrorMessage += '- DD,MM and YYYY must all be numeric for ' + obj.name + '.\r';
			break;
		//default:
		//	validate.requiredFieldsErrorMessage += '- Wrong input!\r';

	}


}


function validateMedicare(obj)
{
	var MD1,MD2,MD3,MD4,MD5,MD6,MD7,MD8,MD9,MDC
	if (obj.value.length > 0)
	{
		if ((obj.value.length != 10) || (SearchForPatient.txtMedRefNo.value == ''))
		{
			validate.requiredFieldsErrorMessage += 'Medicare number must be 10 digits and Reference number must be entered.\r';
			obj.focus();
		}
		else
		{
			MD1 = parseInt(obj.value.substr(0,1));
			MD2 = parseInt(obj.value.substr(1,1));
			MD3 = parseInt(obj.value.substr(2,1));
			MD4 = parseInt(obj.value.substr(3,1));
			MD5 = parseInt(obj.value.substr(4,1));
			MD6 = parseInt(obj.value.substr(5,1));
			MD7 = parseInt(obj.value.substr(6,1));
			MD8 = parseInt(obj.value.substr(7,1));
			MD9 = parseInt(obj.value.substr(8,1));
			MDC = parseFloat(MD1 + (MD2 * 3) + (MD3 * 7) + (MD4 * 9) + MD5 + (MD6 * 3) + (MD7 * 7) + (MD8 * 9));
			MDC = MDC % 10;
			if (MDC != MD9)
			{
				validate.requiredFieldsErrorMessage += 'Medicare Number incorrect.  Please check and re-enter.\r';
				obj.focus();
			}
		}
	}
}

function validateNewMedicare(txtMedNo, txtMedNo2, txtMedNo3) 
{
	var MD1,MD2,MD3,MD4,MD5,MD6,MD7,MD8,MD9,MDC,TotalMedicareNo
	TotalMedicareNo = txtMedNo.value + txtMedNo2.value + txtMedNo3.value;
	if (TotalMedicareNo.value != '') 
	{
		if (TotalMedicareNo.length != 10) 
		{
			validate.requiredFieldsErrorMessage += 'Medicare number must be 10 digits.\r';
			txtMedNo.focus();
		}
		else
		{
			MD1 = parseInt(txtMedNo.value.substr(0,1));
			MD2 = parseInt(txtMedNo.value.substr(1,1));
			MD3 = parseInt(txtMedNo.value.substr(2,1));
			MD4 = parseInt(txtMedNo.value.substr(3,1));
			MD5 = parseInt(txtMedNo2.value.substr(0,1));
			MD6 = parseInt(txtMedNo2.value.substr(1,1));
			MD7 = parseInt(txtMedNo2.value.substr(2,1));
			MD8 = parseInt(txtMedNo2.value.substr(3,1));
			MD9 = parseInt(txtMedNo2.value.substr(4,1));
			MDC = parseFloat(MD1 + (MD2 * 3) + (MD3 * 7) + (MD4 * 9) + MD5 + (MD6 * 3) + (MD7 * 7) + (MD8 * 9));
			MDC = MDC % 10;
			if (MDC != MD9)
			{
				validate.requiredFieldsErrorMessage += 'Medicare Number incorrect.  Please check and re-enter.\r';
				txtMedNo.focus();
			}
		}
	}
	OutputError();
}


function validateSelect(obj)
{
	if (obj.value == "Please Select")
	{
		//alert(obj.name)
		if (obj.errormsg != null)
		{
			var errormsg = obj.errormsg
		}
		else
		{
			var errormsg = obj.name
		}
		validate.requiredFieldsErrorMessage += '- Please select a ' + errormsg + '.\r';
		obj.focus();
	}
}

function validateSelectRadio(obj)
{
	myOption = -1;

	var myColl = document.all(obj.name)

	for (i=0; i < myColl.length; i++) 
	{
		if (myColl[i].checked) 
		{
			myOption = i;
		}
	}
	if (myOption == -1) 
	{
		validate.requiredFieldsErrorMessage += '- You must select one of the ' + obj.name + ' options.\r';
		obj.focus();
	}

}

function validatePass(obj)
{

	if ((obj.value.length < 5) || (obj.value.length > 10))
	{
		validate.requiredFieldsErrorMessage += '- Passwords must be greater than 5 characters and less than 10.\r';
		obj.focus();
	}

}

function validateNull(obj)
{


	if (!obj.value)
	{
		//alert(obj.name)
		if (obj.errormsg != null)
		{
			var errormsg = obj.errormsg
		}
		else
		{
			var errormsg = obj.name
		}
		validate.requiredFieldsErrorMessage += "- You did not enter a " + errormsg + ".\r";
		obj.focus();
	}
}





// *****************TABLE FUNCTIONS
function checkMaxSelected (select, maxSelected) {
  if (!select.storeSelections) {
    select.storeSelections = new Array(select.options.length);
    select.selectedOptions = 0;
  }
  for (var i = 0; i < select.options.length; i++) {
    if (select.options[i].selected && 
        !select.storeSelections[i]) {
      if (select.selectedOptions < maxSelected) {
        select.storeSelections[i] = true;
        select.selectedOptions++;
      }
      else {
        alert('Selection will be discarded as limit of ' + maxSelected 
+ ' is reached.');
        select.options[i].selected = false;
      }
    }
    else if (!select.options[i].selected &&
             select.storeSelections[i]) {
      select.storeSelections[i] = false;
      select.selectedOptions--;
    }
  }
} 


function overRow(rowID)
{
	var rowObject = document.all[rowID]
	rowObject.style.backgroundColor = 'beige'
	
}
function outRow(rowID)
{
	var rowObject = document.all[rowID]
	rowObject.style.backgroundColor = '#EAF5FF'
	
}
function clickRow(rowID)
{
	
    // the row id will be made up of the instructions of what to do (first 3 letters) followed by the record id
	var rowObject = document.all[rowID]
	
	var ss = rowObject.id
	var toDoString =  ss.slice(0,3)
	var theID = ss.slice(3)
	
	switch(toDoString)
	{
	case 'crs':
		var confRes
		confRes = confirm('Are you sure you want to register for this course?')
		if (confRes)
		{
			window.location.href = 'education.asp?task=registerforcourse&courseid=' + theID
		}
	break;
	case 'opn':
	
			openNewWindow('memeddetail.asp?courseid=' + theID, '',800, 600, 'yes')
	break;
	case 'att' :

			top.frameAttendentInfo.location.href = 'UntitledFrame-8.asp?memberid=' + theID + '&courseid=' + document.all('courseid').innerText
				
	}
}
	
	
function disable_right_click(e)

{

    var browser = navigator.appName.substring ( 0, 9 );

    var event_number = 0;

    if (browser=="Microsoft")

        event_number = event.button;

    else if (browser=="Netscape")

        event_number = e.which;

 

    if ( event_number==2 || event_number==3 )

        {

        alert ("Right click is disabled on this site.");

        return (false);

        }

 

    return (true);

}

 

function check_mousekey ()

{

    var mouse_key = 93;

    var keycode = event.keyCode;

 

    if ( keycode == mouse_key )

        alert ( "Mouse Key Is Disabled" );

}

 

function trap_page_mouse_key_events ()

{

    var browser = navigator.appName.substring ( 0, 9 );

 

    document.onmousedown = disable_right_click;

 

    if ( browser == "Microsoft" )

        document.onkeydown = check_mousekey;

    else if ( browser == "Netscape" )

        document.captureEvents( Event.MOUSEDOWN );

}

//trap_page_mouse_key_events();








