function dosubmit(){
    clearErrors();
    $('submitbutton').disabled = true;
    $('message').Opacityfx.hide();
    $('spinner').Opacityfx.toggle();
    
    var data = queryString($('registration_form'));
    
    var url = '/registration_submit.php?' + data;
    
    log('url:', url);
    
    var d = loadJSONDoc(url);
    
    d.addCallback(handleData);
    d.addErrback(handleError);
    return false;
}

function handleData(data){
    var error = false;
    if (data['error_message']){
        displayErrorMsg(data['error_message']);
        var error = true;
    }
    
    if (data['errors']){
        displayFieldErrors(data['errors']);
        var error = true;
    }
    
    if (error){
        $('submitbutton').disabled = false;
        $('spinner').Opacityfx.toggle();
    } else {
		if($('admin')){
	        window.location = 'registration.html?admin_message=Registration+added.';			
		}else{
			window.location = 'thank_you.html';
		}
    }
    
}

function handleError(err){
    displayErrorMsg(err);
    $('spinner').Opacityfx.hide();
}

function displayErrorMsg(msg){
    $('message').innerHTML = msg;
    $('message').Opacityfx.toggle();
}

function displayFieldErrors(errors){
    for (var x=0; x < errors.length; x++){
        var fields = getElementsByTagAndClassName('input', null, $(errors[x][0]));
        for (var i=0; i < fields.length; i++){
            addElementClass(fields[i], 'error');
        }

        var fields = getElementsByTagAndClassName('select', null, $(errors[x][0]));
        for (var i=0; i < fields.length; i++){
            addElementClass(fields[i], 'error');
        }
        
//        if ($(errors[x][0]) instanceof HTMLTableRowElement){
//            appendChildNodes($(errors[x][0]).cells[$(errors[x][0]).cells.length - 1], DIV({'class':'error_message'}, errors[x][1]));            
//        }else{
//            appendChildNodes(errors[x][0], DIV({'class':'error_message'}, errors[x][1]));
//        }
    }
}

function clearErrors(){
    fields = getElementsByTagAndClassName(null, 'error');
//    messages = getElementsByTagAndClassName(null, 'error_message')
    
    for (var x = 0; x < fields.length; x++){
        removeElementClass(fields[x], 'error');
//        removeElement(messages[x]);
    }
}

addLoadEvent(function(){
	bookingFadeSize = new fx.FadeSize('billing_address_div');
	
    new ParseClassNames();
    $('spinner').Opacityfx.hide();
    $('message').Opacityfx.hide();

    $('billing_same_field').value='0';
    $('billing_same_field').checked=false;

    $('billing_same_field').onclick = function(){
        bookingFadeSize.toggle('height');
        if ($('billing_same_field').checked){
            $('billing_same_field').value='1';
        }else{
            $('billing_same_field').value='0';
        }
    }
    
    $('number_of_attendees_field').onchange = function(){
        var current_cost = $('current_cost').value;
        var attendees = $('number_of_attendees_field').value;
        var cost = current_cost * attendees;
        $('cost').innerHTML = '$' + cost;
        addAttendees();
    }

    $('registration_form').onsubmit = dosubmit;
    
    hideElement($('clicknote'));
});

function addAttendees(){
    var attendees = $('number_of_attendees_field').value;
    var additional_attendees = attendees - 1;
    
    if ($('attendees').childNodes.length < additional_attendees){
        for (var x=$('attendees').childNodes.length + 1; $('attendees').childNodes.length != additional_attendees; x++){
            appendChildNodes($('attendees'), DIV({'style':'padding-bottom: 6px'}, LABEL({'for':'additional' + x}, 'Attendee ' + (x+1)), INPUT({'type':'text', 'name':'other_attendees[]', 'id':'additional' + x})));
        }
    }else{
        while ($('attendees').childNodes.length != additional_attendees){
            removeElement($('attendees').childNodes[$('attendees').childNodes.length - 1]);
        }
    }
}
