// JavaScript Document


//   ---- Default Form Functions --- Mainly for Display Operation ----

//id = number in the group
//group = group_name
//Group name is assembled with id to show a specific element and hide all other elements in the group.

//set hidelink = java_hide to hide the element when it is clicked
//set hidelink = to anything else to have it's innerHTML changed
function show(id, group, showlink, hidelink, parent_group, hideparent)
{
	var i = 1
	
	if (hidelink != undefined)
		{
			var hidehtml = document.getElementById(group+id+'link');
		}
	else
		{
			var hidehtml = 	document.getElementById(group+id);
		}
	
	if (hidehtml.innerHTML == hidelink)
		{	
			document.getElementById(group+id).style.display="none";	
			document.getElementById(group+id+'link').innerHTML=showlink;
			if (parent_group != undefined)
				{
					document.getElementById(parent_group+id).style.display='';
				}
		}
	else
		{	
			while (document.getElementById(group+i))
				{
					document.getElementById(group+i).style.display="none";
						if (showlink != undefined && showlink != 'java_static')
							{
								document.getElementById(group+i+'link').innerHTML=showlink;
							}			
						if (parent_group != undefined)
							{
								if (i == id)
									{
										if (hideparent!=undefined)
											{
												document.getElementById(parent_group+i).style.display="none";
											}
									}
								else
									{
										document.getElementById(parent_group+i).style.display="";									
									}
							}
					i++;
				}
	
			document.getElementById(group+id).style.display="";	
			
			if (hidelink != undefined)
				{
					if (hidelink == 'java_hide')
						{
							document.getElementById(group+id+'link').style.display="none";
						}
					else
						{
							document.getElementById(group+id+'link').innerHTML=hidelink;
						}
				}
		
		}
}


function hide(element)
{
	if (document.getElementById(element).style.display=="none")
		{
			document.getElementById(element).style.display="";
		}
	else
		{
			document.getElementById(element).style.display="none";
		}
}





// ---- Form Functions for Form Validation and other useful things ----

bad = new Array();

function form_create_array(name)
{
	bad[name] = new Array();
	bad[name+"_length"] = 0;
}



function form_set_good(formname,id)
{
	if (bad[formname]==undefined)
		{
			bad[formname] = new Array();
			bad[formname+"_length"] = 0;			
		}
	
	var check = document.getElementById(id)
	var errortext = document.getElementById(id+"-required")
	if (bad[formname][id] != undefined) 
		{
			delete bad[formname][id]; 
			delete bad[formname][id+"-value"]; 
			bad[formname+"_length"]--;
		}
	errortext.innerHTML = "";
	errortext.style.position = "absolute";
	errortext.style.display = "none"
}



function form_set_bad(formname,id,error)
{
	if (bad[formname]==undefined)
		{
			bad[formname] = new Array();
			bad[formname+"_length"] = 0;			
		}
	var check = document.getElementById(id)
	var errortext = document.getElementById(id+"-required")
	if (bad[formname][id] == undefined)
		{
			bad[formname][id] = check.name;
			bad[formname][id+"-value"] = check.value;
			bad[formname+"_length"]++;
		}
	errortext.innerHTML = error;
	errortext.style.position = "";
	errortext.style.display = ""
}


function form_check(formname,id,type,count)
{
	var check = document.getElementById(id)
	
	
	if(type == 'no' || type == 'yes')
		{		
			form_set_good(formname,id)
		}
		
	else if(type == 'text')
		{
			var error = ''
			
			if (check.value.length >= count && !check.value.match(/^[\<\>]+$/))
				{
					form_set_good(formname,id)
				}
			if (check.value.length < count)
				{
					error += "Must be at least "+count+" characters "
				}
			if (!check.value.match(/^[a-zA-Z0-9 \-\<\>]+$/) && check.value.length > 0)
				{
					error += "Must not contain special characters"	
				}
			if (error != '')
				{
					form_set_bad(formname,id,error)						
				}
		}
		
	else if(type == 'text-special')
		{
			var error = ''
			
			if (!check.value.match(/^[<->]+$/) || check.value.length == 0)
				{
					form_set_good(formname,id)
				}
			if (check.value.match(/^[<->]+$/) && check.value.length > 0)
				{
					error += "Must not contain special characters"	
				}
			if (error != '')
				{
					form_set_bad(formname,id,error)						
				}
		}
		
	else if(type == 'text-alpha')
		{
			var error='';
			if (check.value.length >= count && check.value.match(/^[a-zA-Z ]+$/))
				{
					form_set_good(formname,id)
				}
			if (check.value.length < count)
				{
					error += "Must be at least "+count+" characters "
				}
			if (!check.value.match(/^[a-zA-Z ]+$/) && check.value.length > 0)
				{
					error += "Must be alphabetical (a-z, A-Z) "
				}
			if (error!='')
				{
					form_set_bad(formname,id,error)
				}
		}
		
	else if(type == 'text-alphanum')
		{
			var error='';
			if (check.value.length >= count && check.value.match(/^[a-zA-Z0-9 ]+$/))
				{
					form_set_good(formname,id)
				}
			if (check.value.length < count)
				{
					error += "Must be at least "+count+" characters "
				}
			if (!check.value.match(/^[a-zA-Z0-9 ]+$/) && check.value.length > 0)
				{
					error += "Must be alphanumeric (a-z, A-Z, 0-9) "
				}
			if (error!='')
				{
					form_set_bad(formname,id,error)
				}
									 
		}
		
	else if(type == 'text-alphanum-nospaces')
		{
			var error='';
			if (check.value.length >= count && check.value.match(/^[a-zA-Z0-9 ]+$/))
				{
					form_set_good(formname,id)
				}
			if (check.value.length < count)
				{
					error += "Must be at least "+count+" characters "
				}
			if (!check.value.match(/^[a-zA-Z0-9]+$/) && check.value.length > 0)
				{
					error += "Must be alphanumeric (a-z, A-Z, 0-9) May not contain spaces"
				}
			if (error!='')
				{
					form_set_bad(formname,id,error)
				}
									 
		}
		
		
	else if(type == 'num')
		{
			if (check.value.length >= count && isNaN(check.value)==false)
				{
					form_set_good(formname,id)
				}
			else
				{
					var error = "Must be least "+count+" numbers (0-9)"
					form_set_bad(formname,id,error)
				}
		}
		
	else if(type == 'email')
		{
			if (check.value.match(/^[A-Z0-9a-z._%+-]+@[a-zA-Z0-9.-]+\.(?:[A-Za-z]{2}|com|edu|org|net|gov|mil|biz|info|name|aero|jobs|museum)$/))
				{
					form_set_good(formname,id)					
				}
			else
				{
					var error = "Must be a valid email address (name@host.domain)"
					form_set_bad(formname,id,error)					
				}
		}
		
	else if(type == 'compare')
		{
			
			var compare = document.getElementById(id+"-compare")
			var error = '';
			
			if (compare.value==check.value && check.value.length >= count && check.value.match(/^[a-zA-Z0-9]+$/))
				{
					form_set_good(formname,id)					
				}
			if (compare.value!=check.value && compare.value.length>0 && check.value.length>0)
				{
					error += "Fields do not match "				
				}
			if (check.value.length < count)
				{
					error += "Password must be at least "+count+" characters "			
				}
			if (!check.value.match(/^[a-zA-Z0-9]+$/) && check.value.length > 0)
				{
					error += "Must be alphanumeric (a-z, A-Z, 0-9) "	
				}
			if (error!='')
				{
					form_set_bad(formname,id,error)		
				}
		}
		
	else if(type == 'bid-greater')
		{
			var error='';
			if (parseInt(check.value) >= parseInt(count) && check.value.match(/^[0-9]+$/))
				{
					form_set_good(formname,id)
				}
			if (parseInt(check.value) < parseInt(count))
				{
					error += "Bid must be at least "+count
					check.value = count;
				}
			if (!parseInt(check.value))
				{
					error += "Bid must be at least "+count
					check.value = count;
				}
			if (!check.value.match(/^[0-9]+$/) && check.value.length > 0)
				{
					error += " Must be numerical (0-9) "
				}
			if (error!='')
				{
					form_set_bad(formname,id,error)
				}
									 
		}
		
		
	else if(type == 'dropdown')
		{
			if (check.value != 'unset')
				{
					form_set_good(formname,id)
				}
			else
				{
					var error = "Please choose an option"
					form_set_bad(formname,id,error)
				}
		}
		
		
	else if(type == 'agreement')
		{
			if (check.checked == true)
				{
					form_set_good(formname,id)
				}
			else
				{
					var error = "Please check this box to accept our user agreement and privacy policy";
					form_set_bad(formname,id,error);
				}
		}
		
	else if(type == 'file-unrequired')
		{
			if (check.value != '')
				{
					var extension=check.value.split(".")
					var allowed_extension=check.count.split("|")
					for(i=0;i<allowed_extension.length;i++)
						{
							if (allowed_extension[i]==extension[1])
								{
									var ext_check=1	
								}
						}
					if (ext_check==1)
						{
							form_set_good(formname,id)								
						}
				}
		}
	
	else if(type.search(/Array_/) != -1)
		{			
			var error=''
			
			type = type.replace(/Array_/, "")
			type = type.split("|-|")
			count = count.split("|-|")
			i = 0
			while (i < type.length)
				{
					if (eval(type[i]))
						{
						
							error += count[i];
							
						}
					i++;
				}
			if (error != '')
				{
					form_set_bad(formname,id,error)						
				}
			else
				{		
					form_set_good(formname,id)
				}
		}

}



function submit_form(formname,formstring,top)
{
	var success = 0
	eval(formstring)
	if (bad[formname+"_length"]==0) 
		{
			var success=1;
		}
	if (success == 1)
		{
			eval("document."+formname+".submit();")			
		}
	else
		{
			if (document.getElementById(formname+'_errorshow'))
				{
					document.getElementById(formname+'_errorshow').innerHTML="Please correct the indicated fields";
					location.href="#"+top;
				}
			if (document.getElementById(formname+'_errorshow2'))
				{
					document.getElementById(formname+'_errorshow2').innerHTML="Please correct the indicated fields";
				}
		}
}



function submit_form_ajax(formname,formstring,s_p,top)
{
	var success = 0
	eval(formstring)
	if (bad[formname+"_length"]==0) 
		{
			var success=1;
		}
	if (success == 1)
		{
			var length = 0
			var params = ''
			while (document[formname].elements.length > length)
				{
					
					if (length!=0)
						{
							params += '&'							
						}
					if (document[formname].elements[length].checked==false && document[formname].elements[length].type=="checkbox")
						{
						}
					else
						{
							params += escape(document[formname].elements[length].name)+'='+escape(document[formname].elements[length].value)
						}
					length++;
				}
			do_ajax_post(formname, 2, params, s_p)
			
			if (document.getElementById(formname+'_errorshow'))
				{
					document.getElementById(formname+'_errorshow').innerHTML="";
				}
			if (document.getElementById(formname+'_errorshow2'))
				{
					document.getElementById(formname+'_errorshow2').innerHTML="";
				}
		}
	else
		{
			if (document.getElementById(formname+'_errorshow'))
				{
					document.getElementById(formname+'_errorshow').innerHTML="Please correct the indicated fields";
					location.href="#"+top;
				}
			if (document.getElementById(formname+'_errorshow2'))
				{
					document.getElementById(formname+'_errorshow2').innerHTML="Please correct the indicated fields";
				}
		}
}



function clear_dropdown(id,text,value)
{
	
	if (value == undefined)
		{
			document.getElementById(id).innerHTML="";
			document.getElementById(id).options[0] = new Option(text,'unset');
		}
	else
		{
			document.getElementById(id).innerHTML="";
			document.getElementById(id).options[0] = new Option(text, value);
		}
	
}


function days_dropdown(id,target,day,month)
{
	this_month = document.getElementById(id).value;
	
	if (this_month == month)
	{
		num = day;
	}
	else
	{
		num = 1;
	}
	
	switch (this_month)
	{
		case 'unset':
			days = 0;
		break;
		case '1':
			days = 31;
		break;
		case '2':
			days = 28;
		break;
		case '3':
			days = 31;
		break;
		case '4':
			days = 30;
		break;
		case '5':
			days = 31;
		break;
		case '6':
			days = 30;
		break;
		case '7':
			days = 31;
		break;
		case '8':
			days = 31;
		break;
		case '9':
			days = 30;
		break;
		case '10':
			days = 31;
		break;
		case '11':
			days = 30;
		break;
		case '12':
			days = 31;
		break;		
	}
	
	
	document.getElementById(target).innerHTML = ''
	
	i=0;
	
	if (days == 0)
	{
			document.getElementById(target).options[i] = new Option('Day', 'unset');		
	}
	else
	{	
		while (num <= days)		
			{			
					document.getElementById(target).options[i] = new Option(num, num);
					num++;
					i++;
			}
	}
	
}


function showMouseBox(box,e,offx,offy)
{	
	if (!e) 
	{
		var e = window.event;
	}
	
	if (!offx)
	{
		offx=0
	}
	
	if (!offy)
	{
		offy=0
	}
	
	
	if (e.pageX || e.pageY)
	{
		posx = e.pageX;
		posy = e.pageY;
	}
	else if (e.clientX || e.clientY)
	{
		posx = e.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		posy = e.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}

	thebox = document.getElementById(box);
	thebox.style.display='';
	thebox.style.innerHTML=posx;
	thebox.style.left=(posx+offx)+'px';
	thebox.style.top=(posy+offy)+'px';
}




function stripThis(id) 
{ 
	var string = document.getElementById(id).value;
	string = string.replace(/[^0-9]/g, '');
	document.getElementById(id).value = string;
}



function checkValue(idlower,idgreater) 
{ 
	var lower = parseInt(document.getElementById(idlower).value);
	var greater = parseInt(document.getElementById(idgreater).value);
	
	if (lower > 0 && greater > 0)
		{
			if (lower > greater)
				{
					document.getElementById(idgreater).value = lower+1000;
				}
			if (greater < lower)
				{
					document.getElementById(idgreater).value = lower+1000;
				}
		}
}

