function popup(url, name, width, height, scroll)
{

	// screen resolution
	var scrheight = screen.availHeight;
	var scrwidth = screen.availWidth;
	
	// where to position the window
	var toppos = scrheight * 0.1;
	var leftpos = scrwidth * 0.1;
	
	// create the window command
	command = "aWindow=window.open('" + url + "', '" + name +"', 'width=" + width + ",height=" + height + ",scrollbars=" + scroll + ",toolbar=no,menubar=no,top=10,left=10,screenX=10,screenY=10,resizable')";
	// execute the command
	eval(command);
}

function updateAlert()
{
	alert("The record has been updated successfully!");
	return true;
}

function deleteConfirm() 
{
	if (confirm ('Do you Really want to delete the record?\nClick OK to continue OR cancel to reconsider...'))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function enrolment_action() 
{
	if (confirm ('Are you sure you have entered all the data into your internal system?\nClick OK to continue OR cancel to reconsider...'))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function isValidEmail(s) 
{
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(s))
	{
		return true;
	}
	return false;
}

function checkVenue()
{
	var name = document.venues.name.value;
		
	if (name == "")
	{
		alert ("This form requires at least the venue name.\n Please enter in the venue name!");	
		document.venues.name.focus();
		return false;
	}
	
	
}

function checkSession()
{
	var courseid = document.sessions.courseid.value;
	var venueid = document.sessions.venueid.value;
	var tutorid = document.sessions.tutorid.value;
	var code = document.sessions.code.value;
	var no_sessions = document.sessions.no_sessions.value;
	var times = document.sessions.times.value;
	var price = document.sessions.price.value;
	
	if (courseid == "0")
	{
		alert ("For this session, you MUST enter a course!");	
		document.sessions.courseid.focus();
		return false;
	}
	
	if (venueid == "0")
	{
		alert ("For this session, you MUST enter a venue!");	
		document.sessions.venueid.focus();
		return false;
	}
	
	if (tutorid == "0")
	{
		alert ("For this session, you MUST enter a tutor!");	
		document.sessions.tutorid.focus();
		return false;
	}
	
	if (code == "")
	{
		alert ("For this session, you MUST enter a course code!");	
		document.sessions.code.focus();
		return false;
	}
	
	if (times == "")
	{
		alert ("For this session, you MUST enter a session time!");	
		document.sessions.times.focus();
		return false;
	}
	
	if (no_sessions == "")
	{
		alert ("For this session, you MUST enter the number of sessions!");	
		document.sessions.no_sessions.focus();
		return false;
	}
	
	if (price == "")
	{
		alert ("For this session, you MUST enter a price");	
		document.sessions.price.focus();
		return false;
	}
	
	
}

function checkTutors()
{
	var fname = document.tutors.fname.value;
	var lname = document.tutors.lname.value;
		
	if (fname == "")
	{
		alert ("This form requires at least the tutors full name.\n Please enter in the first name!");	
		document.tutors.fname.focus();
		return false;
	}
	
	if (lname == "")
	{
		alert ("This form requires at least the tutors full name.\n Please enter in the surname!");	
		document.tutors.lname.focus();
		return false;
	}
	
	
}

function testsearch()
{
	var search = document.coursesearch.search.value
		
	if (search == "")
	{
		alert ("Please enter a course to search in the text area provided.");	
		document.coursesearch.search.focus();
		return false;
	}
	
	
}

function subscribe_check()
{

	var fname = document.subscribe.fname.value;
	var lname = document.subscribe.lname.value;
	var address = document.subscribe.address1.value;
	var suburb = document.subscribe.suburb.value;
	var postcode = document.subscribe.postcode.value;
	var mobile = document.subscribe.mobile.value;
	var email = document.subscribe.email.value;
	
	if (fname == "")
	{
		alert ("Please enter your first name.");	
		document.subscribe.fname.focus();
		return false;
	}
	
	if (lname == "")
	{
		alert ("Please enter your surname.");	
		document.subscribe.lname.focus();
		return false;
	}
	
	if (address == "")
	{
		alert ("Please enter your address.");	
		document.subscribe.address1.focus();
		return false;
	}
	
	if (suburb == "")
	{
		alert ("Please enter your suburb.");	
		document.subscribe.suburb.focus();
		return false;
	}
	
	if (postcode == "")
	{
		alert ("Please enter your postcode.");	
		document.subscribe.postcode.focus();
		return false;
	}
	
	if (mobile == "")
	{
		alert ("Please enter your mobile phone number.");	
		document.subscribe.mobile.focus();
		return false;
	}
	
	if (email == "")
	{
		alert ("Please enter your email address.");	
		document.subscribe.email.focus();
		return false;
	}


}

function checkCourse()
{
	var name = document.courses.name.value;
	var description = document.courses.description.value;
	var subcategory = document.courses.subcategory.value;
	var gstyes = document.courses.gstfree[0].value;
	var gstno = document.courses.gstfree[1].value;
	var vetyes = document.courses.vetab[0].value;
	var vetno = document.courses.vetab[1].value;
	var onlineyes = document.courses.online_course[0].value;
	var onlineno = document.courses.online_course[1].value;
		
	if (name == "")
	{
		alert ("Please enter the course name!");	
		document.courses.name.focus();
		return false;
	}
	
	if (description == "")
	{
		alert ("Please enter a description for the course!");	
		document.courses.description.focus();
		return false;
	}
	
	if (gstyes == "" && gstno == "")
	{
		alert ("You must enter the GST status of this course!");	
		document.courses.gstyes.focus();
		return false;
	}
	
	if (vetyes == "" && vetno == "")
	{
		alert ("You must select if the course is accredited!");	
		document.courses.vetyes.focus();
		return false;
	}
	
	if (onlineyes == "" && onlineno == "")
	{
		alert ("You must select if the course is an online course!");	
		document.courses.onlineyes.focus();
		return false;
	}
	
	
	
}

function feedback_email()
{
	var name = document.feedback.name.value;
	var email = document.feedback.email.value;
		
	if (name == "")
	{
		alert ("Please enter your name.");	
		document.feedback.name.focus();
		return false;
	}
	
	if (email == "")
	{
		alert ("Please enter an email address.");	
		document.feedback.email.focus();
		return false;
	}
	
	if (!isValidEmail(email))
	{
		alert("Invalid E-Mail Address, Please re-enter.");
		document.feedback.email.focus();
		return false;
	}
	
}

function course_auto_drop_down() 
{ 
i=document.courses.category.selectedIndex; 
cat_val=document.courses.category.options[i].value; 
location.href='course-manage.php?category='+cat_val; 
} 

function student_auto_drop_down() 
{ 
i=document.resources.category1.selectedIndex; 
cat_val=document.resources.category1.options[i].value; 
location.href='resources-manage.php?type=2&category1='+cat_val; 
} 

function tutor_auto_drop_down() 
{ 
i=document.resources.category1.selectedIndex; 
cat_val=document.resources.category1.options[i].value; 
location.href='resources-manage.php?type=1&category1='+cat_val; 
} 

function enrolment_step1_checker()
{
	var fname = document.enrolment_step1.fname.value;
	var lname = document.enrolment_step1.lname.value;
	var address1 = document.enrolment_step1.address1.value;
	var suburb = document.enrolment_step1.suburb.value;
	var postcode = document.enrolment_step1.postcode.value;
	var state = document.enrolment_step1.state.value;
	var h_phone = document.enrolment_step1.h_phone.value;
	var w_phone = document.enrolment_step1.w_phone.value;
	var mobile = document.enrolment_step1.mobile.value;
	var email = document.enrolment_step1.email.value;
	var male = document.enrolment_step1.gender[0].value;
	var female = document.enrolment_step1.gender[0].value;
	var college_yes = document.enrolment_step1.college_member[0].checked;
	var college_no = document.enrolment_step1.college_member[1].checked;
	var con_austudy = document.enrolment_step1.con_austudy.value;
	var con_seniorcard = document.enrolment_step1.con_seniorcard.value;
	var con_fulltimestudent = document.enrolment_step1.con_fulltimestudent.value;
	var con_pension = document.enrolment_step1.con_pension.value;
	var con_austudyl = document.enrolment_step1.con_austudy.length;
	var con_seniorcardl = document.enrolment_step1.con_seniorcard.length;
	var con_fulltimestudentl = document.enrolment_step1.con_fulltimestudent.length;
	var con_pensionl = document.enrolment_step1.con_pension.length;
	
	if (fname == "")
	{
		alert ("Please enter your first name.");	
		document.enrolment_step1.fname.focus();
		return false;
	}
	
	if (lname == "")
	{
		alert ("Please enter your surname.");	
		document.enrolment_step1.lname.focus();
		return false;
	}
	
	if (male == "" && female == "")
	{
		alert ("Please select your gender.");	
		document.enrolment_step1.gender[0].focus();
		return false;
	}
	
	if (address1 == "")
	{
		alert ("Please enter your address!");	
		document.enrolment_step1.address1.focus();
		return false;
	}
	
	if (suburb == "")
	{
		alert ("Please enter your suburb!");	
		document.enrolment_step1.suburb.focus();
		return false;
	}
	
	if (state == "")
	{
		alert ("Please enter your state!");	
		document.enrolment_step1.state.focus();
		return false;
	}
	
	if (postcode == "")
	{
		alert ("Please enter your postcode!");	
		document.enrolment_step1.postcode.focus();
		return false;
	}
	
	if (isNaN(postcode))
	{
		alert ("Invalid postcode! Please re-enter!");	
		document.enrolment_step1.postcode.focus();
		return false;
	}

	if (h_phone == "" && w_phone == "" && mobile == "")
	{
		alert ("We require at least 1 phone contact method.");	
		document.enrolment_step1.h_phone.focus();
		return false;
	}
	
	if (isNaN(h_phone) || isNaN(w_phone) || isNaN(mobile))
	{
		alert ("Invalid contact number!\nPlease do not include spaces, hyphens or special characters");	
		document.enrolment_step1.h_phone.focus();
		return false;
	}
	
	if (email == "")
	{
		alert ("Please enter an email address.");	
		document.enrolment_step1.email.focus();
		return false;
	}
	
	if (!isValidEmail(email))
	{
		alert("Invalid E-Mail Address, Please re-enter.");
		document.enrolment_step1.email.focus();
		return false;
	}
	
	if (college_yes == false && college_no == false)
	{
		alert ("You must select would like to purchase college membership.");	
		document.enrolment_step1.college_member[0].focus();
		return false;
	}
	
	if (isNaN(con_austudy) || isNaN(con_pension) || isNaN(con_seniorcard))
	{
		if (con_austudy.length != 6 || con_pension.length != 6 || con_seniorcard.length != 6)
		{
			alert ("Invalid consession number!\nOnly Numbers are accepted, no spaces or alpha characters allowed.");	
			document.enrolment_step1.con_austudy.focus();
			return false;		
		}
	}
	
}

function enrolment_step2_checker()
{

		var card_number_1 = document.enrolment_form2.card_no_1.value;
		var card_number_2 = document.enrolment_form2.card_no_2.value;
		var card_number_3 = document.enrolment_form2.card_no_3.value;
		var card_number_4 = document.enrolment_form2.card_no_4.value;
		var cardholder_name = document.enrolment_form2.card_name.value;		
		var cardname = document.enrolment_form2.payment_method.value;
		var notifyyes = document.enrolment_form2.notify_events[0].checked;
		var notifyno = document.enrolment_form2.notify_events[1].checked;
		var selectedyear = document.enrolment_form2.year.options[document.enrolment_form2.year.selectedIndex].value;
		var selectedmonth = document.enrolment_form2.month.options[document.enrolment_form2.month.selectedIndex].value;
		var currentmonth = document.enrolment_form2.currentmonth.value;
		var currentyear = document.enrolment_form2.currentyear.value;
		
		if (cardname == "#")
		{
			alert ("You must select a credit card.");	
			document.enrolment_form2.payment_method.focus();
			return false;
		}
		
		if (cardholder_name == "")
		{
			alert ("You must put in the card holders name.");	
			document.enrolment_form2.card_name.focus();
			return false;
		}
		
		if (card_number_1 == "" || card_number_2 == "" || card_number_3 == "" || card_number_4 == "")
		{
			alert ("You must complete all the fields in the credit card form.");	
			document.enrolment_form2.card_no_1.focus();
			return false;
		}
			
		var card_number = card_number_1 + card_number_2 + card_number_3 + card_number_4;
				
		if (checkCreditCard(card_number, cardname) == false) {
			document.enrolment_form2.card_no_1.focus();
			return false
		}
					
		if (selectedmonth < currentmonth && selectedyear == currentyear){
			alert("Sorry, that card has already expired.");
			document.enrolment_form2.card_no.focus();
			return false;
		}
		
		if (notifyyes== false && notifyno == false)
		{
			alert ("Please answer if you wish to be notified of college courses and events.");	
			document.enrolment_form2.notify_events[0].focus();
			return false;
		}
		
}

/*

This routine checks the credit card number. The following checks are made:

Parameters:
            cardnumber           number on the card
            cardname             name of card as defined in the card list below

Author:     John Gardner
Date:       1st November 2003

*/

function checkCreditCard (cardnumber, cardname) { 
	
	
  var ccErrorNo = 0;
  var ccErrors = new Array ()

  ccErrors [0] = "No card selected, or unknown card type";
  ccErrors [1] = "No card number provided";
  ccErrors [2] = "Credit card number is in invalid format";
  ccErrors [3] = "Credit card number is invalid";
  ccErrors [4] = "Credit card number has an inappropriate number of digits";
		
			
  // Array to hold the permitted card characteristics
  var cards = new Array();

  // Define the cards we support. You may add addtional card types.
  
  //  Name:      As in the selection box of the form - must be same as user's
  //  Length:    List of possible valid lengths of the card number for the card
  //  prefixes:  List of possible prefixes for the card
  //  checkdigit Boolean to say whether there is a check digit
  
  cards [0] = {name: "Visa", 
               length: "13,16", 
               prefixes: "4",
               checkdigit: true};
  cards [1] = {name: "MasterCard", 
               length: "16", 
               prefixes: "51,52,53,54,55",
               checkdigit: true};
  cards [2] = {name: "Diners", 
               length: "14", 
               prefixes: "300,301,302,303,304,305,36,38",
               checkdigit: true};
  cards [3] = {name: "Bankcard", 
               length: "16", 
               prefixes: "",
               checkdigit: false};
  cards [4] = {name: "Amex", 
               length: "15", 
               prefixes: "34,37",
               checkdigit: true};
               
  // Establish card type
  var cardType = -1;
  for (i=0; i<cards.length; i++) {

    // See if it is this card (ignoring the case of the string)
    if (cardname.toLowerCase () == cards[i].name.toLowerCase()) {
      cardType = i;
      break;
    }
  }
  
  // If card type not found, report an error
  if (cardType == -1) {
     ccErrorNo = 0;
     alert(ccErrors[ccErrorNo]);
     return false; 
  }
   
  // Ensure that the user has provided a credit card number
  if (cardnumber.length == 0)  {
     ccErrorNo = 1;
     alert(ccErrors[ccErrorNo]);
     return false; 
  }
  
  // Check that the number is numeric, although we do permit a space to occur  
  // every four digits. 
  var cardNo = cardnumber
  var cardexp = /^([0-9]{4})\s?([0-9]{4})\s?([0-9]{4})\s?([0-9]{1,4})$/;
  if (!cardexp.exec(cardNo))  {
     ccErrorNo = 2;
     alert(ccErrors[ccErrorNo]);
     return false; 
  }
    
  // Now remove any spaces from the credit card number
  cardexp.exec(cardNo);
  cardNo = RegExp.$1 + RegExp.$2 + RegExp.$3 + RegExp.$4;
       
  // Now check the modulus 10 check digit - if required
  if (cards[cardType].checkdigit) {
    var checksum = 0;                                  // running checksum total
    var mychar = "";                                   // next char to process
    var j = 1;                                         // takes value of 1 or 2
  
    // Process each digit one by one starting at the right
    for (i = cardNo.length - 1; i >= 0; i--) {
    
      // Extract the next digit and multiply by 1 or 2 on alternative digits.
      calc = Number(cardNo.charAt(i)) * j;
    
      // If the result is in two digits add 1 to the checksum total
      if (calc > 9) {
        checksum = checksum + 1;
        calc = calc - 10;
      }
    
      // Add the units element to the checksum total
      checksum = checksum + calc;
    
      // Switch the value of j
      if (j ==1) {j = 2} else {j = 1};
    } 
  
    // All done - if checksum is divisible by 10, it is a valid modulus 10.
    // If not, report an error.
    if (checksum % 10 != 0)  {
     ccErrorNo = 3;
     alert(ccErrors[ccErrorNo]);
     return false; 
    }
  }  

  // The following are the card-specific checks we undertake.
  var LengthValid = false;
  var PrefixValid = false; 
  var undefined; 

  // We use these for holding the valid lengths and prefixes of a card type
  var prefix = new Array ();
  var lengths = new Array ();
    
  // Load an array with the valid prefixes for this card
  prefix = cards[cardType].prefixes.split(",");
      
  // Now see if any of them match what we have in the card number
  for (i=0; i<prefix.length; i++) {
    var exp = new RegExp ("^" + prefix[i]);
    if (exp.test (cardNo)) PrefixValid = true;
  }
      
  // If it isn't a valid prefix there's no point at looking at the length
  if (!PrefixValid) {
     ccErrorNo = 3;
     alert(ccErrors[ccErrorNo]);
     return false; 
  }
    
  // See if the length is valid for this card
  lengths = cards[cardType].length.split(",");
  for (j=0; j<lengths.length; j++) {
    if (cardNo.length == lengths[j]) LengthValid = true;
  }
  
  // See if all is OK by seeing if the length was valid. We only check the 
  // length if all else was hunky dory.
  if (!LengthValid) {
     ccErrorNo = 4;
     alert(ccErrors[ccErrorNo]);
     return false; 
  };   
  
  // The credit card is in the required format.
  return true;
  
}