  /***************************************************************************************
	****                       AJAX Support Functions
	***************************************************************************************/
	
		var receiveReq = getXmlHttpRequestObject();
		
		//Gets the browser specific XmlHttpRequest Object
		function getXmlHttpRequestObject() {
			if (window.XMLHttpRequest) {
				return new XMLHttpRequest();
			} else if(window.ActiveXObject) {
				return new ActiveXObject("Microsoft.XMLHTTP");
			} else {
				alert('Cound not create XmlHttpRequest Object.  Consider upgrading your browser.');
			}
		}
	
	
	/***************************************************************************************
	****                        Mouse Locator                                        
	***************************************************************************************/
  
  // Temporary variables to hold mouse x-y pos.s
  var tempX = 0;
  var tempY = 0;
  
	// Main function to retrieve mouse x-y pos.s
  function getMouse(e) {
    try {
      if (IE) { // grab the x-y pos.s if browser is IE
        tempX = event.clientX + document.body.scrollLeft
        tempY = event.clientY + document.body.scrollTop
      } else {  // grab the x-y pos.s if browser is NS
        tempX = e.pageX
        tempY = e.pageY
      }  
      // catch possible negative values in NS4
      if (tempX < 0){tempX = 0}
      if (tempY < 0){tempY = 0}  
      // show the position values in the form named Show
      // in the text fields named MouseX and MouseY
      get_var('mouse_X').value = tempX;
      get_var('mouse_Y').value = tempY;  
    } catch(err){}
  }
  
	// Detect if the browser is IE or not.
  // If it is not IE, we assume that the browser is NS.
  var IE = document.all?true:false;
  
  // If NS -- that is, !IE -- then set up for mouse capture
  if (!IE) document.captureEvents(Event.MOUSEMOVE);
  
  // Set-up to use getMouseXY function onMouseMove
  document.onmousemove = getMouse;
  
  
  
	
	/***************************************************************************************
	****                       Command Queue
	***************************************************************************************/
	var queueTiming = 1000;
	var commandQueue = new Array;
	
	function queue(func, command) {

	  if(queueInterval > queueTiming) {
	    clearInterval(queueInterval);
	    queueInterval = setInterval("queue('run')", 1000);
	  }
	  if(func == "add") commandQueue.unshift(command);
	  if(func == "run") {
	    if(receiveReq) {
		    if(commandQueue.length > 0) {
		    	if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
		    		eval(commandQueue.pop());
		    	}
		    }
	    }
	  }
	}
	
	queueInterval = setInterval("queue('run')", 250);
	/***************************************************************************************
	****                       Function to retrive variables
	***************************************************************************************/

		function get_var(varname) {
			if (document.layers) { //checks for Netscape 4
							myVar = eval('document.' + varname);
						} else if (document.all && !document.getElementById) { //checks for IE 4
							myVar = eval('document.all.' + varname);
						} else if (document.getElementById) { //Checks for Netscape 6 & IE 5
							myVar = document.getElementById(varname);
						}
	
			if(!myVar) return '';
			else return myVar;
		}
	
	
  	function check_pass() {
  	  // if password field is empty, don't hash it
  	  if(get_var('password').value == "") { 
  	    pass_hash = "";
  	  }	else { 
  		  pass_hash = hex_md5(hex_md5(get_var('password').value));
  		}
  		
  	  if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
  		  receiveReq.open("GET", '/login_function.php?action=login&pass=' + pass_hash + '&user=' + get_var('username').value, true);
  			receiveReq.onreadystatechange = handle_check_pass;
  			receiveReq.send(null);
  		}
  	}
  	
  	function handle_check_pass() {
  	  if(receiveReq.readyState == 4) {
  		  var response = eval("(" + receiveReq.responseText + ")");
  			if(response.loggedin == 'valid') {
  			  // login successful
  				get_var('login_message').innerHTML = '<script>eval(\'window.location.reload();\')</script>';
  			} else if (response.loggedin == 'invalid') {
  			  // login unsucessful
  				get_var('login_message').innerHTML = '<font color="#FF0000">' + response.message + '</font>';
  			}
  		}
  	}
	
	/***************************************************************************************
	****                       Data Verification functions
	***************************************************************************************/
	
	  function check_field(field) {
			if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
				
			// alert(get_var(field).value);
			
				receiveReq.open("GET", '/members/includes/reg_functions.php?function=check_field&field=' + field + '&field_value=' + escape(get_var(field).value), true);
				receiveReq.onreadystatechange = handleCheck_field;
				receiveReq.send(null);
			}
		}
		
		function handleCheck_field() {
			 if(receiveReq.readyState == 4) {
			   var response = eval("(" + receiveReq.responseText + ")");
				 if(response.field_check == 'not ok') {
					 markField = response.field_name;
					 get_var('field_' + markField + '_stat').innerHTML = '&nbsp;&nbsp; <img src="/images/check_err.gif"><font color="red">' + response.error + '</font>';
				 } 
				 if(response.field_check == 'ok') {
					 markField = response.field_name;
					 get_var('field_' + markField + '_stat').innerHTML = '&nbsp;&nbsp; <img src="/images/check.gif">';
				 }
			 }
		}
	
	  function check_password(field1, field2) {
	    if(get_var(field1).value != "" && get_var(field2).value != "") {
  	    pass1 = hex_md5(get_var(field1).value);
  	    pass2 = hex_md5(get_var(field2).value);
  	    if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
  	      receiveReq.open("GET", '/members/includes/reg_functions.php?action=check_password&pass1=' + pass1 + '&pass2=' + pass2, true);
  	      receiveReq.onreadystatechange = handle_password_check;
  	      receiveReq.send(null);
  	    }
  	  } else {
  	    if(get_var(field1).value == "") {
  	      message = '<img class="png" src="/images/check_err.gif"> &nbsp;&nbsp; <font color="red">Password can\'t be empty</font>';
	        get_var('field_password_confirm_stat').innerHTML = message;
	      }
	      if(get_var(field2).value == "") {
	        message = '<img class="png" src="/images/check_err.gif"> &nbsp;&nbsp; <font color="red">Password can\'t be empty</font>';
	        get_var('field_password_stat').innerHTML = message;
	      }
  	  }
	  }
	  
	  function handle_password_check () {
	    if(receiveReq.readyState == 4) {
	      var response = eval("(" + receiveReq.responseText + ")");
	      if(response.field_check == false) {
	        message = '<img src="/images/check_err.gif"> &nbsp;&nbsp; <font color="red">Passwords do not match</font>';
	        get_var('field_password_confirm_stat').innerHTML = message;
	      } else {
	        get_var('field_password_confirm_stat').innerHTML = '&nbsp;&nbsp; <img class="png" src="/images/check.gif">';
	      }
	    }
	  }
	
	/***************************************************************************************
	****                       Load Schools
	***************************************************************************************/
	  
	  function show_rooms(school) {
	    if(school != "") {
	      if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
	        receiveReq.open("GET", "/members/includes/reg_functions.php?action=get_rooms&school=" + school, true);
	        receiveReq.onreadystatechange = handle_show_rooms;
	        receiveReq.send(null);
	        get_var('school_think').innerHTML = '<img src="/images/thinking_small.gif">';
	      }
	    } else {
	      get_var('rooms_tr').style.display = 'none';
	      get_var('school_think').innerHTML = '';
	    }
	  }
	  
	  function handle_show_rooms() {
	    if(receiveReq.readyState == 4) {
	      var response = eval("(" + receiveReq.responseText + ")");
	      if(response.rooms != "") {
	        get_var('rooms').innerHTML = response.rooms;
	      }
	    }
	    get_var('rooms_tr').style.display = '';
	    get_var('school_think').innerHTML = '';
	  }
	
	/***************************************************************************************
	****                       Fetch Page 
	****  arguments
	****  0 - page
	****  1 - ID
	****  X - extra parametres
	***************************************************************************************/
	
	  function fetch_page() {
	    if(arguments[0] != "" && arguments[1] != "") {
	      page = '/includes/fetch_page.php' + '?page=' + arguments[0] + '&id=' + arguments[1];
	      //alert(page);
	      
  	    if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
  	      receiveReq.open("GET", page, true);
  	      receiveReq.onreadystatechange = handle_fetch_page;
  	      receiveReq.send(null);
  	    }
  	  } else {
  	    // did not provide enough information to process
  	  }
	  }
	  
	  function handle_fetch_page() {
	    if(receiveReq.readyState == 4) {
  	    var response = eval("(" + receiveReq.responseText + ")");
  	    //alert(response.page);
  	    if(response.page != "" && response.id != "") {
  	      // set data in div
  	      get_var(response.id).innerHTML = response.page;
  	    } else {
  	      // display error
  	    }
  	  }
	  }
	

	/***************************************************************************************
	****                       Map switching functions
	***************************************************************************************/
		
		function map_switch(country) {
			if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
				receiveReq.open("GET", '/members/includes/reg_functions.php?function=switch_country&country=' + country, true);
				receiveReq.onreadystatechange = handleMapSwitch;
				receiveReq.send(null);
			}
		}
		
		function handleMapSwitch() {
			if(receiveReq.readyState == 4) {
				var response = eval("(" + receiveReq.responseText + ")");
				if(response.imagemap != "") {
					get_var('image_map').innerHTML = response.imagemap;
					get_var('map').innerHTML = response.map;
					get_var('class_availability_cookie_crumb').innerHTML = response.crumb;
				}
			}
		}
		
		function add_student() {
			get_var('new_student').style.display = "";
			map_switch('north_america');
		}
		

	
	/***************************************************************************************
	****                       Province Select
	***************************************************************************************/
	
	  function switch_query(country, province, city, classroom) {
			

                        if(province == undefined) province = "";

			if(receiveReq.readyState == 4 || receiveReq.readyState == 0){
				
				if(province!="" && city==null){
					var action = '/members/includes/reg_functions.php?function=switch_province';
				}else if(city!="" && classroom==null){
					var action = '/members/includes/reg_functions.php?function=switch_city';
				}else if(classroom!=""){
					var action = '/members/includes/reg_functions.php?function=switch_class';
				}
				receiveReq.open("GET", action + '&country=' + country + '&province=' + province + "&city=" + city + "&class=" + classroom, true);
				receiveReq.onreadystatechange = handleQuerySwitch;
				receiveReq.send(null);
			}
				
		}
		
		function handleQuerySwitch() {
			if(receiveReq.readyState == 4) {
				var response = eval("(" + receiveReq.responseText + ")");
				if(response != "") {
					get_var('map').innerHTML = response.data;
					get_var('class_availability_cookie_crumb').innerHTML = response.crumb;
				} 
			}
		}
		
	/***************************************************************************************
	****                       Detect Number
	***************************************************************************************/
		
		function isNum(field){
			if(receiveReq.readyState == 4 || receiveReq.readyState == 0){
				var fieldVal = get_var(field).value;
				receiveReq.open("GET", "/members/includes/reg_functions.php?function=test_numeric&field="+ field +"&fieldVal="+ fieldVal, true);
				receiveReq.onreadystatechange = isNumValid;
				receiveReq.send(null);
			}
		}
		
		function isNumValid(){
			if(receiveReq.readyState == 4 || receiveReq.readyState == 0){
				var response = eval("(" + receiveReq.responseText + ")");
				if(response.data == "false"){
					get_var(response.field).value = "";
					get_var('field_'+response.field+'_stat').innerHTML = '&nbsp;&nbsp;&nbsp;<img class="png" width="14" height="14" src="/images/check_err.png"><font color="red">Please enter a number only</font>';
				}else{
					get_var('field_'+response.field+'_stat').innerHTML = "";
				}
			}
		}
	
	/***************************************************************************************
	                           Check Age
	***************************************************************************************/
	  
	  function check_age() {
	    if(document.create_account.new_user[0].checked == true) {
  	    if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
  	      var birth_date = get_var('date').value;
  	      receiveReq.open("GET", "/members/includes/reg_functions.php?function=check_age&birthday=" + birth_date, true);
  	      receiveReq.onreadystatechange = handle_check_age;
  	      receiveReq.send(null);
  	    }
  	  }
	  }
	  
	  function handle_check_age() {
	    // alert('handlecheckage');
	    if(receiveReq.readyState == 4) {
	      var response = eval("(" + receiveReq.responseText + ")");
	      if(response.age >= 18) {
	        get_var('tr_student_grade').style.display = 'none';
	      } else {
	        get_var('tr_student_grade').style.display = '';
	      }
	    }
	  }
	
	/***************************************************************************************
	****                       Build cookie from map selection
	***************************************************************************************/
	
		function selectSchool(school, room, session_id) {
			if(receiveReq.readyState == 4 || receiveReq.readyState == 0){
				if(get_var('school') == false){
					
					//Build Expiration Date of Cookie
					var day = (new Date().getDate()+1);
					var month = (new Date().getMonth());
					var year = 	(new Date().getFullYear());	
					//Build Cookie
					document.cookie = "source=fp_search;";
					document.cookie = "mSchool=" + school +";";
					document.cookie = "class=" + room +";";
					document.cookie = "session_id=" + session_id +";";
					location.href = '../members/new_account.php';
					
				}else{
					get_var('mSchool').value = school;
					get_var('class').value = room;
					get_var('session_id').value = session_id;
					show_element('container', 'off')
				}
			}
		}
		
		
	/***************************************************************************************
	****                       Load cookie from map selection
	***************************************************************************************/
		String.prototype.trim = function() {
			return this.replace(/^\s+|\s+$/g,"");	
		}
	
		function loadCookie(){
			
			//crumble cookie into data chunks
			var cookieCrumb = document.cookie.split(";");
			
			if(cookieCrumb.length > 2){ //make sure we have the good pieces of cookie to nibble
				
			//Find all the crumbs and seach the crumbs for the chuncks we are looking for
				var maxArr = cookieCrumb.length;				
				var srchFor = /mSchool|class|session_id/;
				
				for(i=0; i<	maxArr; i++){
					var result = cookieCrumb[i].search(srchFor);
					
					if(result != -1){
						formValues = cookieCrumb[i].split("=");
						get_var(formValues[0].trim()).value = formValues[1];
					}
					
				}
				
				//Dump cookie
					
				document.cookie = "mSchool=;path=/;expires=01/01/01";
				document.cookie = "class=;path=/;expires=01/01/01"
				document.cookie = "session_id=;path=/;expires=01/01/01"
				
			}
		}
	
	/***************************************************************************************
	****                       Find School Pop-Up
	***************************************************************************************/
		
		function getScrollXY() {
			var scrOfX = 0, scrOfY = 0;
				if( typeof( window.pageYOffset ) == 'number' ) {
				//Netscape compliant
				scrOfY = window.pageYOffset;
				scrOfX = window.pageXOffset;
		} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
				//DOM compliant
				scrOfY = document.body.scrollTop;
				scrOfX = document.body.scrollLeft;
		} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
				//IE6 standards compliant mode
				scrOfY = document.documentElement.scrollTop;
				scrOfX = document.documentElement.scrollLeft;
		}
			return [ scrOfX, scrOfY ];
		}
		
		function get_screensize(value) {
			var screenX = 0, screenY = 0;
			if( typeof( window.innerWidth ) == 'number' ) {
				//Non-IE
				screenX = window.innerWidth;
				screenY = window.innerHeight;
			} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
				//IE 6+ in 'standards compliant mode'
				screenX = document.documentElement.clientWidth;
				screenY = document.documentElement.clientHeight;
			} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
				//IE 4 compatible
				screenX = document.body.clientWidth;
				screenY = document.body.clientHeight;
			}
			if(value == 'width') return screenX;
			if(value == 'height') return screenY;
		}

		function show_element(element, status, movie) {
			if(status == 'on') {
				scrollLocation = getScrollXY();
			  document.getElementById(element).style.display = '';
				document.getElementById(element).style.height = get_screensize('height');
				document.getElementById(element).style.width = get_screensize('width');
				document.getElementById(element).style.top = scrollLocation[1];
				
				// looping through all forms on the page
				for (f = 0; f < document.forms.length; f++){
					var elements = document.forms[f].elements;
					// looping through all elements on certain form
					for (e = 0; e < elements.length; e++){
						if (elements[e].type == "select-one"){
							elements[e].style.display = 'none';
						}
					}
				}
        buildMap();
				
			}
			if(status == 'off') {
			  document.getElementById(element).style.display = 'none';
				//document.getElementById(element).style.height = '';
			  //document.getElementById(element).style.width = '';
				for (f = 0; f < document.forms.length; f++){
					var elements = document.forms[f].elements;
					
					// looping through all elements on certain form
					for (e = 0; e < elements.length; e++){
						if (elements[e].type == "select-one"){
							elements[e].style.display = '';
						}
					}
				}
			}
		}
		
		function center_element(element, width, height) {
			getScrollXY();
			fromleft = ((get_screensize('width')/2) - (width/2));
			fromtop = ((get_screensize('height')/2) - (height/2));
			
			get_var(element).style.left = fromleft;
			get_var(element).style.top = fromtop;
		}
		
		function toggleVisible(id) {
			var item = document.getElementById(id);
			var value = item.style.display ? '' : 'none';
			item.style.display = value;
		}

			
		function buildMap(){
			map_switch('north_america');
		}
		
		/***************************************************************************************
		                         Display Schedule
		***************************************************************************************/
		
		function show_schedule(status, element, id) {
			if(status == 'on') {
			  
			  if(receiveReq.readyState == 4 || receiveReq.readyState == 0){
  	      receiveReq.open("GET", "/members/includes/display_schedule_overlay.php?schedule_id=" + element + '&id=' + id, true);
  	      receiveReq.onreadystatechange = handle_show_schedule;
  	      receiveReq.send(null);
  	    }
			}
			
			if(status == 'off') {
        get_var('schedule_area').style.display = 'none';
			  //get_var('schedule_container').style.display = 'none';
				//get_var('schedule_container').style.height = '';
				//get_var('schedule_container').style.width = '';
			}
		}
		
		function handle_show_schedule() {
	    if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
	      
	      var response = eval("(" + receiveReq.responseText + ")");

	      if(response.container != "") {
	        get_var('schedule_area').innerHTML = response.container;
          get_var('schedule_area').style.display = '';
			
	        //document.body.innerHTML += response.container;
	        
          
	        scrollLocation = getScrollXY();
          
          get_var('schedule_display').innerHTML = response.schedule;
  			  get_var('schedule_container').style.position = 'fixed';
          center_element('schedule_sub_container', 300, 400);
  			  get_var('schedule_container').style.top = scrollLocation[1];
	        get_var('schedule_container').style.display = '';
	        get_var('schedule_container').style.height = get_screensize('height');
				  get_var('schedule_container').style.width = get_screensize('width');
	        
	      }
	    }
	  }	
		
		/***************************************************************************************
	                           Date Selector
	  ***************************************************************************************/
	  // repos true/false = whether you want to reposition the box on click
	  function calendar(date, repos, element) {
	    if(receiveReq.readyState == 4 || receiveReq.readyState == 0){
	      if(repos == true) {
  	      get_var('date_selector_box').style.left = (parseInt(get_var('mouse_X').value) + 30) + 'px';
  	      get_var('date_selector_box').style.top = (parseInt(get_var('mouse_Y').value) - 40) + 'px';
  	    }
	      receiveReq.open("GET", "PHP_calendar.php?date=" + date + '&element=' + element, true);
	      receiveReq.onreadystatechange = handlecalendar;
	      receiveReq.send(null);
	    }
	  }
	  
	  function handlecalendar() {
	    if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
	      var response = eval("(" + receiveReq.responseText + ")");
	      if(response.calendar != "") {
	        get_var('date_selector_box').style.display = '';
	        get_var('date_selector_box').style.position = 'absolute';
	        get_var('date_selector').innerHTML = response.calendar;
	      }
	    }
	  }	
	  
	  /***************************************************************************************
	                           Account Owner
	  ***************************************************************************************/
	  
	  function acntOwn(){
		  if(receiveReq.readyState == 4 || receiveReq.readyState == 0){
			  var acount = get_var('AO_name').value;
			  receiveReq.open("GET", "/members/includes/reg_functions.php?function=acountOwner&acntID="+ acount , true);
			  receiveReq.onreadystatechange = popAcountOwner;
			  receiveReq.send(null);
		  }
	  }
	  
	  function acntAD(account){
		  if(receiveReq.readyState == 4 || receiveReq.readyState == 0){
			  receiveReq.open("GET", "/members/includes/reg_functions.php?function=acountOwner&acntID="+ account , true);
			  receiveReq.onreadystatechange = popAcountOwner;
			  receiveReq.send(null);
		  }
	  }
	  
	  function acntExst(){
		  if(receiveReq.readyState == 4 || receiveReq.readyState == 0){
			  var acount = get_var('EA_name').value;
			  if(acount != ''){
			  	receiveReq.open("GET", "/members/includes/reg_functions.php?function=acountOwner&acntID="+ acount , true);
			  	receiveReq.onreadystatechange = popAcountOwner;
			  	receiveReq.send(null);
			  }else{
			  get_var('acnt_error').innerHTML = "<option>**** NO ACTIVE ACCOUNTS ****</option>";
			  }
		  }
	  }
	  
	  function popAcountOwner(){
		  if(receiveReq.readyState == 4 || receiveReq.readyState == 0){
			  var response = eval("(" + receiveReq.responseText + ")");
			  get_var('AO_id').value = response.acntInfo.id;
			  get_var('AO_address_1').innerHTML = response.acntInfo.address_1;
			  get_var('AO_address_2').innerHTML = response.acntInfo.address_2;
			  get_var('AO_city').innerHTML = response.acntInfo.city;
			  get_var('AO_prov').innerHTML = response.acntInfo.province_id;
			  get_var('AO_cart').innerHTML = response.cart;
		  }
	  }
	  
	  /***************************************************************************************
	                           Use Account Address
	  ***************************************************************************************/
	  
	  function getAddress(account, type){
		  if(receiveReq.readyState == 4 || receiveReq.readyState == 0){
			  receiveReq.open("GET", "/members/includes/reg_functions.php?function=acountAddress&acntID="+ account +"&type="+ type, true);
			  receiveReq.onreadystatechange = fillAddress;
			  receiveReq.send(null);
		  }
	  }
	  
	  function fillAddress(){
		  if(receiveReq.readyState == 4 || receiveReq.readyState == 0){
			  var response = eval("(" + receiveReq.responseText + ")");
			  var type = response.type;
			  get_var(type+'_f_name').value = response.f_name;
			  get_var(type+'_l_name').value = response.l_name;
			  get_var(type+'_email').value = response.email;
			  get_var(type+'_email_confirm').value = response.email;
			  get_var(type+'_address_1').value = response.address_1;
			  get_var(type+'_address_2').value = response.address_2;
			  get_var(type+'_city').value = response.city;
			  get_var(type+'_province').value = response.province_id;
			  get_var(type+'_country').value = response.country_id;
			  get_var(type+'_postal').value = response.postal_code;
		  }
	  }
	  
	  /***************************************************************************************
	                           Same Shipping Address as Billing Address
	  ***************************************************************************************/
	  
	  function sameAddress(){
	  	get_var('shipping_f_name').value = get_var('billing_f_name').value;
  		get_var('shipping_l_name').value = get_var('billing_l_name').value;
  		get_var('shipping_address_1').value = get_var('billing_address_1').value;
  		get_var('shipping_address_2').value = get_var('billing_address_2').value;
  		get_var('shipping_city').value = get_var('billing_city').value;
  		get_var('shipping_province').value = get_var('billing_province').value;
  		get_var('shipping_country').value = get_var('billing_country').value;
  		get_var('shipping_postal').value = get_var('billing_postal').value;
	  }
	  
	  /***************************************************************************************
	                           Add Product To Cart Via Link
	  ***************************************************************************************/
	  function dnd(){
  		if(receiveReq.readyState == 4 || receiveReq.readyState == 0){
  			var status = get_var('dnd').checked;
  			receiveReq.open("GET", "/members/includes/reg_functions.php?function=dnd&status=" + status, true);
  			receiveReq.onreadystatechange = (null);
  			receiveReq.send(null);
  		}
	  }
	  
	  
	  function addProduct(prod_id, qty, source, mode, reload){
		  total_arguments = arguments.length - 5;
		  var prods = "";
		  for(i = 5; i < 5 + total_arguments; i++) {
		    prods += arguments[i] + ',';
		  }
		  
		  if(receiveReq.readyState == 4 || receiveReq.readyState == 0){
			  if (qty == ''){
					var qty = get_var('qty_'+source).value;
			  }
			  if(prods == ""){  
			  	  receiveReq.open("GET", "/members/includes/reg_functions.php?function=addToCart&prod_id="+ prod_id +"&qty="+ qty +"&mode=" + mode +"&reload=" + reload, true);
			  }else{
				  receiveReq.open("GET", "/members/includes/reg_functions.php?function=addToCart&prod_id="+ prod_id +"&qty="+ qty +"&mode=" + mode +"&reload=" + reload +"&combo=" + prods, true);
			  }
				  
			  if(source == "none"){
			  	receiveReq.onreadystatechange = updateCartTotal;
			  }
			  receiveReq.send(null);
		  }
	  }
	  
	  function updateCartTotal(){
		  if(receiveReq.readyState == 4){
			 var response = eval("(" + receiveReq.responseText + ")");
			 if(response.combo == ""){
				 if(response.reload == true) {
			   		window.location.href='/members/user_cart.php?camefrom=software';
				 }
			 }else{
				 javascript: get_var('nock_out').style.display = '';
				 get_var('content_info').innerHTML = response.combo;
				 Effect.Appear(get_var('content_info'), {duration:.2});
			 }
		  }
	  }
	  
	  /***************************************************************************************
	                     Turn Off "Save This Schedule" on School Sessions
	  ***************************************************************************************/
	  
	  function saveSchedOff(){
			get_var('save_button').disabled = true;
	  }
	  	
	  /***************************************************************************************
	                     Disable Submit Button
	  ***************************************************************************************/
	  
	  function button_disable(element, form){
		  
			element.disabled = true;
			get_var(form).submit();
			
	  }
	  
	  
	  	
	/***************************************************************************************
	                       Load Schedules in Schools
	***************************************************************************************/
	  
	  function display_sessions(school) {
	    if(school != "") {
	      if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
	        receiveReq.open("GET", "/members/includes/reg_functions.php?action=get_schedule&school=" + school, true);
	        receiveReq.onreadystatechange = handle_display_sessions;
	        receiveReq.send(null);
	        get_var('school_think').innerHTML = '<img src="/images/thinking_small.gif">';
	      }
	    } else {
	      get_var('schedule_tr').style.display = 'none';
	      get_var('school_think').innerHTML = '';
	    }
	  }
	  
	  function handle_display_sessions() {
	    if(receiveReq.readyState == 4) {
	      var response = eval("(" + receiveReq.responseText + ")");
	      if(response.rooms != "") {
	        get_var('schedule').innerHTML = response.schedule;
	      }
	    }
	    get_var('schedule_tr').style.display = '';
	    get_var('school_think').innerHTML = '';
	  }
	
	
	/***************************************************************************************
	                       Load Schedule Calendar
	***************************************************************************************/
	  
	  function open_schedule(session_id) {
		if(session_id != "") {
	      if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
	        receiveReq.open("GET", "/members/includes/reg_functions.php?action=sessCal&session_id=" + session_id, true);
	        receiveReq.onreadystatechange = handle_schedule_calendar;
	        receiveReq.send(null);
	        get_var('school_think').innerHTML = '<img src="/images/thinking_small.gif">';
	      }
	    } else {
	      get_var('cal').style.display = 'none';
        get_var('sess_info').style.display = 'none';
	      get_var('school_think').innerHTML = '';
	    }
	  }
	  
    
    
	  function handle_schedule_calendar() {
		
	    if(receiveReq.readyState == 4) {
	      var response = eval("(" + receiveReq.responseText + ")");
		  
	      if(response.schedule_calendar != "") {
			  
    			// Reset display text
    			get_var('session_message').innerHTML = ""
    			  
    	    get_var('schedule_calendar').innerHTML = response.calendar;
    			get_var('session_title').value = response.class_name;
    			get_var('session_cost_CDN').value = response.class_CDN;
    			get_var('session_cost_USD').value = response.class_USD;
    			get_var('room_list').innerHTML = response.rooms;
    			get_var('rooms_select').value = response.room_id;
    			get_var('teacher_list').innerHTML = response.teacher_list;			
    			get_var(response.selected_teacher).selected = true;
    			get_var('max_students').value = response.session_size;
    			if(response.attending > 0) color = 'green'; else color = 'red';
    			get_var('attendence').innerHTML = "<font style=\" font-size:15px; font-weight:bold; color:"+color+";\" >" + response.attending + "/" + response.max_attending + "</font>";
    			get_var('save_changes').innerHTML = response.save_changes;
			
	      }
        
        get_var('cal').style.display = '';
  		  get_var('sess_info').style.display = '';
  	    get_var('school_think').innerHTML = '';
        
        if(response.session_status == 1) {
          get_var('session_status').innerHTML = '<input type="hidden" name="session_status_value" id="session_status_value" value="1">';
          get_var('session_status').innerHTML += '<input type="button" onclick="set_session_status(\'innactive\');" style="text-aligh: center; width: 175px; color: #FFFFFF; background-color: #4D9827; font-weight: bold;" value="Session Open">';
        } else {
          get_var('session_status').innerHTML = '<input type="hidden" name="session_status_value" id="session_status_value" value="0">';
          get_var('session_status').innerHTML += '<input type="button" onclick="set_session_status(\'active\');" style="text-aligh: center; width: 175px; color: #FFFFFF; background-color: #FF0000; font-weight: bold;" value="Session Closed">';
        }
        
	    }
	    
	  }
	  
	  
	  
	/***************************************************************************************
	                       Load Room In School
	***************************************************************************************/
	 
	  function listRooms(school) {
	    if(school != "") {
	      if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
	        receiveReq.open("GET", "/members/includes/reg_functions.php?action=get_rooms&school=" + school, true);
	        receiveReq.onreadystatechange = load_rooms;
	        receiveReq.send(null);
	      }
	    } 
	  }
	  
	  function load_rooms() {
	    if(receiveReq.readyState == 4) {
	      var response = eval("(" + receiveReq.responseText + ")");
	      if(response.rooms != "") {
	        get_var('room_list').innerHTML = response.rooms;
	      }
	    }
	  }
	
	/***************************************************************************************
	                       Schedule Edit - Remove Class from Schedule
	***************************************************************************************/
	
	  function mod_schedule_conf_remove(classId) {
		  var answer = confirm('Are you sure you want to remove this class?');
		  if(answer) {
			  // delete class
			  if(classId != "") {
				  if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
					 get_var('schedule_calendar').innerHTML = '<div width="100%" align="center"><img border="0" src="/images/thinking_large.gif"></div>';
					 receiveReq.open("GET", "/members/includes/reg_functions.php?action=schedule_edit_remove_class&classId=" + classId, true);
					 receiveReq.onreadystatechange = handle_mod_schedule_conf_remove;
					 receiveReq.send(null);
				  }
			  } else {
				  alert('No class is set. Cannot proceed');
			  }
									 
		  } else {
			  // do nothing
		  }
	  }
	  
	  function handle_mod_schedule_conf_remove() {
		  if(receiveReq.readyState == 4) {
			  var response = eval("(" + receiveReq.responseText + ")");
			  if(response.class_deleted == 'true') {
				  get_var('session_message').innerHTML = '<font color=red>Class successfuly deleted</font><br>';
			  }
		  }
		  open_schedule(get_var('schedule_select').value);
	  }
	  
	  
	/***************************************************************************************
	                       Schedule Edit - Add Class to Schedule
	***************************************************************************************/
	  function add_class_to_session(session_id, room_id, last_date, last_start_time, last_end_time) {
		  if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
		 	  receiveReq.open("GET", "/members/includes/reg_functions.php?action=schedule_edit_add_class&session_id=" + session_id + "&room_id=" + room_id + "&last_date=" + last_date + "&last_start_time=" + last_start_time + "&last_end_time=" + last_end_time, true);
			  receiveReq.onreadystatechange = handle_add_class_to_session;
			  receiveReq.send(null);
		  }
	  }
	  
	  function handle_add_class_to_session() {
		  if(receiveReq.readyState == 4) {
			  var response = eval("(" + receiveReq.responseText + ")");
			  if(response.class_added == 'true') {
				 get_var('session_message').innerHTML = '<font color=red>Class added, please change date to the wished date</font><br>';
			  }
		  }
          open_schedule(get_var('schedule_select').value);
	  }

	/***************************************************************************************
	                      Show / Update Order Info
	***************************************************************************************/
	 
   function refund_comments(element, user_id){
      if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
        receiveReq.open("GET", "/members/includes/reg_functions.php?action=load_refund_info&id=" + element +"&user=" + user_id, true);
        receiveReq.onreadystatechange = display_comments;
        receiveReq.send(null);
      }
    }
    
    function display_comments() {
      if(receiveReq.readyState == 4) {
        var response = eval("(" + receiveReq.responseText + ")");
        if(response.comment != "") {
          get_var('info_'+response.element).innerHTML = response.order_info;
        }
      }
    }
  	  
    function updateComments(element, comment){
      if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
        if(comment != ""){
          var internal = get_var('internal_'+element).checked;
          
          if(internal == true){
            receiveReq.open("GET", "/members/includes/reg_functions.php?action=update_comments&id=" + element + "&comment=" + comment + "&internal=true", true);
            receiveReq.onreadystatechange = refresh_comments;
            receiveReq.send(null);
          }else{
            receiveReq.open("GET", "/members/includes/reg_functions.php?action=update_comments&id=" + element + "&comment=" + comment, true);
            receiveReq.onreadystatechange = refresh_comments;
            receiveReq.send(null);
          }
        }
      }
    }
  	  
    function refresh_comments() {
      if(receiveReq.readyState == 4) {
        var response = eval("(" + receiveReq.responseText + ")");
        if(response.comments != "") {	  
          get_var('history_'+response.element).innerHTML = response.comments;
          get_var('comment_'+response.element).value = '';
        }
      }
    }
	  
	  
  	function approve_refund(id, order_id, refund, user_id){
  		if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
  		
  			////////// DISABLE APPROVE AND DECLINE SO THAT IT DOESN'T GET CLICKED TWICE
  			get_var('order_status_' + id).innerHTML = "<img src='../images/small_prcsng.gif' style='margin-top:3px;'>";
  		
  			receiveReq.open("GET", "/members/includes/reg_functions.php?action=process_refund&id=" + id + "&orderId=" + order_id + "&refund=" + refund + "&user=" + user_id, true);
  	        receiveReq.onreadystatechange = update_aprvd;
  	        receiveReq.send(null);
  		}
  	}
  	
  	function decline_refund(id, order_id, user_id){
  		if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
  		
  			////////// DISABLE APPROVE AND DECLINE SO THAT IT DOESN'T GET CLICKED TWICE
  			get_var('order_status_' + id).innerHTML = "<img src='../images/small_prcsng.gif' style='margin-top:3px;'>";
  			
  			receiveReq.open("GET", "/members/includes/reg_functions.php?action=decline_refund&id=" + id + "&order=" + order_id + "&user=" + user_id, true);
  			receiveReq.onreadystatechange = update_aprvd;
  	        receiveReq.send(null);
  		}
  	}
  	
  	function update_aprvd() {
  	   if(receiveReq.readyState == 4) {
  	      var response = eval("(" + receiveReq.responseText + ")");
  		  
  		  if(response.message != "") {
  			if(response.status_update != ""){
  				get_var(response.target).innerHTML = response.status_update;
  			}
  			alert(response.message);
  	      }
  		  location.reload(true);
  	   }
  	}
	
	/***************************************************************************************
	                      Shipping Same As Billing Address
	***************************************************************************************/
	
  	function check_shipping(element){
  		var shipping = get_var(element).checked;
  		if(shipping == false){
  			get_var('shipping_info').style.display = '';
  		}else{
  			get_var('shipping_info').style.display = 'none';
  		}
  	}
	
	
	/***************************************************************************************
	                      Load Pop-Up Image
	***************************************************************************************/
	
  	function load_pop_up(img, width, height){
  		///////// GET POSTIONS
  		var left = tempX+(30);
  		var top = tempY-(height/2);
  		get_var('pop_up_img').style.left = left;
  		get_var('pop_up_img').style.top = top;
  		get_var('pop_up_img').innerHTML = "<img src=" + img + ">";
  		get_var('pop_up_img').style.display = "";

  	}
	
  	function hide_pop_up(img){
  		if( get_var('pop_up_img').style.display == ""){
  			get_var('pop_up_img').style.display = "none";
  		}
  	}
	

	/***************************************************************************************
	                      Disable Button / Processing
	***************************************************************************************/
  	function disable_button(button_id){
  		get_var(button_id).disabled = true;
  	}

	/***************************************************************************************
	                      Load accounts based on search
	***************************************************************************************/

  	function enable_button(button_id){
  		get_var(button_id).disabled = false;
  	}

    function list_accounts(search, ob, option){
	    if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
	        receiveReq.open("GET", "/members/includes/reg_functions.php?action=list_accounts&q=" + search +"&ob=" + ob + "&opt=" + option, true);
	        receiveReq.onreadystatechange = display_list_accounts;
	        receiveReq.send(null);
	    }
	  }
	  
	  function display_list_accounts() {
	    if(receiveReq.readyState == 4) {
	      var response = eval("(" + receiveReq.responseText + ")");
	      if(response.search_results != "") {
	        get_var('account_list').innerHTML = response.search_results;
	        get_var("dots").innerHTML = "";
	        clearInterval(dot_interval);
	      }
	    }
	  }
	
  /***************************************************************************************
	                      Load sessions in bulk interface
	***************************************************************************************/
    function tabs(character, size, columnSize) {
      tab = "";
      for(i = size; i < size+columnSize; i++) {
        tab += character;
      }
      return tab;
    }
  
    function load_sessions(type, school, currentSession) {
      
      // disable sending form once different school is selected. It automatically de-selects a class. Can't submit without a class.
      button = get_var('send_form');
      button.disabled = 'disabled';
      
      if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
        receiveReq.open("GET", "/members/includes/reg_functions.php?action=load_sessions&school=" + school + "&type=" + type + "&currentSession=" + currentSession, true);
        receiveReq.onreadystatechange = display_load_sessions;
        receiveReq.send(null);
      }
    }
    
    function display_load_sessions() {
      if(receiveReq.readyState == 4) {
        
        var response = eval("(" + receiveReq.responseText + ")");
        
        // FAIL
        if(response.error != "") {
          get_var('class_select').innerHTML = '';
          get_var('class_select').style.background = '#ffcaca url(/images/no_available_classes.png) center center no-repeat';
          get_var('class_select').outerHTML = get_var('class_select').outerHTML;
        // SUCCESS
        } else {
        
          get_var('class_select').style.background = '#ffffff';
          get_var('class_select').outerHTML = get_var('class_select').outerHTML;
          
          if(response.type == 'schools') {
            
            if(document.all) { // Or any IE testing
              get_var('school_select').innerHTML = '<option disabled="\'disabled\'" value="Select One">Select One</option>';
              get_var('school_select').innerHTML += response.selects;
              get_var('school_select').outerHTML = get_var('school_select').outerHTML;
            } else {
              get_var('school_select').innerHTML = response.selects;
            }
          }
          
          if(response.type == 'classes') {

            if(document.all) { // Or any IE testing
              get_var('class_select').innerHTML = '<option disabled="\'disabled\'" value="Select One">Select One</option>';
              get_var('class_select').innerHTML += response.selects;
              get_var('class_select').outerHTML = get_var('class_select').outerHTML;
            } else {
              get_var('class_select').innerHTML = response.selects;
            }
          }
          
        }
      }
    }
  
    function display_students(element) {
      if(get_var('student_container_' + element).style.display == 'none') {
        get_var('student_container_' + element).style.display = '';
        get_var('icon_container_' + element).src = '/images/-icon.png';
      } else {
        get_var('student_container_' + element).style.display = 'none';
        get_var('icon_container_' + element).src = '/images/+icon.png';
      }
      
    }
  
  
  /*
    BULK REGISTRATION SEARCH
  */
  
  function bulk_reg_rereg_search(search, type) {
    if(search != "") {
      if(receiveReq.readyState == 4 || receiveReq.readyState == 0) {
        receiveReq.open("GET", "/members/includes/reg_functions.php?action=bulk_reg_rereg_search&search_type=" + type +"&search_query=" + search, true);
        receiveReq.onreadystatechange = display_bulk_reg_rereg_search;
        receiveReq.send(null);
      }
    } else {
      clearInterval(dot_interval);
      get_var('dots').innerHTML = '&nbsp;';
      get_var('search_results').innerHTML = '';
    }
  }
  
  function display_bulk_reg_rereg_search() {
    if(receiveReq.readyState == 4) {
      var response = eval("(" + receiveReq.responseText + ")");
      
      if(response.error == "") {
        clearInterval(dot_interval);
        get_var('dots').innerHTML = '&nbsp;';
        get_var('search_results').innerHTML = response.search_results;
      }
    }
  }
  
  
  