if(secure){
	var s = window.location.href;
	if(s.substring(0,7)=="http://")window.location.href="https://"+s.substr(7);
}

function $(x){return document.getElementById(x);}
function firstChildElement(o){x=o.firstChild;while(x.nodeType!=1)x=x.nextSibling;return x;}

function nextSiblingElement(o,i){
	i = i || 1;
	for(j=0;j<i;j++){
		o=o.nextSibling;
		while(o.nodeType!=1)o=o.nextSibling;}
	return o;}

function prevSiblingElement(o,i){
	i = i || 1;
	for(j=0;j<i;j++){
		o=o.previousSibling;
		while(o.nodeType!=1)o=o.previousSibling;}
	return o;}

function getChildIndex(o,i){return nextSiblingElement(firstChildElement(o),i);}


var fce=firstChildElement;
var nse=nextSiblingElement;
var pse=prevSiblingElement;
var gci=getChildIndex;


function validate(o,reset){
	var order = "";
	var lastname = "";
	for(i=0;i<o.elements.length;i++){
		try{
			if( o.elements[i].className.search('required')!=-1 && ( o.elements[i].name.search(/secure_/i)==-1 || $('grandtotal').value!="0" ) ){
				if(o.elements[i].type=="radio"){
					z=o.elements[o.elements[i].name];
					q = false;
					for(r=0;r<z.length;r++)if(z[r].checked==true){q=true;break;}
					if(!q){alert('Please make a selection for the required field: \n*'+ o.elements[i].name.replace('secure_','').replace('array_','').replace(/_/g,' ') +'*');return false;}
				
				}else if(o.elements[i].nodeName.toLowerCase()=="select"){
					if(o.elements[i].selectedIndex==0){
						alert('Please make a selection for the required field: \n*'+ o.elements[i].name.replace('secure_','').replace('array_','').replace(/_/g,' ') +'*');return false;
					}
				}else if(o.elements[i].value==''){
					alert('Please fill in required field: \n*'+ o.elements[i].name.replace('secure_','').replace('array_','').replace(/_/g,' ') +'*');return false;
				}
				
				
				/*else if(o.elements[i].length!=null){
					q = false;
					for(r=0;r<o.elements[i].length;r++)if(r.checked==true){q=true;break;}
					if(!q){alert('Please make a selection for the required field: \n*'+ o.elements[i].name.replace('secure_','').replace('array_','').replace(/_/g,' ') +'*');return false;}
				}*/
				
			}else if (o.elements[i].length!=null);//alert(o.elements[i].length);
		}catch(ex){;}
		try{if(o.elements[i].name!=lastname)order=order+o.elements[i].name+"|";lastname=o.elements[i].name;}catch(ex){;} //ignores sequential duplicates (radio sets)
	}
	var c=document.createElement('input');
	c.setAttribute("name","field_order");
	c.setAttribute("type","hidden");
	c.setAttribute("value",order);
	try{o.appendChild(c,null);}catch(ex){;}
	//return false;
}


function getkey(e) {
if (window.event)
return window.event.keyCode;
else if (e)return e.which;
else
return null;
}

function goodchars(e, goods, obj) {
	//doesn't work well for numbers, use cardinal.
	var key, keychar;
	key = getkey(e);
	if (key == null)return true;
	// get character
	alert(key);
	keychar = String.fromCharCode(key);//12,33-40
	keychar = keychar.toLowerCase();
	goods = goods.toLowerCase();
	// check goodkeys
	if (goods.indexOf(keychar) != -1)return true;
	// control keys
	if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
	return true;
	if ( obj && key==38 )obj.value=1*obj.value+1;//up
	if ( obj && key==40 )if(obj.value>0)obj.value=1*obj.value-1;//down
	// else return false
	return false;
}

function cardinal(e,other) {
	//alert(typeof other);
	//restricts to numbers and additional chars specified in other. if object is specified in other, up and down arrows will iterate that object input box.
	var key, keychar;
	key = getkey(e);
	if( other && typeof other=='string'){
		keychar = String.fromCharCode(key);//12,33-40
		keychar = keychar.toLowerCase();
		other = other.toLowerCase();
		if (other.indexOf(keychar) != -1)return true;
	}else if( other && typeof other=='object'){
		if ( key==38 ){other.value=1*other.value+1;return false;}//up
		if ( key==40 ){if(other.value>0)other.value=1*other.value-1;return false;}//down

	}
	if (key == null)return true;
	if (key >= 96 && key <= 105)return true; // keys with num lock
	if (key >= 48 && key <= 57)return true; //0 - 9
	// control keys
	if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )return true;
	// else return false
	return false;
}

function dupRow(btn){
	var a=btn.parentNode.parentNode;
	if(btn.value!=" remove "){
		var t=btn.value;
		btn.value=" remove ";
		var b=a.cloneNode(true);

		a.parentNode.insertBefore(b,a);
		fce(nse(nse(nse(nse(fce(b)))))).value=0;
		fce(nse(nse(nse(nse(nse(fce(b))))))).value=0;
		btn.value=t;
		updateForm(fce(fce(b)));
	}else{
		var f = fce(fce(nse(a)));
		a.parentNode.removeChild(a);
		updateForm(f);
	}
}


function updateForm(o,reset){
	if(o.nodeName.toLowerCase()=="tr"){var row=o;
	}else if(o.nodeName.toLowerCase()=="td")var row=o.parentNode;
	else{var row=o.parentNode.parentNode;}
	var attendees=fce(gci(row,1));
	var classdata=fce(gci(row,2));
	var classname=fce(gci(row,3));
	try{var classdate=nse(classname);
	}catch(ex){classdate=null;}
	var classrate=fce(gci(row,4));
	var linetotal=fce(gci(row,5));
	if(reset){classdata.selectedIndex=0;}
	if (classdata.nodeName.toLowerCase()=='select'){
		var v=classdata.options[classdata.selectedIndex].value;
		var data=new Array();
		if(v.indexOf('$')==-1){data[0]="--";data[1]="0";}
		else{data=v.split('$');}
		data[0]=data[0].split(';');
		data[1]=data[1].split(';');
	}else{
		var data=new Array();
		data[1]=new Array();
		data[1][0]=classrate.value;
	}
	var newmember=false;
	var memamt=0;
	var donation=o.form.elements['Membership_Amount'];
	
	var cost=0;
	
	if($('newmemb')){
		if($('newmemb').checked){
			for(var i=0;i<donation.length;i++)try{if(donation[i].checked){newmember=true;memamt=donation[i].value}}catch(ex){;}
		}else for(var i=0;i<donation.length;i++)donation[i].checked=false;
	
		/*if( newmember || $('curmemb').checked )var cost=((data[1][1] && 1*data[1][0]>1*data[1][1])?data[1][1]:data[1][0]);
		else var cost=((data[1][1] && 1*data[1][1]>1*data[1][0])?data[1][1]:data[1][0]);*///pick lowest of two
	
		//must be ordered lowest to highest:
		cost=data[1][data[1].length-1];
		if( newmember || $('curmemb').checked || $('nonmemb').checked )cost=data[1][0];
		//special price conditions oddball code
		if( $('nonmemb').checked && data[1][1] || ( !newmember && $('landowner') && $('landowner').checked ) )cost=data[1][1];
		if( $('nonmemb').checked && data[1][2] && $('professional') && $('professional').checked )cost=data[1][2];
	}else{cost=data[1][0];}
	
	if(classdate){
		for (i in classdate.options){
			try{classdate.remove(classdate.options[i]);
			}catch(ex){classdate.remove(i);}
		}
		var c=document.createElement('option');
		
		c.text='-Select One-';
		if(classdata.selectedIndex==0)c.text='--';
		c.value='none';
		try{classdate.add(c,null);
		}catch(ex){classdate.add(c);}
	
		for (i in data[0]){
			c=document.createElement('option');
			c.text=c.value=data[0][i];
			try{classdate.add(c,null);
			}catch(ex){classdate.add(c);}
		}
	}
	var qty=0+attendees.value;
	if(qty<0)attendees.value=qty=1;
	if(classdata.nodeName.toLowerCase()=='select'){
		if(classname)classname.value=classdata.options[classdata.selectedIndex].text;
		classrate.value=((cost*1)?cost:' ~');
	}
	linetotal.value=(cost*1)?(cost*1)*(qty*1):0;
	
	var otheramt=specialTotal();

	if(o.form){
		var total=0;
		for(i=0;i<o.form.elements.length;i++){var x=o.form.elements[i];try{if(x.name=="array_Line_Total")total=total*1+x.value*1;}catch(ex){null;}}
		$('subtotal').value=total;}
	$('grandtotal').value = 1*$('subtotal').value + 1*memamt + 1*otheramt;
}
function reupdateForm(o,reset,chg_nm,nonmem){
	if(nonmem==true){$('mem25').checked=$('mem35').checked=$('mem50').checked=$('mem100').checked=$('mem500').checked=$('mem0').checked=$('Membership_Type_new').checked=$('Membership_Type_renewal').checked=false;if($('Membership_Type_centennial'))$('Membership_Type_centennial').checked=false;$('OtherAmount').value='';};
	if(chg_nm)$('newmemb').checked=true;
	for(i=0;i<o.form.elements.length;i++)try{if(o.form.elements[i].name=='array_Class_Data')updateForm(o.form.elements[i],reset);}catch(ex){null;}
	x = o.form.elements['Membership_Amount'];
	var memamt=0;if($('newmemb').checked || $('curmemb').checked)for(z=0;z<x.length;z++)if(x[z].checked)memamt=x[z].value;
	var otheramt=specialTotal();
	$('grandtotal').value = 1*$('subtotal').value + 1*memamt + 1*otheramt;
	if(reset)fce($('OtherAmount').parentNode.parentNode).value=0;
}
function totalForm(){
	$('grandtotal').value = 1*$('subtotal').value + 1*specialTotal();
}
