$(function() {
    // ajax form
    bindAjaxForm();

	/* button events */
	$('div.btn').mouseover(function(){
		$(this).addClass('hover');
	});
	$('div.btn').mousedown(function(){
		$(this).addClass('press');
	});
	$('div.btn').mouseup(function(){
		$(this).removeClass('press');
	});
	$('div.btn').mouseout(function(){
		$(this).removeClass('press').removeClass('hover');
	});

	/* cite leaf press events */
	$('a.leaf-back').mousedown(function(){
		$(this).addClass('press-leaf-back');
	});
	$('a.leaf-back').mouseup(function(){
		$(this).removeClass('press-leaf-back');
	});
	$('a.leaf-back').mouseout(function(){
		$(this).removeClass('press-leaf-back');
	});
	$('a.leaf-forth').mousedown(function(){
		$(this).addClass('press-leaf-forth');
	});
	$('a.leaf-forth').mouseup(function(){
		$(this).removeClass('press-leaf-forth');
	});
	$('a.leaf-forth').mouseout(function(){
		$(this).removeClass('press-leaf-forth');
	});

	/* pages leaf press events */
	$('a.page-prev').live('mousedown', function(){
		$(this).addClass('press-page-prev');
	});
	$('a.page-prev').live('mouseup', function(){
		$(this).removeClass('press-page-prev');
	});
	$('a.page-prev').live('mouseout', function(){
		$(this).removeClass('press-page-prev');
	});
	$('a.page-next').live('mousedown', function(){
		$(this).addClass('press-page-next');
	});
	$('a.page-next').live('mouseup', function(){
		$(this).removeClass('press-page-next');
	});
	$('a.page-next').live('mouseout', function(){
		$(this).removeClass('press-page-next');
	});
    
    $('a.page-prev-disabled, a.page-next-disabled').click(false);
});

function bindAjaxForm()
{
    var options = {
        dataType:   'json',
        beforeSubmit: function(formdata, form, options) {
            // return false to cancel submit                  
            if (typeof validateFormVars == 'function') {
                return validateFormVars(formdata, form);
            } else {
                return true;
            }            
        },
        success: onAjaxSubmitSuccess
    };
    
    $('form.ajaxform, form.public-ajaxform').ajaxForm(options);
}

function onAjaxSubmitSuccess(response, statusText, xhr, form)
{
    if (response.submitOn) {
        if (response.redirectUrl) {
            window.location.href = response.redirectUrl;
        } else {
            if (typeof reloadPage == 'function') {
                reloadPage(window.location.href, response, form);
            } else {
                window.location.reload();
            }
        }
    } else if (response.errors) {
        $(form).find('p.form-error, p.error').empty();
        for (var ctrlErr in response.errors) {
            $('#' + $(form).attr('id') + '_' + ctrlErr + 'Error').text(response.errors[ctrlErr]).show();
        }


        if (typeof onErrorCustomCallback == 'function') {
            onErrorCustomCallback(response);
        }
    }
}
