// This script is used on the account pages

// array to keep track of which fields have been entered
var formField = new Array();
formField[0]='n'; // first name
formField[1]='n'; // last name
formField[2]='n'; // email
formField[3]='n'; // password
formField[4]='n'; // password_confirm
// formField[5]='n'; // captcha
formField[6]='n'; // display_name

// show gender icons
function genderIcons() {
	selected_gender = $('gender_select').getValue();
	$('tr_gender').hide();
	$('given_name').style.width = "225px";
	$('gender_js').show();
	selectGender(selected_gender);
}

function selectGender(gender) {
	if (gender == "male") {
		$('gender_male').src='/design/icons/icon_male_on.gif';
		$('gender_female').src='/design/icons/icon_female_off.gif';
		$('gender_male').style.cursor="default";
		$('gender_female').style.cursor="pointer";
		var gender_select = $('gender_select');
		for (var i=0;i<gender_select.options.length;i++) {
			if (gender_select.options[i].value == "male") {
		     	gender_select.options[i].selected = true;
		   	}
		}
	}
	if (gender == "female") {
		$('gender_male').src='/design/icons/icon_male_off.gif';
		$('gender_female').src='/design/icons/icon_female_on.gif';
		$('gender_male').style.cursor="pointer";
		$('gender_female').style.cursor="default";
		var gender_select = $('gender_select');
		for (var i=0;i<gender_select.options.length;i++) {
			if (gender_select.options[i].value == "female") {
		     	gender_select.options[i].selected = true;
		   	}
		}
	}
	
}

// function toggles name order
function toggleTitles() {
    if ($('input_display_titles').checked) {    	    
         display_titles='y';
         $('tr_titles').show();
         createCookie('display_titles','y',1);
         updateName($('given_name').value,$('family_name').value);
    } else {    	
         display_titles='n';
         $('tr_titles').hide();
         $('tr_profile_name').hide();
         // wipe title fields
         $('title_prefix').value='';
         $('title_suffix').value='';
         createCookie('display_titles','n',1);
         updateName($('given_name').value,$('family_name').value);
    }
}

function updateTitles(field) {
	// check capitalization
	var val = $(field).value;
    	val = checkTitleSpelling(val);
    	$(field).value=val;
	
	if ($('input_display_titles').checked) {
		display_titles='y';
		updateName($('given_name').value,$('family_name').value);
	}	
}

function checkTitleSpelling(str) {
	var result = "";
	str = str.trim();
	// go through words
	words = str.split(" ");
     for(i=0;i<words.length;i++) {
		word = words[i];
		if (word != "" && word != " ") {
			// check word			
			numcaps = countUpperCase(word);
		
			if (numcaps>4 || numcaps==0) {
				word=capitalizeStr(word);	
			}		
			
			// check title characters via ajax
			new Ajax.Request('/js/checkChars.php?word='+word, {		
				method:'get',
				asynchronous: false,
				onSuccess: function(transport) {
			   		var response = transport.responseText || "error";
			   		if (response != "" && response != "error") {			   			
			   			word = response;
			   			// save word
						words[i] = word;
			   		} else {
			   			word = "";
			   			words[i] = word;
			   		}
			   	}
			});
			
			
		}
	}
	// join words
	result = words.join(' ');
	result = result.trim();
	// num=countUpperCase(val);
    	// if (num>2 || num==0) { 	
	return result;
}

// function checks form after page loads to check fields that have already been entered
function initialize_register() {

     // first set submit button on disabled
     $('accept_btn').removeClassName('submit');
     $('accept_btn').disable();
	$('accept_btn').addClassName('disabled');
	
	// add tabindex 12 to recaptcha field
	$('recaptcha_response_field').setAttribute("tabindex", "12");

     // check first name
     var temp_given_name=$('given_name').value;
     if (temp_given_name.length>0) { 
     	if (checkName('first',temp_given_name)) { verifyForm('y',0); } else { verifyForm('n',0); } 
     } else {                       
     	// if no value in first name upon loading page then check if value in cookie
     	var cookie_given_name=readCookie('given_name');
     	if (cookie_given_name) {
	     	if (cookie_given_name.length>0) { 
	     		$('given_name').value=cookie_given_name;
	     		if (checkName('first',cookie_given_name)) { verifyForm('y',0); } else { verifyForm('n',0); }     	
          	} 
        	}
     }

     // check last name
     var temp_family_name=$('family_name').value;
     if (temp_family_name.length>0) { 
     	if (checkName('last',temp_family_name)) { verifyForm('y',1); } else { verifyForm('n',1); } 
     } else {
     	// if no value in last name upon loading page then check if value in cookie
     	var cookie_family_name=readCookie('family_name');
     	if (cookie_family_name) {
	     	if (cookie_family_name.length>0) { 
	     		$('family_name').value=cookie_family_name;
	     		if (checkName('last',cookie_family_name)) { verifyForm('y',1); } else { verifyForm('n',1); } 
	     	}
        	}     	
     }

     // check email
     var temp_email=$('email').value;
     if (temp_email.length>0) { 
     	if (checkEmail(temp_email)) { verifyForm('y',2); } else { verifyForm('n',2); } 
     } else {
     	// if no value in email upon loading page then check if value in cookie
     	var cookie_email=readCookie('email');
     	if (cookie_email) {
	     	if (cookie_email.length>0) { 
	     		
	     		// update email field with value from cookie
	     		$('email').value=cookie_email; 
	     		
	     		// check email address
	     		checkEmail(cookie_email);	     	
	     	}
        }     	
     }

     // check passwords
     var temp_password=$('password').value;
     var temp_password_confirm=$('password_confirm').value;
     if (temp_password.length>0) { if (checkPassword(temp_password)) { verifyForm('y',3); } else { verifyForm('n',3); } }
     if (temp_password_confirm.length>0) { if (checkPassword_confirm(temp_password_confirm)) { verifyForm('y',4); } else { verifyForm('n',4); } }

     // check captcha
     // var temp_captcha=$('captcha').value;
     // if (temp_captcha.length>0) { if (checkCaptcha(temp_captcha)) { verifyForm('y',5); } else { verifyForm('n',5); } }
     
     // check use_alias
     use_real_name='y';
     var cookie_use_real_name=readCookie('use_real_name');
     if (cookie_use_real_name) {
		if (cookie_use_real_name=='n') { 
			$('input_use_real_name').checked=true;
			
			$('swap_name_row').hide(); 
			use_real_name='n';
		}    
     }
     
     // check if titles should be displayed
     display_titles='n';
     var cookie_display_titles=readCookie('display_titles');
     if (cookie_display_titles) {
		if (cookie_display_titles=='y') { 
			$('input_display_titles').checked=true;
			display_titles='y';
		}    
     } else {
     	if ($('input_display_titles').checked) {
			display_titles='y';
		}
	}
     
     // update display_name field based on alias
     if (use_real_name=='n') {
        $('display_name').addClassName('positive'); 
        $('display_name').removeClassName('disabled'); 
        $('display_name').enable();
        $('display_name').focus();
        $('alias_description').show();
     } else {
        $('display_name').addClassName('disabled'); 
        $('display_name').removeClassName('positive'); 
        $('display_name').disable();
        $('alias_description').hide();
    }    
    
    // check name_order
    var cookie_name_order=readCookie('name_order');
    if (cookie_name_order) {
    		if (cookie_name_order=='2') {
    			$('input_swap_name').checked=true;
    			name_order=2;
    		}
    }
    
    // if alias is not being used then update display_name with given_name and family_name    
    if (use_real_name=='y') {

	updateName($('given_name').value,$('family_name').value);

    // otherwise check if display_name already exists and do database lookup
    } else {                                                             

        var temp_display_name=$('display_name').value;
        if (temp_display_name.length>0) { 

		// display_name already exists; do database lookup		
        	lookupDisplayName(temp_display_name);
  
        } else {
        
        	// check if display_name available in cookie
	     	var cookie_display_name=readCookie('display_name');
     		if (cookie_display_name) {
	     		if (cookie_display_name.length>0) { 
	     		
	     			// update display_name and screen_name field with value from cookie and do database check
	     			updateDisplayname(cookie_display_name);
	     			// $('display_name').value=cookie_display_name; 
	     			// $('screen_name').value=cookie_display_name; 
	     			lookupDisplayName(cookie_display_name);
	     		}
        	}     	
        }
     }
}   

// function to keep track how many green checkmarks there are
function verifyForm(str,field) {
     
     // update array with new value
     formField[field]=str;
     
     if (scope == undefined) { scope = 'register'; }
     
     // if this is identity page then some fields aren't necessary to check
     if (scope == 'identity') {  
		// check given_name
		given_name = $('given_name').value;
		given_name = given_name.trim();
		if (given_name != '') { formField[0]='y'; }
		family_name = $('family_name').value;
		family_name = family_name.trim();
		if (family_name != '') { formField[1]='y'; }
		formField[2]='y'; // email
		formField[3]='y'; // password
		formField[4]='y'; // password_confirm
		// formField[5]='y'; // captcha
		// check display_name
		display_name = $('display_name').value;
		display_name = display_name.trim();
		if (display_name == '') {
			formField[6]='n'; // display_name
		}
		if (display_name != '') {
			formField[6]='y'; // display_name
		}
	}
	
	// alert(formField[0]+formField[1]+formField[2]+formField[3]+formField[4]+formField[5]+formField[6]);
     
     // if all fields in array are set to y then make submit button green     
     if (formField[0]=='y' && formField[1]=='y' && formField[2]=='y' && formField[3]=='y' && formField[4]=='y' && formField[6]=='y') {
	     $('accept_btn').enable();
	     $('accept_btn').addClassName('submit');
	     $('accept_btn').removeClassName('disabled');
     } else { 
          // keep submit button gray
          if (scope == 'identity') {
          	$('accept_btn').disable();
          }
	     $('accept_btn').removeClassName('submit');
	     $('accept_btn').addClassName('disabled');
     }
}

// this function gets the first and last name from the form and updates the display_name, but only if use_alias is set to no
function updateName(var1,var2) { 
	
     // check name on capitalization (correctly formatted names are returned and function also adds names to cookies)
     var1=checkName('first',var1);
     var2=checkName('last',var2);     

     // update display_name field based on name_order
     given_name=var1.trim();
     family_name=var2.trim();
     if (use_real_name=='y') {

          if (name_order==1) { full_name=given_name+' '+family_name; }
          if (name_order==2) { full_name=family_name+' '+given_name; }
          
          // check if titles should be displayed
//          if (display_titles == 'y') {
//          	title_prefix = $('title_prefix').value;	
//          	title_suffix = $('title_suffix').value;          	
//          	if (title_prefix != '') {
//          		title_prefix = title_prefix.trim();
//          		full_name=title_prefix+' '+full_name;
//          	}
//          	if (title_suffix != '') {
//          		title_suffix = title_suffix.trim();
//          		full_name=full_name+' '+title_suffix;
//          	}
//          }


          // check display_name in database using ajax function in lookupDisplayName function
          lookupDisplayName(full_name);

     }                                          
     
}

// function checks display_name in database with ajax
function lookupDisplayName(display_name) {

	var doLookup="y";

        // if this is identity page then check if original name was kept
        // if (this_page=="identity") {                
        // 
        //  	if (display_name==original_screen_name) {
        //  		// no need to check this
        //  		
	// 		// put v behind display_name
	// 		makeGreen('display_name');          		
        //  		
        //  		// do not do lookup below
        //  		doLookup="n";         		
        // 	}      
        // }      

	// save display_name in cookie
     createCookie('display_name',display_name,1); 
        
     // if this is an alias then check for capitals and special characters
     if (use_real_name=='n') {   
     	
     	// trim string
     	display_name=display_name.trim();
     	
     	// replace multiple spaces with single spaces
    		display_name=display_name.replace(/\s+/g," ");
    		
    		// check capitalization
    		num=countUpperCase(display_name);
    		// if number of uppercase letters is zero or more than 2 then capitalize word
    		if (num>2 || num==0) { display_name=capitalizeStr(display_name); }
    		
    		// update display_name field with update name
    		updateDisplayname(display_name);
    		// $('display_name').value=display_name;
        	// $('screen_name').value=display_name;
    
    		// define variable to test against
    		var str_test=display_name;
    
    		// remove accents in str_test
    		str_test=removeAccents(str_test);
    
    		// remove - from str_test
    		str_test=str_test.replace("-",""); 
    		
     	
     	// check if name has only allowed characters
    		if (display_name!='') {
    			
	    		var re = /[^a-zA-Z ]/;
		    	if (re.test(str_test)) {
		    		
		    		makeRed('display_name');
		    		verifyForm('n',6);
		    		$('display_name_error').update('This display name is invalid');
        		     $('display_name_error').show();
	            	return false;
	            	
		    	}
		    	
		    	// check if name is long enough
		    	if (display_name.length < 4) {
		    		makeRed('display_name');
		    		verifyForm('n',6);
		    		$('display_name_error').update('Display name must be at least 3 characters');
        		     $('display_name_error').show();
	            	return false;
		    	}
		    	
		}     	
     	
     }
        
     if (doLookup=="y") {   
     	
		// if given_name or family_name is not filled and use alias is not checked then empty display_name
		var temp_given_name=$('given_name').value;
		temp_given_name=temp_given_name.trim();
		var temp_family_name=$('family_name').value;
		temp_family_name=temp_family_name.trim();
		if (use_real_name=='y') {
			if (temp_given_name=='' || temp_family_name=='') {
				$('display_name').value='';
				$('screen_name').value='';
				$('profile_name').value='';
				$('profile_name').hide();				
				$('tr_profile_name').hide();				
				verifyForm('n',6);
				makeNeutral('display_name');
	        		return false;
			}
		}
						
		// temporarily place new display_name in field ... may be changed later after ajax check
		// updateDisplayname(display_name);
		// $('display_name').value=display_name;
		// $('screen_name').value=display_name;
		
		// temporarily replace star, V or X behind display_name with loading graphic
		$('display_name_star').hide();
		$('display_name_v').hide();
		$('display_name_x').hide();                            
		$('display_name_loading').show();                         
		
		// remove accents from display_name to look up
		// var display_name_lookup=removeAccents(display_name);
		var display_name_lookup=display_name;
		
		   
		// ajax request
		new Ajax.Request('/js/checkDisplayName.php?display_name='+display_name_lookup+'&member_id='+member_id, {
		
		     method:'get',
		     onSuccess: function(transport){
		     var response = transport.responseText || "error";
		     // alert('Ajax response from display_name check: '+response);
		     
		     if (response=='positive') {
		          // display_name not in use    
						
		          // remove loading graphic
		          $('display_name_loading').hide();
		
		          // remove error message in case it was there
		     	$('display_name_error').update('');
		      	$('display_name_error').hide();
		
		          // put v behind display_name
		          makeGreen('display_name'); 
		            
		          // set verifyForm value to y
		          verifyForm('y',6);
		
		          // update display_name in form
		          updateDisplayname(display_name);
		          // $('display_name').value=display_name; 
		          // $('screen_name').value=display_name; 
		            
		          // define member_url
		          $('input_member_url').value=getMemberUrl(display_name);
		            
		
		     } else {
		          // display_name in use
		
		          // remove loading graphic
		          $('display_name_loading').hide();
		
		      	// if use_alias is set to no then just update the name with sequence number and put V behind it
		      	if (use_real_name=='y') {
		      
		          	// put v behind display_name
		               makeGreen('display_name');
		
		               // remove error message in case it was there
			     	$('display_name_error').update('');
			      	$('display_name_error').hide();
		
		               // set verifyForm value to y
		              	verifyForm('y',6);
		              
		               // define original display_name without number to pass onto getMemberUrl
		               var original_display_name=display_name;
					
					// only use response if it isn't error
		               if (response != 'error') {
					
		               	// add sequence number behind name
			      		display_name=display_name+' (#'+response+')';
		
		               	// update display_name in form
		               	// alert("1: "+display_name);
		               	updateDisplayname(display_name);
		               
		               	// define member_url
		              		$('input_member_url').value=getMemberUrl(original_display_name);                      
		              		
		              	}
		   	      
		  	     // But if use_alias is set to yes then put red cross behind it because user will need to come up with unique display_name
		  	     } else {                                                                                                                 
			      
			      	$('display_name_error').update('This display name is already taken');
			      	$('display_name_error').show();
			      	makeRed('display_name');
		
		               // set verifyForm value to n
		              	verifyForm('n',6);
		
		  	     }
		     }
		},
		onFailure: function() { 
		   // something went wrong with ajax script
		}
		});  
        
     } else {
     	updateDisplayname(display_name);
     	// $('display_name').value=display_name;
     }
} 

// update display name (and check titles)
function updateDisplayname(display_name) {	
	

	// check if display titles
	display_name_with_titles = display_name;
	if ($('input_display_titles').checked) {    
	
		title_prefix = $('title_prefix').value;	
     	title_suffix = $('title_suffix').value;          	
     	if (title_prefix != '') {
     		title_prefix = title_prefix.trim();
     		display_name_with_titles=title_prefix+' '+display_name_with_titles;
     	}
     	if (title_suffix != '') {
     		title_suffix = title_suffix.trim();
     		display_name_with_titles=display_name_with_titles+' '+title_suffix;
     	}		
	}
	
	// has titles
	if (display_name_with_titles != display_name) {
		
		// has (# inside name
		// if (display_name.indexOf("(#")) {
			$('display_name').value=display_name;
			$('screen_name').value=display_name;
			
			// take (#n) out of name to place in profile name
			var profile_name = display_name_with_titles;
			
			var str = profile_name.split('(#');			
			profile_name = str[0];
			
			if (str[1]) {
				var rest = str[1];
				// alert(rest);
				str = rest.split(')',2);
				if (str[1]) {
					profile_name=profile_name+str[1];					
				}
			}
			// clean up profile_name
			profile_name = profile_name.replace("  "," ");
			profile_name = profile_name.trim();
			
			$('profile_name').show();
			$('profile_name').value=profile_name;
			$('tr_profile_name').show();
//		} else {
//			$('display_name').value=display_name_with_titles;
//			$('screen_name').value=display_name;
//			$('profile_name').value="";
//			$('profile_name').hide();
//		}		
		
	// doesn't have titles
	} else {
	
		$('display_name').value=display_name;
		$('screen_name').value=display_name;	
		$('profile_name').value="";
		$('tr_profile_name').hide();		
	}
	
	
	
}

// define member_url (used by lookupDisplayName after looking up display_name
function getMemberUrl(display_name) {       

	// trim to make sure no spaces around name
	display_name=display_name.trim();         
	
	// remove accents from letters
	display_name=removeAccents(display_name);
	
	// replace spaces with underscores
	display_name=display_name.replace(/ /g,"_");
	
     // temporarily display member_url on page
     // $('temporary_member_url').update("member_url = "+display_name);
	
	return display_name
}


// this function checks the name after it has been changed
function checkName(obj,str) { 

    // trim string
    str=str.trim()

    // replace multiple spaces with single spaces
    str=str.replace(/\s+/g," ");
    
    // define variable to test against
    var str_test=str;
    
    // remove accents in str_test
    str_test=removeAccents(str_test);
    
    // remove - from str_test
    str_test=str_test.replace("-","");
    
    // check if name has only allowed characters
    if (str!='') {
	    var re = /[^a-zA-Z ]/;

	    if (re.test(str_test)) {
	        if (obj=='first') {
	            makeRed('given_name');    
	            verifyForm('n',0);
	            return false;
	        }
	        if (obj=='last') {
	            makeRed('family_name');  
	            verifyForm('n',1);
	            return false;
	        }
	    } else {
	        if (obj=='first') {
	            makeGreen('given_name');
	            verifyForm('y',0);
	        } 
	        if (obj=='last') {
	            makeGreen('family_name');
	            verifyForm('y',1);
	        }
	    }             
    } else {
    
    	// if string is empty then make field neutral
    	if (obj=='first') {
    		makeNeutral('given_name');
    		verifyForm('n',0);
    	} else if (obj=='last') {
    		makeNeutral('family_name');
    		verifyForm('n',1);
    	}
    }

    num=countUpperCase(str);
    // if number of uppercase letters is zero or more than 2 then capitalize word
    if (num>2 || num==0) { str=capitalizeStr(str); }
    if (obj=='first') {
         given_name=str;
         $('given_name').value=given_name;
    }
    if (obj=='last') {
         family_name=str;
         $('family_name').value=family_name;
    }
    
    

    // save entered names in cookie and return new string
    if (obj=='first') { 
    	createCookie('given_name',given_name,1); 
    	return given_name;
    }   
    if (obj=='last') { 
    	createCookie('family_name',family_name,1); 
    	return family_name;
    }   
    
}

// the following two functions hide and show the sidebars; opacity is set to 20% 
function hideSidebars() { 
     new Effect.Opacity('leftcolumn', { to: 0.2, duration:0.2 }); 
     new Effect.Opacity('rightcolumn', { to: 0.2, duration:0.2 }); 
     return false; 
}
function showSidebars() { 
     new Effect.Opacity('leftcolumn', {  to: 1, duration:0.2 }); 
     new Effect.Opacity('rightcolumn', {  to: 1, duration:0.2 }); 
     return false; 
}

// toggle use_alias checkbox changed display_name field
function toggleAlias() {
    if ($('show_alias').checked) {
        $('display_name').addClassName('positive'); 
        $('display_name').removeClassName('disabled'); 
        $('display_name').enable();
        $('display_name').focus();
        $('alias_description').show();
        $('swap_name_row').hide();
        use_alias='y';                  
        createCookie('use_alias','y',1);
    } else {
        $('display_name').addClassName('disabled'); 
        $('display_name').removeClassName('positive'); 
        $('display_name').disable();
        $('alias_description').hide();
        $('swap_name_row').show();
        use_alias='n';
        createCookie('use_alias','n',1);
        updateName(given_name,family_name);        
    }
}

function toggleUseRealName() {
	
    if ($('input_use_real_name').checked) {
    	
        $('display_name').addClassName('disabled'); 
        $('display_name').removeClassName('positive'); 
        $('display_name').disable();
        $('alias_description').hide();
        $('swap_name_row').show();
        $('swap_display_titles').show();
        toggleTitles();
        use_real_name='y';
        createCookie('use_real_name','y',1);
        updateName(given_name,family_name);        
    } else {
    	
        $('display_name').addClassName('positive'); 
        $('display_name').removeClassName('disabled'); 
        $('display_name').enable();
        $('display_name').focus();
        $('alias_description').show();
        $('swap_display_titles').hide();
        $('tr_titles').hide();
        $('tr_profile_name').hide();
        $('swap_name_row').hide();
        $('title_prefix').value='';
        $('title_suffix').value='';
        $('input_display_titles').checked=false;
        use_real_name='n';                  
        createCookie('use_real_name','n',1);
    }
}

// function toggles name order
function toggleNameOrder() {
	
    if ($('input_swap_name').checked) {    
    	
         name_order=2;
         createCookie('name_order','2',1);
         updateName(given_name,family_name);
         // $('input_swap_name').value='y';
    } else {
    	
    	    name_order=1;                   
         createCookie('name_order','1',1);
         updateName(given_name,family_name);
         // $('input_swap_name').value='n';
    }
}

// function to count uppercase letters in string
function countUpperCase(obj) {
    result = "";
    if (obj.length > 0 && obj != "") {
    		var result = obj.replace(/[^A-Z]/g,"");
    }
    return result.length;
}

// function to capitalize first letter in string
function capitalizeStr(val) {
     /// first make entire word lower case 
     val=val.toLowerCase();
     newVal = '';
     val = val.split(' ');
     // go through words
     for(var c=0; c < val.length; c++) {
         newVal += val[c].substring(0,1).toUpperCase() + val[c].substring(1,val[c].length) + ' ';
     }
     return newVal;     
}

// function to trim white space from beginning and end of string
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

// function to check if email address is valid
function checkEmail(email) {

    // save entered email in cookie
    createCookie('email',email,1);    

    // temporarily replace star, V or X behind email with loading graphic
    $('email_star').hide();
    $('email_v').hide();
    $('email_x').hide();
    $('email_loading').show();

    // check if formatting of email is correct
    var filter = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-]+)+$/;
    if (!filter.test(email)) {
        // email address is not formatted correctly
        makeRed('email');
        verifyForm('n',2)
        $('email_error').update('Email address is not formatted correctly');
        $('email_error').show();
	   $('email_loading').hide();
	   $('activation_email_text').update('');
        return false;
    } else {

        // email format is correct, now check if email already exists in database
        new Ajax.Request('/js/checkEmail.php?email='+email, {
               method:'get',
               onSuccess: function(transport){
               var response = transport.responseText || "error";
               if (response=='positive') {
                      // email not in use
                      $('email_loading').hide();
                      makeGreen('email');
                      $('email_error').update('');
                      $('email_error').hide();                       
                      verifyForm('y',2)
                      $('activation_email_text').update("We'll send an activation email to <b>"+email+"</b>");
               } else if (response=='inuse') {
                      // email in use           
                      $('email_loading').hide();
                      makeRed('email');
                      $('email_error').update('This email address is already in use');
                      $('email_error').show();                       
                      verifyForm('n',2)
                      $('activation_email_text').update('');
                      return false;
               }
        },
        onFailure: function() { 
             // something went wrong with ajax script
             verifyForm('y',2) 
        }
        });
    }

    return true;
}

// function to add red cross behind a field
function makeRed(field) { $(field).addClassName('error'); $(field).removeClassName('positive'); $(field).focus; $(field+'_star').hide(); $(field+'_v').hide();     $(field+'_x').show(); }

// function to add green checkmark behind a field
function makeGreen(field) { $(field).addClassName('positive'); $(field).removeClassName('error'); $(field+'_star').hide(); $(field+'_x').hide(); $(field+'_v').show(); }

// function to add star and remove green or red marks
function makeNeutral(field) { $(field).removeClassName('error'); $(field).addClassName('positive'); $(field+'_star').show(); $(field+'_v').hide(); $(field+'_x').hide(); }


// function to check password length
function checkPassword(str) {
    str=str.trim();
    num=str.length;
    if (num<6) {
        // password is not long enough
        makeRed('password');
        verifyForm('n',3)
        return false;
    } else {
        // password is fine
        makeGreen('password');
        verifyForm('y',3)
        // now check seconod password
        str=$('password_confirm').value;
        // if second password already filled in go check it
        if (str.length>0) {
        	checkPassword_confirm($('password_confirm').value);
        } else {
        	return true;
        }
    }
}

// function to check password if second password is same as first
function checkPassword_confirm(str) {
    if (str!=$('password').value) {   
        // passwords are not the same
        makeRed('password_confirm');
        verifyForm('n',4)
        return false;
    } else {
        // passwords are the same
	makeGreen('password_confirm');
	verifyForm('y',4)
	return true;
    }
}

// function to check if captcha entered
//function checkCaptcha(str) {
//    if (str.length>0) {
//         verifyForm('y',5);
//    } else {
//         verifyForm('n',5);    
//    }
//}

// function to create a javascript cookie
function createCookie(name,value,days) {
	value=escape(value);
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
	// alert('set cookie '+name+' to value '+value);
}

// function to read cookie
function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length,c.length));
	}
	return null;
}

// function checks if string is url
function isUrl(s) {
      var regexp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)? (\/|\/([\w#!:.?+=&%@!\-\/]))?/
      return regexp.test(s);
}                 
                                   
// function shows correct box on bio page for selected profile type
function showType(v) {
     if (v=='academic') { 
          // $('form_academic').show();
          // $('form_business').hide();
          // $('form_friend').hide();
     } else if (v=='business') { 
          // $('form_academic').hide();
          // $('form_business').show();
          // $('form_friend').hide();
     } else if (v=='friend') { 
          // $('form_academic').hide();
          // $('form_business').hide();
          // $('form_friend').show();
     } else {
          // $('form_academic').hide();
          // $('form_business').hide();
          // $('form_friend').hide();
    }        
    
    // OVERRIDE ALWAYS USE BUSINESS    
    $('form_business').show();
    
}

// function shows form on bio page when profile set to yes
function showProfile() {
     $('form_personal'). show();
     // $('profile_type').show();
     showType(profile_type);
}

// function hides form on bio page when profile set to no
function hideProfile() {
     $('form_personal'). hide();
     // $('profile_type').hide();
     // $('form_academic'). hide();
     $('form_business'). hide();
     $('form_friend'). hide();
}
                 
// set value of slider on bio page
function setSlider(value) {
     profile_slider.setValue(value);
}

// toggle profile type switch
function toggleProfileType() {
     var form = $('member_form');
     var typeValue = form.getInputs('radio','profile_type').find(function(radio) { return radio.checked; }).value;
     profile_type=typeValue;
     showType(typeValue);
}

// The following function creates a new input field and then calls datePickerController.create();
// to dynamically create a new datePicker widget for it 
function newline() {
        var total = document.getElementById("newline-wrapper").getElementsByTagName("table").length;
        total++;

        // Clone the first div in the series
        var tbl = document.getElementById("newline-wrapper").getElementsByTagName("table")[0].cloneNode(true);

        // DOM inject the wrapper div
        document.getElementById("newline-wrapper").appendChild(tbl);

        var buts = tbl.getElementsByTagName("a");
        if(buts.length) {
                buts[0].parentNode.removeChild(buts[0]);
                buts = null;
        }

        // Reset the cloned label's "for" attributes
        var labels = tbl.getElementsByTagName('label');

        for(var i = 0, lbl; lbl = labels[i]; i++) {
                // Set the new labels "for" attribute
                if(lbl["htmlFor"]) {
                        lbl["htmlFor"] = lbl["htmlFor"].replace(/[0-9]+/g, total);
                } else if(lbl.getAttribute("for")) {
                        lbl.setAttribute("for", lbl.getAttribute("for").replace(/[0-9]+/, total));
                }
        }

        // Reset the input's name and id attributes
        var inputs = tbl.getElementsByTagName('input');
        for(var i = 0, inp; inp = inputs[i]; i++) {
                // Set the new input's id and name attribute
                inp.id = inp.name = inp.id.replace(/[0-9]+/g, total);
                if(inp.type == "text") inp.value = "";
        }

        // Call the create method to create and associate a new date-picker widgit with the new input
        datePickerController.create(document.getElementById("date-" + total));

        var dp = datePickerController.datePickers["dp-normal-1"];

        // No more than 5 inputs
        if(total == 5) document.getElementById("newline").style.display = "none";

        // Stop the event
        return false;
}






// function invokes populateUniversities when state selected
function universitySelectSubdivision(country) {
        var selected_state=$(country+'_subdivisions').getValue();
        if (selected_state!="-1" && selected_state.length>0) {
                 // Populate universities dropdown 
                 populateUniversities(country,selected_state,0,0,'n');
        } else {
        if (selected_state=="-1") {
                 // Populate universities dropdown with all states
                 populateUniversities(country,'',0,0,'n');        
        } }                                               
} 


// function does ajax lookup for universities based on selected country and state
function populateUniversities(country,state,selectedentryid,selectedresearchgroup,highlight_row) { 

        // activate loading icon
        $('university_loading').show();
        
        // hide message
        $('universities_found').hide();
        
        // ajax request
        if (state!="-1" && state.length>0) { 
        	var ajaxURL="http://www.chatbots.org/ajax/research_institutes/"+country+"/"+state+"/"; 
        } else { 
        	var ajaxURL="http://www.chatbots.org/ajax/research_institutes/"+country+"/"; 
        }                  
        new Ajax.Request(ajaxURL, {
               method:'get',
               onSuccess: function(transport){
               var response = transport.responseText || "error";
               var myarray = response.split('||||||');  
               
               // display number of results found
               if (myarray.length==1) {   
               		// show no results message
                        $('universities_selector').show();
			
			$('universities_found').show();
			$('universities_found').update('No universities found.<br/><a style="font-size:11px;display:block;margin-bottom:8px;" title="Please add your university here :: :: width:600" href="/popups/new_university/'+country+'/'+state+'/" rel="iframe" class="lightview">Add a new university to this country</a>');               		
			
			// hide university dropdown
			$('university').hide();
			
			// hide research_group dropdown
			$('research_group').show();
			$('research_groups_found').hide();
			$('research_group_selector').hide();
			    			 
              		// define select
			var select = $('university');

			// narrow select box
			select.setStyle({
				width: '220px'
			});
			
			// clear out existing items
			select.options.length = 0; 

		        // hide loading icon
		        $('university_loading').hide();
		        
		        // hide research group selector
		        $('research_group_selector').hide();	        
	        

	       } else {
                        $('universities_selector').show();
                        
	       		// update message
			$('universities_found').show();
			$('universities_found').update('<div style="font-size:11px;display:block;margin-bottom:8px;">Your university not in the list? <a href="/popups/new_university/'+country+'/'+state+'/" title="Please add your university here :: :: width:600" rel="iframe" class="lightview">Add it here!</a></div>');               		

			// enable university dropdown
			$('university').show();
			$('university').enable();

              		// define select
			var select = $('university');
			
			// clear out existing items
			select.options.length = 0; 

			// add first option with instruction
 		        var new_option_id="0";  
 		        var results=(myarray.length-1);                   
 		        var results_noun="universities";
 		        if (results==1) { results_noun="university"; }
			var new_option_text=results+" "+results_noun+" found";
			select.options.add(new Option(new_option_text,new_option_id))
			
			// widen select box
			select.setStyle({
				width: '270px'
			});

			// go through array and insert data into select
			for(var i=0; i < myarray.length; i++) {
			    var d = myarray[i];
			    var temparray=d.split('|||');
			    var new_option_id=temparray[0];
			    var new_option_text=temparray[1];
			    if (new_option_id!="") {
				    select.options.add(new Option(new_option_text,new_option_id))
			    }
			}

		        // hide loading icon
		        $('university_loading').hide(); 
		        
		        // if selectedentryid is set then select this in university dropdown
		        if (selectedentryid!=0) {
		        	var university_select=$('university');
				for (var i=0;i<university_select.options.length;i++) {
					if (university_select.options[i].value == selectedentryid) {
		        			university_select.options[i].selected = true;
		   			}
		  		}
			}
			
			// if research group was already selected upon starting this function then invoice selectUniversity function with that research group
			if (selectedresearchgroup!="" && selectedresearchgroup!="0" && selectedresearchgroup!=0) {                                           			 
				selectUniversity(selectedresearchgroup,'n');
			} else if (selectedresearchgroup=="0" || selectedresearchgroup==0) {
				selectUniversity(0,'n');
			}
			
			// highlight row     
			if (highlight_row=='y') {
				new Effect.Highlight('universities_selector', { startcolor: '#ffba00', endcolor: '#f4f4f4' });
			}
			

	       }
        },
        onFailure: function() { 
             // something went wrong with ajax script

	     // hide loading icon
	     $('university_loading').hide();

             // define select
	     var select = $('university');
			
	     // clear out existing items
	     select.options.length = 0; 

	     // add first option with instruction
 	     var new_option_id="0";
	     var new_option_text="Error while retrieving universities";
	     select.options.add(new Option(new_option_text,new_option_id))
        }
        });  
        
     

} 

// function to populate research group dropdown after selecting university
function selectUniversity(selectedentryid,highlight_row) {
 	var selected_university=$('university').getValue();
 	var country=$('university_country').getValue();  
 	
	// activate loading icon

        $('research_group_loading').show();
        
        // ajax request
        var ajaxURL="http://www.chatbots.org/ajax/research_groups/"+selected_university+"/"; 
        
        new Ajax.Request(ajaxURL, {
               method:'get',
               onSuccess: function(transport){
               var response = transport.responseText || "error";
               
               var myarray = response.split('||||||');  
               
               if (response=="error" || myarray.length==1) {

			// hide research group row
			$('research_group_selector').show();

	       		// show message
			$('research_groups_found').show();
			$('research_groups_found').update('No research groups found.<br/><a style="font-size:11px;display:block;margin-bottom:8px;" href="/popups/new_research_group/'+country+'/'+selected_university+'/" title="Please add your research group here :: :: width:600, height:460" rel="iframe" class="lightview">Add a new research group to this university</a>');               		

			// hide research group dropdown
			$('research_group').hide();
    			 
              		// define select
			var select = $('research_group');

			// narrow select box
			select.setStyle({
				width: '220px'
			});
			
			// clear out existing items
			select.options.length = 0; 

		        // hide loading icon
		        $('research_group_loading').hide();

	       } else {

			// show research group row
			$('research_group_selector').show();

	       		// show message
			$('research_groups_found').show();
			$('research_groups_found').update('<div style="font-size:11px;display:block;margin-bottom:8px;">Your group not in the list? <a href="/popups/new_research_group/'+country+'/'+selected_university+'/" title="Please add your research group here :: :: width:600, height:460" rel="iframe" class="lightview">Add it here!</a></div>');               		

			// show research_group dropdown
			$('research_group').show();
			$('research_group').enable();

              		// define select
			var select = $('research_group');
			
			// clear out existing items
			select.options.length = 0; 

			// add first option with instruction
 		        var new_option_id="0";
 		        var results=(myarray.length-1);
 		        var results_noun="research groups";
 		        if (results==1) { results_noun="research group"; }
			var new_option_text=results+" "+results_noun+" found";
			select.options.add(new Option(new_option_text,new_option_id))
			
			// widen select box
			select.setStyle({
				width: '270px'
			});

			// go through array and insert data into select
			for(var i=0; i < myarray.length; i++) {
			    var d = myarray[i];
			    var temparray=d.split('|||');
			    var new_option_id=temparray[0];
			    var new_option_text=temparray[1];
			    if (new_option_id!="") {
				    select.options.add(new Option(new_option_text,new_option_id))
			    }
			}

		        // hide loading icon
		        $('research_group_loading').hide();

		        // if selectedentryid is set then select this in research group in the dropdown
		        if (selectedentryid!=0) {
		        	var research_group_select=$('research_group');
				for (var i=0;i<research_group_select.options.length;i++) {
					if (research_group_select.options[i].value == selectedentryid) {
		        			research_group_select.options[i].selected = true;
		   			}
		  		}
			}

			// highlight row     
			if (highlight_row=='y') {
				new Effect.Highlight('research_group_selector', { startcolor: '#ffba00', endcolor: '#f4f4f4' });
			}



	       }
        },
        onFailure: function() { 
             // something went wrong with ajax script

	     // hide loading icon
	     $('research_group_loading').hide();

             // define select
	     var select = $('research_group');
			
	     // clear out existing items
	     select.options.length = 0; 

	     // add first option with instruction
 	     var new_option_id="0";
	     var new_option_text="Error while retrieving research groups";
	     select.options.add(new Option(new_option_text,new_option_id))
        }
        });



}     


// open new window
function openWindow(url) {
	window.open(url,'newwindow','width=400,height=500,resizable=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no');
}

// check if url is valid and force http in front of not present
function checkUrl(field) {
        str=$(field).value;
        str=str.trim();
        if (str.length>0) {
	        if (str.substring(0,7)=="http://" || str.substring(0,8)=="https://") {
	                 // url begins good
	        } else {
	                 // check if double slash occurs in string
	                 if (str.indexOf('//')>=0) {
	                  
	                       // split string in half where double slash occurs
	                       var str_array=str.split('//');
	                       
	                       // make new string with proper beginning
	                       str="http://"+str_array[1];
	                       $(field).value=str;
	                 
	                 // if no double slash, was :/ typed?
	                 } else if (str.indexOf(':/')>=0) {
	
	                       // split string in half where double slash occurs
	                       var str_array=str.split(':/');
	                       
	                       // make new string with proper beginning
	                       str="http://"+str_array[1];
	                       $(field).value=str;
	             
	                 
	                 } else {
	                 
		               // force http in front of url
	        	       str="http://"+str;
		               $(field).value=str;
		                 
		         }
	        }
	   }	      
}   

// remove url from twitter string
function checkTwitter(field) {
	str=$(field).value;
	var str_array=str.split('/');  
	var array_count=str_array.length;
	if (array_count>1) {
		var new_str=str_array[array_count-1];
		$(field).value=new_str;
	}	
}                          

// function that is called from Add New University popup window
function closeUniversityPopUp(entryid,country,subdivision) {

	// close popup
	Lightview.hide();
	
	// select country
	var country_select=$('university_country');
	for (var i=0;i<country_select.options.length;i++) {
		if (country_select.options[i].value == country) {
        		country_select.options[i].selected = true;
  		}
	}     
	
	// first hide all subdivision dropdowns
	hideAllDivisionDropdowns()
	
	// select country subdivision                                       
	if (subdivision!="") {
		var subdivision_select=$(country+'_subdivisions');
                $('subdivision_selector').show();
		subdivision_select.show();
		$('subdivision_selector').show();
		for (var i=0;i<subdivision_select.options.length;i++) {
			if (subdivision_select.options[i].value == subdivision) {
	        		subdivision_select.options[i].selected = true;
	  		}
		}
	} else {
                $('subdivision_selector').hide();
	}
	
	// update universities list
	populateUniversities(country,subdivision,entryid,0,'y');

}  

// function that is called from Add New Research Group popup window
function closeResearchGroupPopUp(entryid) {

	// close popup
	Lightview.hide();
	
	// update research groups list
	selectUniversity(entryid,'y')

}              

// generic function to selected dropdown value
function selectDropdown(selectid,value) {
	var this_select=$(selectid);
	for (var i=0;i<this_select.options.length;i++) {
		if (this_select.options[i].value == value) {
			this_select.options[i].selected = true;
		 }
	}
}

// check country on bio page
function checkCountry() {
	str=$('country').value;
	str=str.trim();
	if (str.length==0) {
		makeRed('country');	
		document.getElementById('accept_btn').className = 'disabled';		
		// document.getElementById('accept_btn').disable();
	} else {
		makeGreen('country');
		document.getElementById('accept_btn').className = 'submit';
		// document.getElementById('accept_btn').enable();
	}	
}

