function checkwhere(e) {
    if (document.layers){
        xCoord = e.x;
        yCoord = e.y;
    } else if (document.all){
        xCoord = event.clientX;
        yCoord = event.clientY;
    } else if (document.getElementById){
        xCoord = e.clientX;
        yCoord = e.clientY;
    }
}

document.onmousemove = checkwhere;


function hidePopbox() {
    document.getElementById('popboxcontact').innerHTML = "";
    document.getElementById('popboxcontact').style.visibility = "hidden";
}

function resetGuard() {
	document.getElementById('parguard').disabled=true;
//	document.getElementById('guard').style.visibility = "hidden";
//	document.getElementById('guard').style.display = "none";
	document.forms[0].parguard.value = '';
}

function selectAge(id) {
	document.getElementById('parguard').disabled=true;
//    document.getElementById('ageselect').style.visibility = "hidden";
//    document.getElementById('ageselect').style.display = "none";
    if(document.getElementById('agevalue').value < 18) {
	document.getElementById('parguard').disabled=false;
//	document.getElementById('guard').style.visibility = "visible";
//	document.getElementById('guard').style.display = "block";
    } else {
	resetGuard();
    }
}


// START Enable / Disable Class and Session selections
var sdrop1 = 0;
function disableSessDrop1() {
    if(sdrop1 == 1) { document.getElementById('s1drop').disabled=true; sdrop1=0;}
    else { document.getElementById('s1drop').disabled=false; sdrop1=1; }
}

var sdrop2 = 0;
function disableSessDrop2() {
    if(sdrop2 == 1) { document.getElementById('s2drop').disabled=true; sdrop2=0;}
    else { document.getElementById('s2drop').disabled=false; sdrop2=1; }
}

var sdrop3 = 0;
function disableSessDrop3() {
    if(sdrop3 == 1) { document.getElementById('s3drop').disabled=true; sdrop3=0;}
    else { document.getElementById('s3drop').disabled=false; sdrop3=1; }
}


var sradio1 = 0;
function disableSessRadio1() {
    if(sradio1 == 1) { 
	document.forms[0].session1a[0].disabled=true;
	document.forms[0].session1a[1].disabled=true;
	document.forms[0].session1a[2].disabled=true;
	sradio1=0;
    } else { 
	document.forms[0].session1a[0].disabled=false;
	document.forms[0].session1a[1].disabled=false;
	document.forms[0].session1a[2].disabled=false; 
	sradio1=1;
    }
}

var sradio2 = 0;
function disableSessRadio2() {
    if(sradio2 == 1) { 
	document.forms[0].session2a[0].disabled=true;
	document.forms[0].session2a[1].disabled=true;
	document.forms[0].session2a[2].disabled=true;
	sradio2=0;
    } else { 
	document.forms[0].session2a[0].disabled=false;
	document.forms[0].session2a[1].disabled=false;
	document.forms[0].session2a[2].disabled=false; 
	sradio2=1;
    }
}

var sradio3 = 0;
function disableSessRadio3() {
    if(sradio3 == 1) { 
	document.forms[0].session3a[0].disabled=true;
	document.forms[0].session3a[1].disabled=true;
	document.forms[0].session3a[2].disabled=true;
	sradio3=0;
    } else { 
	document.forms[0].session3a[0].disabled=false;
	document.forms[0].session3a[1].disabled=false;
	document.forms[0].session3a[2].disabled=false; 
	sradio3=1;
    }
}


function disableSessDrop() { 
	document.getElementById('s1drop').disabled=true; sdrop1 = 0;
	document.getElementById('s2drop').disabled=true; sdrop2 = 0;
	document.getElementById('s3drop').disabled=true; sdrop3 = 0;

	document.getElementById('session1').checked=false;
	document.getElementById('session2').checked=false;
	document.getElementById('session3').checked=false;
}

function disableSessRadio() {
	document.forms[0].session1a[0].disabled=true;
	document.forms[0].session1a[1].disabled=true;
	document.forms[0].session1a[2].disabled=true;
	sradio1=0;
	document.forms[0].session2a[0].disabled=true;
	document.forms[0].session2a[1].disabled=true;
	document.forms[0].session2a[2].disabled=true;
	sradio2=0;
	document.forms[0].session3a[0].disabled=true;
	document.forms[0].session3a[1].disabled=true;
	document.forms[0].session3a[2].disabled=true;
	sradio3=0;
}
// END Enable / Disable Class and Session selections

// START Accomodation
function roomMate() {
	if(document.getElementById('privateroom').checked==true) {
		document.forms[0].roommate.disabled=true;
	} else {
		document.forms[0].roommate.disabled=false;
	}
}

function campusOff() {
//	if(document.getElementById('campuson').checked==false) { 
document.getElementById('campusoff').checked=true;
//	}
	document.getElementById('campuson').checked=false;
	document.forms[0].roommate.disabled=true;
	document.forms[0].roommate.value='';
	document.getElementById('privateroom').checked=false;
	document.getElementById('privateroom').disabled=true;
	document.getElementById('betweensess').checked=false;
	document.getElementById('betweensess').disabled=true;
	document.getElementById('early').checked=false;
	document.getElementById('early').disabled=true;
//	document.getElementById('campusonoff').style.visibility="hidden";
//	document.getElementById('campusonoff').style.display='none';
//	roomMate();
}

function campusOn() {
document.getElementById('campuson').checked=true;
	document.getElementById('campusoff').checked=false;
	document.forms[0].roommate.disabled=false;
	document.getElementById('privateroom').disabled=false;
	document.getElementById('betweensess').disabled=false;
	document.getElementById('early').disabled=false;
//	document.getElementById('campusonoff').style.visibility="visible";
//	document.getElementById('campusonoff').style.display='block';
}


// END Accomodation

// START Fees
var fee=0
var norefund=50;
function feeTuition() {
	var tutfee=0;
	var regfee=50;
	var oncampus=0;
	var discount=0;
	var amprental=0;
	var privateroom=0;
	var betweensess=0;
	var early=0;
	var meal=0;

// Session 1
	if(document.getElementById('session1').checked==true) {
		tutfee+=850;
		if(document.getElementById('campuson').checked == true) { oncampus+=430; }
		if(document.getElementById('privateroom').checked == true) { privateroom+=350; }
		if(document.getElementById('meal').checked == true) { meal+=180; }
		if(document.getElementById('ampyes').checked == true) { amprental+=40; }
	}
// Session 2
//	if(document.getElementById('session2').checked==true) { tutfee+=850; }
	if(document.getElementById('session2').checked==true) {
		tutfee+=850;
		if(document.getElementById('campuson').checked == true) { oncampus+=430; }
		if(document.getElementById('privateroom').checked == true) { privateroom+=350; }
		if(document.getElementById('meal').checked == true) { meal+=180; }
		if(document.getElementById('ampyes').checked == true) { amprental+=40; }
	}
// Session 3
//	if(document.getElementById('session3').checked == true) { tutfee+=850; }
	if(document.getElementById('session3').checked==true) {
		tutfee+=850;
		if(document.getElementById('campuson').checked == true) { oncampus+=430; }
		if(document.getElementById('privateroom').checked == true) { privateroom+=350; }
		if(document.getElementById('meal').checked == true) { meal+=180; }
		if(document.getElementById('ampyes').checked == true) { amprental+=40; }
	}


// Session General
	if(document.getElementById('early').checked == true) { 
		early+=120; 
		if( (document.getElementById('session1').checked==true && document.getElementById('session3').checked==true) || (document.getElementById('session2').checked==true && document.getElementById('session3').checked==true) ) { early+=120; }
	}

	if(document.getElementById('session1').checked==true && document.getElementById('session2').checked==true)  {
		if(document.getElementById('campuson').checked == true) {
			document.getElementById('betweensess').disabled=false;
		}
	} else {
		document.getElementById('betweensess').disabled=true;
		document.getElementById('betweensess').checked=false;
	}
	if(document.getElementById('betweensess').checked == true) { betweensess=150; }


// Lay it out
	document.getElementById('sessionfee').value=tutfee;
	if(tutfee<=850) { document.getElementById('multidiscount').value=discount; } 
	else { discount=100; document.getElementById('multidiscount').value='-'+discount; tutfee-=discount; }
	document.getElementById('roomandboard').value=oncampus;
	tutfee+=oncampus; tutfee+=regfee;
	document.getElementById('subtotal').value=tutfee;

	document.getElementById('amprental').value=amprental;
	document.getElementById('feeprivate').value=privateroom;
	document.getElementById('feebetween').value=betweensess;
	document.getElementById('feeearly').value=early;
	document.getElementById('feemeal').value=meal;
	tutfee+=amprental; tutfee+=privateroom; tutfee+=betweensess;
	tutfee+=early; tutfee+=meal;

	document.getElementById('grandtotal').value=tutfee;
}
// END Fees


// START Credit Card
function showCardInfo() {
	document.getElementById('cardinfo').style.visibility='visible';
	document.getElementById('cardinfo').style.display='block';
}
/*
function hideCardInfo() {
	document.getElementById('cardinfo').style.visibility='hidden';
	document.getElementById('cardinfo').style.display='none';
	document.getElementById('cc_pp').checked=true;
}
*/
function selectCCMonth() {
	document.getElementById('ex_month').style.visibility='hidden';
	document.getElementById('ex_month').style.display='none';
}

function selectCCYear() {
	document.getElementById('ex_year').style.visibility='hidden';
	document.getElementById('ex_year').style.display='none';
}
// END Credit Card


function validateRegister(theForm) {
var reason = "";

  reason += validateExisting(theForm);
  reason += validateFirstname(theForm.fname);
  reason += validateLastname(theForm.lname);
  reason += validateAge(theForm.age,theForm.parguard);
  reason += validateGender(theForm);
//  reason += validateGuardian(theForm.parguard);

  reason += validatePhone(theForm.phone1);
  reason += validatePhone2(theForm.phone2);
  reason += validateEmail(theForm.email);

  reason += validateAddr1(theForm.addr1);
  reason += validateAddr2(theForm.addr2);
  reason += validateAddr3(theForm.addr3);
  reason += validateAddr4(theForm.addr4);
  reason += validateZip(theForm.zip);

  reason += validateHear(theForm.hear);

  reason += validateSession(theForm.session1, theForm.session2, theForm.session3, theForm);

  reason += validateAgree(theForm.agreepol);

//  reason += validateJoin(theForm.joinup);
      
  if (reason != "") {
	var theY = whereY();
	document.getElementById('popboxcontact').innerHTML = "<p><b>Some fields need correction:</b><br />\n" + reason + "</p>\n<div class=\"spacer10\"></div>\n<center><button style=\"color:#ffffff; background-color:#ff8f00; width:100px; height:20px; border:0; font:bold 10px sans-serif\" onclick=\"hidePopbox(); return false;\">Close</button></center>";

	document.getElementById('popboxcontact').style.left = (xCoord-100) + "px";
	document.getElementById('popboxcontact').style.top = ((yCoord+theY)-280) + "px";
	document.getElementById('popboxcontact').style.visibility = "visible";
    return false;
  } 
  else 
  {
//    var answer = confirm("Form Validated\nClick OK to proceed or Cancel to make changes");
//    if(answer) { return true; }
//    else { return false; }
    return true;
  }
  return false;
}

function errColor(fldclr) {
  fldclr.style.background = '#bf7f00';
  fldclr.style.color = '#ffffff';
}

function goodColor(fldclr) {
  fldclr.style.background = '#ffffff';
  fldclr.style.color = '#003466';
}

// RESET
function resetColor() {
var elength = document.forms[0].elements.length;
for(i = 0; i < elength; i++) {
 if(document.forms[0].elements[i].type == "text" || document.forms[0].elements[i].type == "password" || document.forms[0].elements[i].type == "select") {
  document.forms[0].elements[i].style.background = "#ffffff";
  document.forms[0].elements[i].style.color = "#003466";
  }
 }
}


function validateExisting(fld) {
    var error = "";
    var myOption = -1;

    for(i=fld.existing.length-1; i > -1; i--) {
	if(fld.existing[i].checked) { myOption = i; i = -1; }
    }

  if(myOption == -1) { error = "<b>*</b> Please tell us if you are a New or Returning Student<br />\n"; }

    return error;
}

// FIRST NAME
function validateFirstname(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z\ \'\-]/; // allow letters, space, dash, apostrophe
 
    if (fld.value == "") {
        errColor(fld); error = "<b>*</b> You didn't enter a First Name.<br />\n";
    } else if ((fld.value.length > 16)) {
        errColor(fld); error = "<b>*</b> The First Name is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The First Name contains illegal characters. Only letters, space, dash and apostrophe.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validateLastname(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z\ \-\']/; // allow letters, space, dash, apostrophe
 
    if (fld.value == "") {
        errColor(fld); error = "<b>*</b> You didn't enter a Last Name.<br />\n";
    } else if ((fld.value.length > 24)) {
        errColor(fld); error = "<b>*</b> The Last Name is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Last Name contains illegal characters. Only letters, space, dash and apostrophe.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validateAge(fld,fld2) {
    var error = "";
    if (fld.value == "99") { error = "<b>*</b> You must select your Age.<br />\n"; }
    if (fld.value < "18") {
	error = validateGuardian(fld2);
    }
    return error;
}

function validateGender(fld) {
    var error = "";
    var myOption = -1;

    for(i=fld.gender.length-1; i > -1; i--) {
	if(fld.gender[i].checked) { myOption = i; i = -1; }
    }

  if(myOption == -1) { error = "<b>*</b> Please choose your Gender<br />\n"; }

    return error;
}

function validateGuardian(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z\ \-\']/; // allow letters, space, dash, apostrophe

    if ((fld.value.length < 3)) {
        errColor(fld); error = "<b>*</b> The Guardian Name is too short.<br />\n";
    } else if ((fld.value.length > 48)) {
        errColor(fld); error = "<b>*</b> The Guardian Name is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Guardian Name contains illegal characters. Only letters, space, dash and apostrophe.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}


function validatePhone(fld) {
    var error = "";
    var illegalChars = /[^0-9\-\ ]/; // numbers, dash, space

    if (fld.value == "") {
	errColor(fld); error = "<b>*</b> Please enter a Residential Phone Number.<br />\n";
    } else if (fld.value.length < 7) {
	errColor(fld); error = "<b>*</b> Residential Phone Number is too short.<br />\n";
    } else if (fld.value.length > 16) {
        errColor(fld); error = "<b>*</b> The Phone Number is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Phone Number contains illegal characters. Only numbers, dash and space.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validatePhone2(fld) {
    var error = "";
    var illegalChars = /[^0-9\-\ ]/; // numbers, dash, space
 
    if (fld.value.length > 16) {
        errColor(fld); error = "<b>*</b> The Cell Phone Number is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Cell Phone Number contains illegal characters. Only numbers, dash and space.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}



function trim(s) { return s.replace(/^\s+|\s+$/, ''); }

function validateEmail(fld) {
    var error="";
    var tfld = trim(fld.value); // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
   
    if (fld.value == "") {
        errColor(fld); error = "<b>*</b> You didn't enter an Email Address.<br />\n";
	return error;
    } else if (!emailFilter.test(tfld)) { 
        //test email for illegal characters
        errColor(fld); error = "<b>*</b> Please enter a valid email address.<br />\n";
    } else if (fld.value.match(illegalChars)) {
        errColor(fld); error = "<b>*</b> The email address contains illegal characters.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}


function validateAddr1(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z0-9\-\ .#\']/; // allow letters, numbers, dash, space, period etc
 
    if (fld.value == "") {
        errColor(fld); error = "<b>*</b> You didn't enter a Street Address.<br />\n";
    } else if (fld.value.length > 64) {
        errColor(fld); error = "<b>*</b> The Street Address is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Street Address contains illegal characters.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validateAddr2(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z0-9\-\ .\']/; // allow letters, numbers, dash, space, period etc
 
    if (fld.value == "") {
        errColor(fld); error = "<b>*</b> You didn't enter a City.<br />\n";
    } else if (fld.value.length > 32) {
        errColor(fld); error = "<b>*</b> The City is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The City contains illegal characters.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validateAddr3(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z0-9\-\ .\']/; // allow letters, numbers, dash, space, period etc
 
    if (fld.value == "") {
        errColor(fld); error = "<b>*</b> You didn't enter a Province or State.<br />\n";
    } else if (fld.value.length > 32) {
        errColor(fld); error = "<b>*</b> The Province/State is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Province/State contains illegal characters.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validateAddr4(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z\-\ .\']/; // allow letters, dash, space, period etc
 
    if (fld.value == "") {
        errColor(fld); error = "<b>*</b> You didn't enter a Country.<br />\n";
    } else if (fld.value.length > 32) {
        errColor(fld); error = "<b>*</b> The Country is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Country contains illegal characters.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validateZip(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z0-9\-\ ]/; // allow letters, numbers, dash, space
 
    if (fld.value == "") {
        errColor(fld); error = "<b>*</b> You didn't enter a Postal/Zip Code.<br />\n";
    } else if (fld.value.length > 12) {
        errColor(fld); error = "<b>*</b> The Postal/Zip Code is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Postal/Zip Code contains illegal characters. Only letters, numbers, dash and space.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validateHear(fld) {
    var error = "";
    var illegalChars = /[^a-zA-Z0-9\-\ .\'\"\&#]/; // allow letters, numbers, dash, space, period etc
 
    if (fld.value.length > 128) {
        errColor(fld); error = "<b>*</b> The Heard About info is too long.<br />\n";
    } else if (illegalChars.test(fld.value)) {
        errColor(fld); error = "<b>*</b> The Heard About info contains illegal characters.<br />\n";
    } else {
        goodColor(fld);
    }
    return error;
}

function validateLevel(fld) {
  var myOption = -1;

  for(i=fld.session1a.length-1; i > -1; i--) {
    if(fld.session1a[i].checked) { myOption = i; i = -1; }
  }

  if(myOption == -1) { error = "<b>*</b> Please choose your Skill Level<br />\n"; }
  else { error = "";}

  return error;
}

function validateSession(fld1, fld2, fld3, fld4) {
  var error = "";
  var myOption1 = -1;
  var myOption2 = -1;
  var myOption3 = -1;

  if(fld1.checked == false && fld2.checked == false && fld3.checked == false) { 
	error = "<b>*</b> Please select a Session to attend<br />\n";
	return error;
  } 

  if(fld1.checked == true) {
    if(fld4.session1class.value == 0) { error += "<b>*</b> Please choose a Session 1 Class<br />\n"; }

    for(i=fld4.session1a.length-1; i > -1; i--) {
	if(fld4.session1a[i].checked) { myOption1 = i; i = -1; }
    }
    if(myOption1 == -1) {
	error += "<b>*</b> Please choose a Session 1 Skill Level<br />\n";
    }
  }

  if(fld2.checked == true) {
    if(fld4.session2class.value == 0) { error += "<b>*</b> Please choose a Session 2 Class<br />\n"; }

    for(i=fld4.session2a.length-1; i > -1; i--) {
	if(fld4.session2a[i].checked) { myOption2 = i; i = -1; }
    }
    if(myOption2 == -1) {
	error += "<b>*</b> Please choose a Session 2 Skill Level<br />\n";
    }
  }

  if(fld3.checked == true) {
    if(fld4.session3class.value == 0) { error += "<b>*</b> Please choose a Session 3 Class<br />\n"; }

    for(i=fld4.session3a.length-1; i > -1; i--) {
	if(fld4.session3a[i].checked) { myOption3 = i; i = -1; }
    }
    if(myOption3 == -1) {
	error += "<b>*</b> Please choose a Session 3 Skill Level<br />\n";
    }
  }

  return error;
}

function validateAgree(fld) {
  var error = "";

  if(fld.checked == false) {
	error += "<b>*</b> You must check the box to agree to Guitar Workshop Plus Inc.&rsquo;s policies<br />\n";
  }

  return error;
}

