var dir_forms=new Array("regfrm1","regfrm2","regfrm3","regfrm4","regfrm5","regfrm6","regfrm7","regfrm8");
var current_step=0;
var flat_region_list;
var tree_region_list;
var built_region_list;
var tmplist;
var found_group;
var region_selected=-1;

function display_step(ordinal)
{
	$("errormsg").style.display="none";
	if((ordinal<1)||(ordinal>7))return;
	current_step=ordinal;
	for(var i=0;i<dir_forms.length;i++)
	{
		var reali=i+1;
		if(reali!=ordinal)
		{
			document.getElementById(dir_forms[i]).style.display="none";
			document.getElementById("step"+reali).className="step_style";
		}
		else
		{
			document.getElementById(dir_forms[i]).style.display="block";
			document.getElementById("step"+reali).className="active_step_style";
		}
		document.getElementById("stepimg").src="images/new_user/reg_head"+ordinal+".gif";		
	}
	if(ordinal==1)
	{
		$("regkey_a").value=k1;
		$("regkey_b").value=k2;
		$("regkey_c").value=k3;
	}
}
function existing_user()
{
    for(var i=0;i<dir_forms.length;i++)
    {
        var reali=i+1;
        document.getElementById(dir_forms[i]).style.display="none";
		document.getElementById("step"+reali).className="step_style";
    }
    $("regfrm8").style.display="block";
    $("submit_8").onclick=function(){submit_step();};
    current_step=99;
}
function existing_user_callback(ref)
{
    var rval=ref.value;
    if(rval==1)
    {
        //new_user.get_registration_regions(get_region_callback);
        new_user.get_registration_elements(get_cohort_callback);
    }
    else show_error(rval);
}
function $(ref)
{
	return document.getElementById(ref);
}
function show_error(msg)
{
	var err=$("errormsg");
	err.innerHTML=msg;
	err.style.display="block";
}
function register_key_callback(ref)
{
	var rval=ref.value;
	if(rval==1)
	{
		$("no_email_div").style.display="none";
		display_step(2);
		$("submit_2").onclick=function(){submit_step();};
	}
	else show_error(rval);
}
function register_email_callback(ref)
{
	var rval=ref.value;
	if(rval==1)
	{
		display_step(3);
		$("submit_3").onclick=function(){submit_step();};
	}
	else show_error(rval);
}
function register_username_callback(ref)
{
	var rval=ref.value;
	if(rval==1)
	{
	    new_user.get_registration_elements(get_cohort_callback);
	    //new_user.get_registration_regions(get_region_callback);
	}
	else show_error(rval);
}
function get_cohort_callback(ref)
{
    var cohorts=new Array();
    var rval=ref.value;
    for(var i=0;i<rval.length;i++)
    {
        if(rval[i].isopen)cohorts.push(rval[i]);
    }
    //fill_region_dropdown(1,cohorts);
    fill_cohort_dropdown(cohorts);
    display_step(6);
	$("submit_6").onclick=function(){submit_step();};
}
function register_region_callback(ref)
{
	var rval=ref.value;
	if(rval==1)
	{
		display_step(7);
		$("submit_7").onclick=function(){submit_step();};
	}
	else
	{
		show_error(rval);
		$("submit_6").onclick=function(){display_step(1);};
	}
}
function affiliation_callback(ref)
{
    var rval=ref.value;
    if(rval==1)
    {
        display_step(5);
        $("submit_5").onclick=function(){submit_step();};
    }
    	else
	{
		show_error(rval);
	}
}
function contact_callback(ref)
{
	var rval=ref.value;
	if(rval==1)
	{
		display_step(4);
		$("submit_4").onclick=function(){submit_step();};
	}
	else
	{
		show_error(rval);
	}
}
function get_region_callback(ref)
{
	var flat_region_list=ref.value;
	var blist=new Array();
	if(flat_region_list.length>0)
	{
		tmplist=new Array();
		tree_region_list=new Array();
		for(var i=0;i<flat_region_list.length;i++)
		{
			var ntry=flat_region_list[i];
			if(ntry.isopen==1)blist.push(ntry);
			if(ntry.parent==0)
			{
				tree_region_list.push(ntry);
			}
			else
			{
				tmplist.push(ntry);
			}
		}
		//for(var i=0;i<tree_region_list.length;i++)
		//{
		//	add_group_branch(tree_region_list[i]);
		//}
		//fill_region_dropdown(1,tree_region_list);
		fill_cohort_dropdown(blist);
		display_step(6);
		$("submit_6").onclick=function(){submit_step();};
	}
}
function fill_cohort_dropdown(blist)
{
    var dropname="regions1";
    clear_option_list(dropname);
    if(blist.length==1)region_selected=blist[0].ID;
    for(var i=0;i<blist.length;i++)
    {
        var dditem=document.createElement("option");
        dditem.text=blist[i].Name;
        dditem.value=blist[i].ID;
        $(dropname).options.add(dditem);
    }
    $(dropname).style.display="block";
	hide_drop_levels(2);
}

function hide_drop_levels(lowest)
{
	if(lowest>3)return;
	for(var i=lowest;i<=4;i++)
	{
		var dd=$("regions"+i);
		dd.style.display="none";
	}
}
function clear_option_list(nameof)
{
	var x=$(nameof);
	for(var i=0;i<nameof.length;i++)
	{
		x.remove(i);
	}
}
function add_group_branch(ntry)
{
	for(var i=0;i<tmplist.length;i++)
	{
		var z=tmplist[i];
    		if(z.parent==ntry.id)
      		{
			if(typeof(ntry.children)=="undefined") ntry.children=new Array();
      			ntry.children.push(z);
      			add_group_branch(z);
    		}
  	}
}

function get_base_regions(slist)
{
	built_region_list=new Array();
	get_base_regionsR(slist);
	return built_region_list;
}

function get_base_regionsR(slist)
{
	for(var i=0;i<slist.length;i++)
	{
		var x=slist[i];
    		if(x.isvisible==1)
      		{
      			var deadend=0;
      			if(typeof(x.children)=="undefined")
			{
        			if(x.isopen==0)
				{
          				deadend=1;
				}
			}      
      			if(deadend==0)built_region_list.push(x);
		}
    		else
		{      			
			if(typeof(x.children)!="undefined")
			{
        			get_base_regionsR(x.children);
			}
		}
	}
}
function region_change(n)
{
return;
	region_selected=-1;
	var oref=$("regions"+n);
	var region_chosen=Number(oref.options[oref.selectedIndex].value);
	var bset=get_group_branch(region_chosen);
	if(typeof(bset.children)!="undefined")
	{
		built_region_list=new Array();
		var rpp=n+1;
		fill_region_dropdown(rpp,bset.children);
	}
	else
	{
		if(bset.isopen==1)region_selected=region_chosen;
	}
}

function get_group_branch(gid)
{
	found_group=0;
  	find_branch(gid,tree_region_list);
  	return found_group;
}

function find_branch(gid,rlist)
{
	for(var i=0;i<rlist.length;i++)
	{
  		var z=rlist[i];
    		if(z.id==gid)
      		{
			found_group=z;
      			return;
    		}
    		if(typeof(z.children)!="undefined")find_branch(gid,z.children);
	}
}

function checkEmail(addr)
{
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (filter.test(addr)) return 1;
	else return 0;
}
function submit_step()
{
	var isvalid=1;
	var err=0;
	switch(current_step)
	{
	case 1:
		if($("regkey_a").value.length!=3)isvalid=0;
		if($("regkey_b").value.length!=2)isvalid=0;
		if($("regkey_c").value.length!=6)isvalid=0;
		if(isvalid==1)
		{
			var fkey=$("regkey_a").value+"-"+$("regkey_b").value+"-"+$("regkey_c").value;
			new_user.register_key(fkey,register_key_callback);
		}
		else show_error("Your key does not appear to be valid. Please check your entry");
		break;
	case 2:
		var email=$("email_address").value;
		if($("last_name").value.length<1)
		{
			err="Please enter your last name";
			isvalid=0;
		}
		if($("first_name").value.length<1)
		{
			err="Please enter your first name";
			isvalid=0;
		}
		if(checkEmail(email)==0)
		{
			if($("noemail").checked)email="none";
			else
			{
				$("no_email_div").style.display="block";
				err="Invalid email address";
				isvalid=0;
			}
		}
		if(isvalid==1)new_user.register_personal_data($("first_name").value,$("last_name").value,email,register_email_callback);
		else show_error(err);
		break;
	case 3:
		if($("area_code").value.length<3)
		{
			isvalid=0;
			err="Please enter your 3 digit area code";
		}
		if($("ph1").value.length<3)
		{
			isvalid=0;
			err="Please enter your phone number";
		}
		if($("ph2").value.length<4)
		{
			isvalid=0;
			err="Please enter your phone number";
		}
		if($("zip").value.length<5)
		{
			isvalid=0;
			err="Please enter your 5 digit zip code.";
		}
		if($("city").value.length<2)
		{
			isvalid=0;
			err="Please enter your city";
		}
		if($("address").value.length<4)
		{
			isvalid=0;
			err="Please enter your street address.";
		}
		if(isvalid==1)
		{
			var phnum=$("area_code").value+$("ph1").value+$("ph2").value;
			new_user.register_contact_info($("address").value,$("city").value,$("state").options[$("state").selectedIndex].value,$("zip").value,phnum,contact_callback);
		}
		else show_error(err);
		break;
    case 4:
        var orgname=$("organization").value;
        var upos=$("position").value;
        new_user.register_affiliation(orgname,upos,affiliation_callback);
        break;
	case 5:
		if($("password").value!=$("retyped_password").value)
		{
			isvalid=0;
			err="Your passwords did not match. Please re-enter them.";
		}
		if($("password").value.length<4)
		{
			isvalid=0;
			err="Your password must be at least 4 characters long";
		}
		if($("username").value.length<4)
		{
			isvalid=0;
			err="Your username must be at least 4 characters long";
		}
		if(isvalid==1)new_user.register_username($("username").value,$("password").value,register_username_callback);
		else show_error(err);
		break;
	case 6:
	    region_selected=getSelectedRegion();
		if(region_selected!=-1)
		{
			new_user.register_region(region_selected,register_region_callback);
		}
		else show_error("Please select a valid region");
		break;
	case 7:
		window.location="system_check.aspx";
		break;
	case 99:
		new_user.use_existing_account($("existing_username").value,$("existing_password").value,existing_user_callback);
		break;
	}
    function getSelectedRegion()
    {
        var dd=$("regions1");
        var rv=dd.value;
        return rv;
    }	
}