var baseUrl = '';

var saveEnabledForm = '';

function enableSaveForm(selector)
{
    saveEnabledForm = selector;
}

function disableSaveForm()
{
    saveEnabledForm = '';
}

var askConfirm = function(message)
{
    if (!message) message = 'Are you sure you want to continue?';
    return confirm(message);
}



function enableToggleOnline()
{
    $(function()
    {
        $('.toggle-online').change(function()
        {
            $this = $(this);
            var online = '0';

            if ($this.is(':checked'))
            {
                online = '1';
            }

            $.post('/dashboard/ajax/property-online.aspx', {
                'id': $this.attr('id').replace(/toggle\-online\-/, ''),
                'online': online
            }, function(data)
            {
                $('#ajax-container').html(data);
            });
        });
    });
}

function enableTogglePararius()
{
    $(function()
    {
        $('.toggle-pararius').change(function()
        {
            $this = $(this);
            var pararius = '0';

            if ($this.is(':checked'))
            {
                pararius = '1';
            }

            $.post('/dashboard/ajax/pararius-online.aspx', {
                'id': $this.attr('id').replace(/toggle\-pararius\-/, ''),
                'pararius': pararius
            }, function(data)
            {
                $('#ajax-container').html(data);
            });
        });
    });
}

function enableToggleHurenNl()
{
    $(function()
    {
        $('.toggle-huren_nl').change(function()
        {
            $this = $(this);
            var hurenNl = '0';

            if ($this.is(':checked'))
            {
                hurenNl = '1';
            }

            $.post('/dashboard/ajax/huren-nl-online.aspx', {
                'id': $this.attr('id').replace(/toggle\-huren_nl\-/, ''),
                'huren_nl': hurenNl
            }, function(data)
            {
                $('#ajax-container').html(data);
            });
        });
    });
}

function enableExportToggle()
{
    $(function()
    {
        $('.export-toggle').change(function()
        {
            $this = $(this);
            var online = '0';

            if ($this.is(':checked'))
            {
                online = '1';
            }

            var type = $this.attr('id').replace(/^toggle\-(.*?)\-(\d+)$/, "$1");
            var id = $this.attr('id').replace(/^toggle\-(.*?)\-(\d+)$/, "$2");

            $.post('/dashboard/ajax/export-toggle.aspx', {
                'type': type,
                'id': id,
                'online': online
            }, function(data)
            {
                $('#ajax-container').html(data);
            });
        });
    });
}

function enableToggleSigned()
{
    $(function()
    {
        $('.toggle-signed').change(function()
        {
            $this = $(this);
            var signed = '0';

            if ($this.is(':checked'))
            {
                signed = '1';
            }

            $.post('/dashboard/ajax/contract-signed.aspx', {
                'id': $this.attr('id').replace(/toggle\-signed\-/, ''),
                'signed': signed
            }, function(data)
            {
                $('#ajax-container').html(data);
            });
        });
    });
}

function showPopup(url, initialTitle)
{
    if (!url)
    {
        return errorMessageBar('No url given for the popup');
    }

    if (initialTitle)
    {
        $('#popup-dialog').dialog('option', 'title', initialTitle);
    }

    $('#popup-dialog').html('<p class="center"><img src="http://static.annommx.com/images/loading.gif" alt="loading" /></p>').dialog('open');
    $('#popup-dialog').load(url, '', function()
    {
        var title = $('h4', this).hide().html();
        $(this).dialog('option', 'title', title);
        $(this).dialog('option', 'position', 'center');
        $(':input:visible:not(.date):not(.time):eq(0)', this).focus();
        updateButtons();
    });
}

function showAgendaItem(url)
{
    if (!url) errorMessagebar('No url given for agenda item');

    showPopup(url, 'Appointment');
}

jQuery(function($) {
    $('form .date').datepicker({
        minDate: '-100Y',
        changeMonth: true,
        changeYear: true,
        dateFormat: 'dd-mm-yy'
    });

    enableExportToggle();

    $('a.load-in-dialog').click(function(ev)
    {
        ev.preventDefault();

        showPopup($(this).attr('href'), $(this).attr('title'));

        return false;
    });

    $('form.load-in-dialog').live('submit', function() {
        $('#popup-dialog').html('<p class="center"><img src="http://static.annommx.com/images/loading.gif" alt="loading" /></p>').dialog('open');

        $(this).ajaxSubmit({
            target: '#popup-dialog',
            success: function()
            {
                var title = $('h4', this).hide().html();
                $(this).dialog('option', 'title', title);
                $(this).dialog('option', 'position', 'center');
                $(':input:visible:not(.date):not(.time):eq(0)', this).focus();
                updateButtons();
            }
        });

        return false; // <-- important!
    });

    $('.add-feedback').click(function(ev)
    {
        ev.preventDefault();

        showPopup($(this).attr('href'), 'Add feedback');

        return false;
    });

    $('form :input:visible:eq(0):not(.date):not(.time)').focus();

    $('#popup-dialog').dialog({
        autoOpen: false,
        bgiframe: true,
        modal: true,
        width: 550,
        resizable: false,
        buttons: {
            Close: function()
            {
                $(this).dialog('close');
            }
        },
        open: function ()
        {
            disableKeyCodeNavigation();
        },
        close: function()
        {
            enableKeyCodeNavigation();
        }
    });

    $('a.agenda-item').click(function()
    {
        showAgendaItem(this.href);
        return false;
    });

    $('a.target-blank').each(function()
    {
        $(this).attr('target', '_blank');
    });

    $('form input.time:visible').timepickr();

    $('#search-box input').attr('autocomplete', 'off');
    $('#search-box').bind('openSearchBox', function()
    {
        if ($('#search-box').is(':visible'))
        {
            $('#search-box input').unbind('blur');
            $('#search-box').hide();
        }
        else
        {
            $('#search-box').show();

            $('#search-box input').bind('blur', function()
            {
                if ($(this).val() == '' && 1 == 2)
                {
                    $('#search-box').hide();
                }
            });

            $('#search-box input').focus();
        }
    });

    $('#search-button').click(function()
    {
        $('#search-box').trigger('openSearchBox');
    });

    $('#search-box input').blur(function()
    {
        //$('#search-box').trigger('openSearchBox');
    });

    var currentSearchConnection;
    var currentSearchPhrase = '';
    var quicksearchCache = {};
    $('#search-box input').keyup(function(ev)
    {
        var $this = $(this);

        if (ev.keyCode == $.ui.keyCode.DOWN)
        {
            var total = $('#search-box li:not(.empty)').size();

            if (total > 1)
            {
                var makeItHappen = false;
                $('#search-box li:not(.empty)').each(function(i)
                {
                    if (makeItHappen)
                    {
                        $('#search-box li').removeClass('active');
                        $(this).addClass('active');
                        return false;
                    }

                    if ($(this).hasClass('active'))
                    {
                        makeItHappen = true;
                    }
                });
            }

            return false;
        }
        else if (ev.keyCode == $.ui.keyCode.UP)
        {
            var total = $('#search-box li:not(.empty)').size();

            if (total > 1)
            {
                var $tmp = $('#search-box li:not(.empty):eq(0)');
                $('#search-box li:not(.empty)').each(function(i)
                {
                    if ($(this).hasClass('active'))
                    {
                        $('#search-box li').removeClass('active');
                        $tmp.addClass('active');
                        return true;
                    }

                    if (total - 1 > i)
                    {
                        $tmp = $(this);
                    }
                });
            }

            return false;
        }
        else if (ev.keyCode == $.ui.keyCode.ENTER)
        {
            var hreftogoto = $('#search-box li.active:eq(0) a').attr('href');

            if (hreftogoto == undefined || hreftogoto == '')
            {

            }
            else
            {
                window.location = hreftogoto;
            }
            
            return false;
        }
        else if (ev.keyCode == $.ui.keyCode.ESCAPE)
        {
            $('#search-box').trigger('openSearchBox');
        }
        else
        {
            if ($this.val() == '')
            {
                $('#search-box .results').html('');
            }
            else if (currentSearchPhrase != $this.val())
            {
                // cancel searches
                if (currentSearchConnection) currentSearchConnection.abort();
                
                // save the search
                currentSearchPhrase = $this.val();
                $.doTimeout('quicksearch');

                // cache hit
                if (quicksearchCache[currentSearchPhrase])
                {
                    $('#search-box .results').html(quicksearchCache[currentSearchPhrase]);

                    $('#search-box li:not(.empty):eq(0)').addClass('active');

                    $this.removeClass('ac_loading');
                }
                else
                {
                    $this.addClass('ac_loading');
                    $.doTimeout('quicksearch', 200, function()
                    {
                        $.doTimeout('quicksearch');
                        currentSearchConnection = $.post($('#search-box form').attr('action'),
                            {search: currentSearchPhrase}, function(data)
                            {
                                quicksearchCache[currentSearchPhrase] = data;
                                $('#search-box .results').html(data);

                                $('#search-box li:not(.empty):eq(0)').addClass('active');

                                $this.removeClass('ac_loading');
                        });
                    });
                }
            }
        }
    });

    var toggleChapter = function(which)
    {
        $('#database').hide();
        $('#client').hide();
        $('#settings').hide();
        $('#search-box').removeClass('database client settings');

        $('#' + which).show();
        $('#search-box').addClass(which);
    };

    $('h2.database').click(function()
    {
        toggleChapter('database');
    });
    $('h2.client').click(function()
    {
        toggleChapter('client');
    });
    $('h2.settings').click(function()
    {
        toggleChapter('settings');
    });

    $('form :input:visible:eq(0):not(.date):not(.time)').focus();

    $.fn.checkLeaveForm = function()
    {
        $(this).submit(function()
        {
            window.onbeforeunload = null;
        });
        $(this).find('input, select, textarea').change(function()
        {
            window.onbeforeunload = function()
            {
                return true;
            }
        });
    }

    updateButtons();


    $('a.confirm').live('click', function()
    {
        return askConfirm();
    });

    $('a.print').live('click', function()
    {
        window.print();
        return false;
    });

    $('#error-message-dialog, #success-message-dialog').dialog({
        bgiframe: true,
        autoOpen: false,
        modal: true,
        buttons: {
            'Ok': function()
            {
                $(this).dialog('close');
            }
        }
    });


    var cityLinks = {
        'house-cities': '/dashboard/ajax/property-cities.aspx',
        'contact-cities': '/dashboard/ajax/contact-cities.aspx',
        'request-cities': '/dashboard/ajax/request-cities.aspx',
        'all-cities': '/dashboard/ajax/all-cities.aspx'
    };

    // cities
    $('form input[name="city"]').each(function()
    {
        var $this = $(this);
        var link;
        if ($this.is('house-cities'))
        {
            link = cityLinks['house-cities'];
        }
        else if ($this.is('contact-cities'))
        {
            link = cityLinks['contact-cities'];
        }
        else if ($this.is('request-cities'))
        {
            link = cityLinks['request-cities'];
        }
        else
        {
            link = cityLinks['all-cities'];
        }

        $this.autocomplete(link, {multiple: $this.is('.multiple')});
    });

    var streetLinks = {
        'house-streets': '/dashboard/ajax/property-streets.aspx',
        'all-streets': '/dashboard/ajax/all-streets.aspx'
    };

    // streets
    $('form input[name="street"]').each(function()
    {
        var $this = $(this);
        var link;
        if ($this.is('.house-streets'))
        {
            link = streetLinks['house-streets'];
        }
        else
        {
            link = streetLinks['all-streets'];
        }

        $this.autocomplete(link, {multiple: $this.is('.multiple')});
    });

    //
    $('form input[name="district"]:not(.multiple)').autocomplete('/dashboard/ajax/districts.aspx',{ extraParams: {
        city: function() { return $('form input[name="city"]').val(); }
    }});
    $('form input[name="district"].multiple').autocomplete('/dashboard/ajax/districts.aspx', {multiple: true, extraParams: {
        city: function() { return $('form input[name="city"]').val(); }
    }});

    $('#search-box-houses').attr('autocomplete', 'off').autocomplete('/dashboard/properties/quicksearch.aspx')
    .result(function(event, data, formatted) {
        var hidden = $('#search-box-houses-hidden');
        hidden.val(data[1]);
    });

    $('#search-box-contacts').attr('autocomplete', 'off').autocomplete('/dashboard/contacts/quicksearch.aspx')
    .result(function(event, data, formatted) {
        var hidden = $('#search-box-contacts-hidden');
        hidden.val(data[1]);
    });


    //other
    $('form input[name="zipcode"]').autocomplete('/dashboard/ajax/zipcodes.aspx');

    $('form input[name="last_name"]:not(.multiple)').autocomplete('/dashboard/ajax/lastnames.aspx');
    $('form input[name="last_name"].multiple').autocomplete('/dashboard/ajax/lastnames.aspx', {multiple: true});

    //$('form input[name="first_name"]:not(.multiple)').autocomplete('/dashboard/ajax/firstnames.aspx');
    //$('form input[name="first_name"].multiple').autocomplete('/dashboard/ajax/firstnames.aspx', {multiple: true});

    $('form input[name="company_name"]:not(.multinational):not(.multiple)').autocomplete('/dashboard/ajax/company-names.aspx');
    $('form input[name="company_name"]:not(.multinational).multiple').autocomplete('/dashboard/ajax/company-names.aspx', {multiple: true});

    $('form input[name="company_name"].multinational:not(.multiple)').autocomplete('/dashboard/ajax/multinationals.aspx');
    $('form input[name="company_name"].multinational.multiple').autocomplete('/dashboard/ajax/multinationals.aspx', {multiple: true});

    $('form input[name="administer_company"]').autocomplete('/dashboard/ajax/administer-companies.aspx');

    $('form input[name="landlord"]:not(.multiple)').autocomplete('/dashboard/ajax/landlords.aspx');
    $('form input[name="landlord"].multiple').autocomplete('/dashboard/ajax/landlords.aspx', {multiple: true});

    $('form input[name="broker"]:not(.multiple), form input.broker:not(.multiple)').autocomplete('/dashboard/ajax/brokers.aspx');
    $('form input[name="broker"].multiple, form input.broker.multiple').autocomplete('/dashboard/ajax/brokers.aspx', {multiple: true});

    $('form input[name="other_brokers"]:not(.multiple)').autocomplete('/dashboard/ajax/brokers.aspx');
    $('form input[name="other_brokers"].multiple').autocomplete('/dashboard/ajax/brokers.aspx', {multiple: true});

    $('form input[name="management_company"]').autocomplete('/dashboard/ajax/management-companies.aspx');
    
    $('form input[name="contact_person"]').autocomplete('/dashboard/ajax/contactpersons.aspx');

    $('form input[name="requests_city"]').autocomplete('/dashboard/ajax/all-cities.aspx', {multiple: true});
    $('form input[name="requests_district"]').autocomplete('/dashboard/ajax/districts.aspx', {multiple: true});

    $('form input[name="users"]').autocomplete('/dashboard/ajax/users.aspx', {multiple: true});


    $('form input[name="price"]').bind('blur', function()
    {
        //if ($('form input[name="deposit"]').val() == '')
        //{
            //$('form input[name="deposit"]').val($(this).val());
        //}
    });

    $('form input[name="zipcode"]').bind('keyup', function()
    {
        _lookup.lookup($(this).val());
    });

    $('input[name="ranking"]').each(function(){
        $(this).parent().parent().append(this);
    });

    $('input[name="ranking"]').rating().parent().find('label, br').remove();

    // hide company block
    //$('#company_type').parent().toggle().parent().find('dt:eq(1)').toggle();
    //$('#vvw').parent().toggle().parent().find('dt:eq(4)').toggle();

    var toggleContactInfo = function()
    {
        //$('#phone_private_1').parent().toggle().parent().find('dt:eq(2)').toggle();
        //$('#phone_mobile_1').parent().toggle().parent().find('dt:eq(4)').toggle();
        //$('#phone_mobile_2').parent().toggle().parent().find('dt:eq(5)').toggle();

        checkSeconds();
        checkCourtageInput();
        checkVvwInput();
    };

    var checkVvwInput = function()
    {
        if ($('#type_id').val() == '1' || $('#type_id').val() == '13')
        {
            $('#vvw').parent().show();
            $('label[for="vvw"]').parent().show();
        }
        else
        {
            $('#vvw').parent().hide();
            $('label[for="vvw"]').parent().hide();
        }
    };

    var checkCourtageInput = function()
    {
        if ($('#type_id').val() == '1')
        {
            $('#courtage').parent().show().parent().find('dt:eq(16)').show();
        }
        else
        {
            $('#courtage').parent().hide().parent().find('dt:eq(16)').hide();
        }
    };

    checkVvwInput();
    //checkCourtageInput();

    $('#type_id').change(function()
    {
        checkVvwInput();
        //checkCourtageInput();
    });

    $('#company').each(function()
    {
        if (this.checked)
        {
            toggleContactInfo();
        }

        $(this).change(function()
        {
            toggleContactInfo();
        });
    });
    
    var checkSecondsContactsInformation = function()
    {
        var first = $('#phone_mobile_1');
        var second = $('#phone_mobile_2');
        
        $('#phone_mobile_2').parent().hide();
        $('label[for="phone_mobile_2"]').parent().hide();
        if (first.length == 1 && (first.val() != '' || second.val() != ''))
        {
            $('#phone_mobile_2').parent().show();
            $('label[for="phone_mobile_2"]').parent().show();
        }
        
        first = $('#emailaddress_1');
        second = $('#emailaddress_2');
        
        $('#emailaddress_2').parent().hide();
        $('label[for="emailaddress_2"]').parent().hide();
        if (first.length == 1 && (first.val() != '' || second.val() != ''))
        {
            $('#emailaddress_2').parent().show();
            $('label[for="emailaddress_2"]').parent().show();
        }
    }
    
    checkSecondsContactsInformation();
    
    var secondsCheckContactsInformation = $('#emailaddress_2, #emailaddress_1, #phone_mobile_1, #phone_mobile_2');
    
    secondsCheckContactsInformation.bind('change keydown keyup', function()
    {
        checkSecondsContactsInformation();
    });


    var checkSecondsBathrooms = function()
    {
        var first = $('#bathroom_1');
        var second = $('#bathroom_2');
        var third = $('#bathroom_3');

        second.parent().hide();
        $('label[for="bathroom_2"]').parent().hide();
        if (first.val() != '1' || second.val() != '1')
        {
            second.parent().show();
            $('label[for="bathroom_2"]').parent().show();
        }

        third.parent().hide();
        $('label[for="bathroom_3"]').parent().hide();
        if (first.val() != '1' && second.val() != '1' || third.val() != '1')
        {
            third.parent().show();
            $('label[for="bathroom_3"]').parent().show();
        }
    }

    checkSecondsBathrooms();

    var secondsCheckBathrooms = $('#bathroom_1, #bathroom_2, #bathroom_3');

    secondsCheckBathrooms.bind('change keydown keyup mouseup', function()
    {
        checkSecondsBathrooms();
    });

    $('form select[name="kitchen"]').each(function()
    {
        $(this).parent().after('<dt>&nbsp;</dt>'+
            '<dd><input type="checkbox" class="checkbox" value="1" id="kitchen_selectall" name="kitchen_selectall"/>'+
            '<label class="fieldmessage checkbox" for="kitchen_selectall">Select all of the kitchen options</label></dd>');

        $('#kitchen_selectall').change(function()
        {
            var select = '#kitchen_fridge, #kitchen_freezer, #kitchen_dishwasher,'+
                '#kitchen_oven, #kitchen_microwave, #kitchen_microwave_combi, #kitchen_hood';
            if (this.checked)
            {
                $(select).attr('checked', 'checked');
            }
            else
            {
                $(select).attr('checked', '');
            }
        });

        $('#kitchen_selectall, #kitchen_fridge, #kitchen_freezer, #kitchen_dishwasher,'+
            '#kitchen_oven, #kitchen_microwave, #kitchen_microwave_combi, #kitchen_hood').parent().width($('#kitchen_oven').parent().width() / 2);

		$('#long_stay, #short_stay, #forsale').parent().width(function (i, width) { return width / 3} );

        //$('dt label[for="kitchen_microwave"], dt label[for="kitchen_fridge"], dt label[for="kitchen_dishwasher"],'+
        //    'dt label[for="kitchen_microwave"], dt label[for="kitchen_hood"]').parent().hide().css({'clear': 'none'});

        $('dd :input[id="kitchen_microwave"], dd :input[id="kitchen_fridge"], dd :input[id="kitchen_dishwasher"],'+
            'dd :input[id="kitchen_microwave"], dd :input[id="kitchen_hood"], dd :input[id="short_stay"]').parent().prev().hide().css({'clear': 'none'});

        $('dt label[for="kitchen_freezer"], dt label[for="kitchen_oven"], dt label[for="kitchen_microwave_combi"], dt label[for="short_stay"]').hide();

		if (document.getElementById('short_stay'))
		{
			$(':input[id="forsale"]').parent().prev().hide().css({'clear': 'none'});
			$('dt label[for="forsale"]').hide();
		}
    });

    $('form dt label[for="price_inc"]').html('');


    function checkAppointmentPrivateStatus()
    {
        if ($('input#private').attr('checked'))
        {
            $('input#users').parent().hide().prev().hide();
        }
        else
        {
            $('input#users').parent().show().prev().show();
        }
    }

    if ($('input#private') && $('input#users'))
    {
        checkAppointmentPrivateStatus();

        $('input#private').live('change', function()
        {
            checkAppointmentPrivateStatus();
        });
    }

    function toggleForSalePrice()
    {
        if ($('form input#forsale').attr('checked'))
        {
            $('form input#forsale_price').parent().show().prev().show();
        }
        else
        {
            $('form input#forsale_price').parent().hide().prev().hide();
        }
    };

    if (document.getElementById('forsale'))
    {
        toggleForSalePrice();

        $('form input#forsale').change(function()
        {
			if (document.getElementById('short_stay'))
			{
				if (!$('#short_stay').attr('checked') && !$('#long_stay').attr('checked') && !$('#forsale').attr('checked'))
				{
					$(this).attr('checked', 'checked');
					alert('You must select at least one option');
				}
			}
			else
			{
//				if (!$('#forsale').attr('checked'))
//				{
//					$(this).attr('checked', 'checked');
//					alert('You must select at least one option');
//				}
			}

            toggleForSalePrice();
        });
    }


    function toggleShortStayPrice()
    {
        if ($('form input#short_stay').attr('checked'))
        {
            $('form input#short_stay_price').parent().show().prev().show();
        }
        else
        {
            $('form input#short_stay_price').parent().hide().prev().hide();
        }

        if ($('form input#long_stay').attr('checked'))
        {
            $('form input#price').parent().show().prev().show();
        }
        else
        {
            $('form input#price').parent().hide().prev().hide();
        }
    }

    if (document.getElementById('short_stay'))
    {
        toggleShortStayPrice();

        $('form input#short_stay, form input#long_stay').change(function()
        {
			if (document.getElementById('forsale'))
			{
				if (!$('#short_stay').attr('checked') && !$('#long_stay').attr('checked') && !$('#forsale').attr('checked'))
				{
					$(this).attr('checked', 'checked');
					alert('You must select at least one option');
				}
			}
			else
			{
				if (!$('#short_stay').attr('checked') && !$('#long_stay').attr('checked'))
				{
					$(this).attr('checked', 'checked');
					alert('You must select at least one option');
				}
			}
            
            toggleShortStayPrice();
        });
    }






    /**
     * Duplicate house check
     */
    $('form[action="/dashboard/properties/add-own.aspx"], form[action="/dashboard/properties/add-other.aspx"]').submit(function()
    {
        $this = $(this);
        var zipcode = $this.find('input[name="zipcode"]');
        var street = $this.find('input[name="street"]');
        var number = $this.find('input[name="number"]');
        var addition = $this.find('input[name="addition"]');

        return true;
    });



    jQuery.fn.calcFilesize = function()
    {
        var $this = $(this);
        var size = parseInt($this.text());

        if (size > 1024 * 1024 * 1024)
        {
            gb = Math.round((size * 10) / 1024 / 1024 / 1024) / 10;
            $this.text(Math.round(size / 1024 / 1024 / 1024) + ' Gb');
        }
        else if (size > 1024 * 1024)
        {
            mb = Math.round((size * 10) / 1024 / 1024) / 10;
            $this.text(mb + ' Mb');
        }
        else if (size < 1024)
        {
            $this.text(Math.round(size) + ' Bytes');
        }
        else
        {
            $this.text(Math.round(size / 1024) + ' Kb');
        }
    };

    jQuery.fn.calcFolderSize = function()
    {
        var $this = $(this);
        var size = parseInt($this.text());

        var result = size + ' item';

        if (size != 1)
        {
            result += 's';
        }

        $this.text(result);
    }

    
    $('.inline-edit .button').click(function()
    {
        var parent = $(this).hide().parent();

        var width = parent.width() - $('.title', parent).width() - 25;
        $('.field', parent).width(width).show();
        $('.value', parent).hide();
        $('.button.open', parent).hide();

        $('.field :input:not(.checkbox)', parent).width(width);
        $('.field :input', parent).focus();
    });

    $('.inline-edit.enum .field select').change(function()
    {
        var parent = $(this).parent().parent();
        $.post($('.url', parent).html(), {
            'value': $(this).val(),
            'fieldtype': 'enum',
            'enum-field': $('.enum-field', parent).html()
        }, function(data)
        {
            $('.field', parent).hide();
            $('.value', parent).html($('select option:selected', parent).html()).show();
            $('#ajax-container').html(data);
        });
    });

    $('.inline-edit.text .field input, .inline-edit.zipcode .field input').each(function()
    {
        $(this).parent().parent().parent().submit(function() { return false; });
    });

    $('.inline-edit.text .field input').bind('keydown focusout', function(ev)
    {
        var parent = $(this).parent().parent();
        var value = $('input', parent).val();

        if (ev.type == 'focusout' || ev.keyCode == $.ui.keyCode.ESCAPE)
        {
            if ($('.value', parent).html() == value)
            {
                $('.field', parent).hide();
                $('.value', parent).show();
                return;
            }
        }

        if (ev.keyCode == $.ui.keyCode.ENTER)
        {
            if (parent.hasClass('required') && value == '')
            {
                alert('Thou shall enter a value');
            }
            else
            {
                if ($('.value', parent).html() == $('input', parent).val())
                {
                    $('.field', parent).hide();
                    $('.value', parent).show();
                }
                else
                {
                    if ($('.regexp', parent).size() > 0 && !!value.match($('.regexp', parent).html()))
                    {
                        alert('Invalid format');
                    }
                    else
                    {
                        $.post($('.url', parent).html(), {
                            'value': $(this).val(),
                            'fieldtype': 'text'
                        }, function(data)
                        {
                            $('.field', parent).hide();
                            var value = $('input', parent).val() || '-';
                            //if (value == '') value = '-';
                            $('.value', parent).html(value).show();
                            $('#ajax-container').html(data);
                        });
                    }
                }
            }
        }
    });

    $('.inline-edit.zipcode .field input').bind('focusout keydown', function(ev)
    {
        var parent = $(this).parent().parent();
        var value = $('input', parent).val();
        
        if (ev.type == 'focusout' || ev.keyCode == $.ui.keyCode.ESCAPE)
        {
            if ($('.value', parent).html() == value)
            {
                $('.field', parent).hide();
                $('.value', parent).show();
                return;
            }
        }

        if (ev.keyCode == $.ui.keyCode.ENTER)
        {
            if (value == '')
            {
                alert('You must fill in a zipcode');
            }
            else if (!value.match(/^[1-9]{1}[0-9]{3}.?[a-zA-Z]{2}$/))
            {
                alert('Invalid zipcode');
            }
            else
            {
                if ($('.value', parent).html() == $('input', parent).val())
                {
                    $('.field', parent).hide();
                    $('.value', parent).show();
                }
                else
                {
                    $.post($('.url', parent).html(), {
                        'value': $(this).val(),
                        'fieldtype': 'text'
                    }, function(data)
                    {
                        $('.field', parent).hide();
                        var value = $('input', parent).val().replace(' ', '').toUpperCase() || '-';
                        //if (value == '') value = '-';
                        $('.value', parent).html(value).show();
                        $('#ajax-container').html(data);
                    });
                }
            }
        }
    });

    var booleanValues = {
        '0': 'No',
        '1': 'Yes'
    };

    $('.inline-edit.bool .field input').change(function(ev)
    {
        var parent = $(this).parent().parent();
        var value = $('input', parent).val();

        var checked = '0';

        if ($(this).is(':checked'))
        {
            checked = '1';
        }

        $.post($('.url', parent).html(), {
            'value': checked,
            'fieldtype': 'text'
        }, function(data)
        {
            $('.field', parent).hide();
            //var value = $('input', parent).val().replace(' ', '').toUpperCase() || '-';
//            var checked = '0';
//
//            if ($('input', parent).is(':checked'))
//            {
//                checked = '1';
//            }

            $('.value', parent).html(booleanValues[checked]).show();
            $('#ajax-container').html(data);
        });
    });
});
