$(function() {
    
    if($.browser.msie && $.browser.version == 6) {
        return;
    }
    
// Field input focus
    $(':input').focus(function() {
        $(this).addClass('focused');
        $('.fieldArea').removeClass('focused');
        $(this).parents('.fieldArea').
            addClass('focused'); 
    }).blur(function() {
        $(this).removeClass('focused').
            parents('.fieldArea').
            removeClass('focused');
    });
    
    $('.fieldArea:has(:input:enabled)').click(function() {
        var t = $(this).find(':input:visible');
        if(t.length == 1) {
            t.focus();
        } else {
            $('.fieldArea').removeClass('focused');
            $(this).addClass('focused');
        }
    });
    
    var error = $('ul.formError:first');
    if(error.length) {
        error.parents('.fieldArea').find(':input:first').focus();
        error.parents('.fieldArea').attr('id', 'formError');
        window.location.replace(window.location.href.substr(0, window.location.href.lastIndexOf('#')) + '#formError');
    }

    
// Button actions
    $(':submit, :image').not('button').click(function(e) {
        $('#form-submitEventProp').remove();
        $(this).parents('form').attr('target', '_self');
        
        var event = $(this).val();
        if(!event) {
            event = $(this).attr('alt');
        }
        if(!event) {
            event = $(this).attr('title');
        }
        
        var output = true;
        if($(this).hasClass('confirm')) {
            // TODO: convert to dialog
            output = confirm('Are you sure you want to ' + event.toLowerCase() + '?');
        }
        
        if(output) {
            $(document.createElement('input'))
                .attr('type', 'hidden').attr('name', $(this).attr('name')).attr('id', 'form-submitEventProp').val('1')
                .appendTo($(this).parents('form[method!=get]'));
            
            
            if($(this).hasClass('newWindow')) {
                $(this).parents('form').attr('target', '_blank');
            } else {
                var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
                if(!(($.browser.msie || is_chrome) && $(this).parents('form[method=get]').length)) {
                    $('form :submit, form :image').not('button').addClass('disabled').attr('disabled', 'disabled');
                }
            }
            
            $(this).parents('form[method=get]').find(':input:visible').each(function(i, element) {
                if($(element).val() == '') {
                    $(element).addClass('disabled').attr('disabled', 'disabled');
                }
            });
            
            if(!$(this).hasClass('newWindow')) {
                $(this).parents('form').submit();    
            }
        }
        
        return output;  
    });
    
// Hidable fieldsets
    $('fieldset.hidable legend').addClass('clickable').attr('title', 'Click me to expand').click(function(e) {
        $(this).parent().toggleClass('hidden');
    });
    
// Integrate labels
    $("label[for!=''].toInput").each(function() {
    	var label = $(this);
    	label.hide();
    	$(this).next('input#' + label.attr('for')).each(function() {
    		$(this).data('label', label.text().replace(/\n/g, ''));
    		$(this).focus(function() {
    			if(this.value === $(this).data('label')) {
    				this.value = '';
    				$(this).removeClass('withLabel');
    			}
    		}).blur(function() {
    			if(this.value === '') {
    				this.value = $(this).data('label');
    				$(this).addClass('withLabel');
    			}
    		});
    		var input = $(this);
    		$(this).parents('form').submit(function() {
    			if(input.val() === input.data('label')) {
    				input.val('');
    				input.removeClass('withLabel');
    			}
    		});
    		$(this).blur();
    	});
    });
});