
/**
* Sjopper Object
*
* @type Object
*/

var Sjopper =
{

    /** -------------------------------------------------------------------------------------------
    * Base package
    *
    * menu (package)    menu
    *
    * positionFooter    footer positioneren
    * loadTriggers      triggers van de site inladen
    * loadMessages      social messages inladen
    * loadUploadify     uploadify laden
    * loadMaps          google maps laden
    * showMapsPopup     popupje met maps tonen
    * deleteMapsPopup   maps popupje weer verwijderen
    * openBigMap        fullscreen map openenen
    * cropImage         image croppen
    * datepicker        datepicker op een input doen
    *
    * city (package)    boomla nl city
    *
    */

    base:
    {

        /**
        * Markers array die de maps markers bevat.
        *
        * @type Array
        */

        markers: [],


        /**
        * Menu package
        *
        * click             klikken op de menu bar
        */

        menu:
        {

            /**
            * Click.
            */

            click: function()
            {
                if ($('#floating_login').height() == 100)
                {
                    $('#floating_login').css('height', 20);
                    $('#arrow').attr('src', '/images/arrow_down.png');
                    $('#arrow').attr('title', 'menu uitklappen');
                }

                else
                {
                    $('#floating_login').css('height', 100);
                    $('#arrow').attr('src', '/images/arrow_up.png');
                    $('#arrow').attr('title', 'menu inklappen');
                }
            }
        },


        /**
        * Footer bar positioneren.
        *
        */

        positionFooter: function()
        {
            $('#footer').css(
            {
                width: $(window).width()+'px'
            });
        },


        /**
        * Triggers inladen van de site.
        *
        */

        loadTriggers: function()
        {

            /**
            * stap 1 van de nieuwe aanbieding laden indien nodig
            */

            if (parseInt(window.location.href.indexOf('nieuweaanbieding')) > 0)
            {
                Sjopper.newdeal.loadStep(1, 0);
            }


            /**
            * Values inladen voor de overzicht pagina.
            */

            if (parseInt(window.location.href.indexOf('overzicht')) > 0)
            {
                Sjopper.newdeal.loadNieuweAanbiedingen();
            }


            /**
            * Uploadify laden (bij edit).
            */

            if (parseInt(window.location.href.indexOf('mijnaanbiedingen/wijzig')) > 0)
            {
                Sjopper.base.loadUploadify();
                $('input[rel="keyup"],textarea[rel="keyup"]').trigger('onkeyup');


                Sjopper.placement.loadPlacements($('#deal_id').val());
            }


            /**
            * Message box inladen.
            */

            if (parseInt(window.location.href.indexOf('/aanbieding')) > 0)
            {
                Sjopper.base.loadMessages();
                Sjopper.actueel.loadDeals(1);

                setInterval(function()
                {
                    Sjopper.base.loadMessages();
                }, 5000);
            }


            /**
            * Login bar positioneren.
            */

            $('#floating_login_holder').css(
            {
                right: ((($(window).width() - 970) / 2) + 11)+'px'
            }).show();

            $('#floating_login').css({ width: 220 }).show();


            /*
            * Footer bar positioneren.
            */

            Sjopper.base.positionFooter();
        },


        /**
        * Social messages inladen.
        */

        loadMessages: function()
        {
            /*
            $('#messagebox').fadeOut(400, function()
            {
                $(this).html('<img src="/images/ajax-loader.gif" />').fadeIn(400, function()
                {
                    $.get('/handles/ajax/get_messages.php', function(data)
                    {
                        $('#messagebox').fadeOut(400, function()
                        {
                            $(this).html(data).fadeIn();
                        });
                    });
                });
            });*/

            $.get('/handles/ajax/get_messages.php', function(data)
            {
                $('#messagebox').html(data);
            });
        },


        /**
        * Uploadify laden.
        *
        */

        loadUploadify: function()
        {
            $('#image_upload').uploadify(
            {
                uploader: '/swf/uploadify.swf',
                cancelImg: '/images/cancel.png',
                script: '/handles/ajax/upload_photo.php?session_id='+$('#session_id').val(),
                auto: true,
                multi: false,
                fileExt: '*.jpg;',
                fileDesc: 'JPG foto bestanden',
                buttonImg: '/images/selecteer_een_foto.png',
                onComplete: function(event, ID, fileObj, response, data)
                {
                    try
                    {
                        var result = $.parseJSON(response);

                        var html = '<img src="'+result.image_uri+'" /> <br /> <a href="javascript:void(0);" onclick="javascript:Sjopper.newdeal.changePhoto();">andere foto</a><input type="hidden" name="mm_id" id="mm_id" value="'+result.mm_id+'" /><input type="hidden" name="mm_hash" id="mm_hash" value="'+result.mm_hash+'" />';
                        $('#box_image_result').html(html);

                        $('#no_photo').removeAttr('checked');
                    }

                    catch (e)
                    {
                        Alert.show('Er is een fout opgetreden.');
                    }
                },
                onAllComplete: function(event, data)
                {
                    $('#box_image_upload').fadeOut(500, function()
                    {
                        $('#box_image_result').fadeIn(500);
                    });
                }
            });
        },


        /**
        * Google maps laden.
        */

        loadMaps: function(div, lat, lon, extra_options, show_marker, drop, all_active_locations)
        {

            /**
            * Center location van de map.
            *
            * @type google.maps.LatLng
            */

            var location = new google.maps.LatLng(lat.toString().replace(',', '.'), lon.toString().replace(',', '.'));


            /**
            * Default options van de map.
            */

            var options =
            {
                zoom: 14,
                center: location,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                disableDoubleClickZoom: true
            };


            /**
            * Eventuele extra opties extenden (samenvoegen jooo).
            */

            if (extra_options)
            {
                $.extend(options, extra_options);
            }


            /**
            * Map (kaart) aanmaken.
            */

            var map = new google.maps.Map(document.getElementById(div), options);


            /**
            * Marker weergeven op kaart.
            */

            if (show_marker)
            {
                var marker = new google.maps.Marker(
                {
                    position: location,
                    map: map,
                    title: "Location van de aanbieding"
                });
            }


            /**
            * Droppen van marker op kaart.
            */

            if (drop)
            {
                google.maps.event.addListener(map, 'click', function(event)
                {

                    /**
                    * Als er al markers zijn -> verwijderen.
                    */

                    if (Sjopper.base.markers[0])
                    {
                        Sjopper.base.markers[0].setMap(null);
                        Sjopper.base.markers.length = 0;
                    }


                    /**
                    * Nieuwe marker aanmaken.
                    *
                    * @type google.maps.Marker
                    */

                    var marker = new google.maps.Marker(
                    {
                        position: event.latLng,
                        map: map,
                        draggable: true
                    });


                    /**
                    * Marker toevoegen aan de base marker array.
                    */

                    Sjopper.base.markers.push(marker);


                    /**
                    * Movement event aan de marker hangen.
                    */

                    google.maps.event.addListener(marker, 'dragend', function()
                    {
                        $('#marker_lat').val(event.latLng.lat());
                        $('#marker_lon').val(event.latLng.lng());

                        var failed = false;

                        var geocoder = new google.maps.Geocoder();


                        /**
                        * Geo location ophalen van de lat long.
                        *
                        * @type google.maps.Geocoder
                        */

                        geocoder.geocode({ latLng: marker.getPosition() }, function(responses)
                        {
                            if (responses && responses.length > 0)
                            {

                                /**
                                * Locatie ophalen.
                                */

                                $('#marker_address').html(responses[0].formatted_address);

                                var location_split = responses[0].formatted_address.split(', ');
                                var city_split = location_split[1].split(' ');

                                var location =
                                {
                                    address: location_split[0],
                                    zip: city_split[0],
                                    city: city_split[1] ? city_split[1] : city_split[0],
                                    country: location_split[2],
                                    lat: event.latLng.lat(),
                                    lon: event.latLng.lng()
                                };


                                /**
                                * NL ID van de plaats ophalen.
                                */

                                $.post('/handles/ajax/get_nl_id.php', location, function(result)
                                {
                                    try
                                    {
                                        var result = $.parseJSON(result);

                                        if (result.status == 'OK')
                                        {
                                            $('#nl_id').val(result.nl_id);
                                            $('#city_name').val(result.nl_plaats);
                                            $('#marker_lat').val(event.latLng.lat());
                                            $('#marker_lon').val(event.latLng.lng());
                                        }

                                        else
                                        {
                                            Alert.show('Plaats niet gevonden.');
                                            failed = true;
                                        }
                                    }

                                    catch (e)
                                    {
                                        Alert.show('Er is iets fout gegaan.');
                                        failed = true;
                                    }
                                });

                            }

                            else
                            {
                                Alert.show('Plaats niet gevonden.');
                                failed = true;
                            }
                        });


                        /**
                        * Als hij geen location heeft kunnen vinden alles op null setten.
                        */

                        if (!failed)
                        {
                            $('#marker_lat').val('');
                            $('#marker_lon').val('');
                            $('#nl_id').val(0);
                            $('#city_name').val('');
                        }
                    });


                    /**
                    * Dragend triggeren, zodat bovenstaande funtie word uitgevoerd.
                    */

                    google.maps.event.trigger(marker, 'dragend');

                });
            }


            // Alle actieve placements weergeven op de kaart.

            if (all_active_locations)
            {
                /*
                $.get('/handles/ajax/get_active_deals.php', function(result)
                {
                    var result = $.parseJSON(result);

                    $(result).each(function(deal)
                    {
                        var title = deal.title;

                        alert(title);

                        $(deal.placements).each(function(placement)
                        {
                            var marker = new google.maps.Marker(
                            {
                                position: new google.maps.LatLng(placement.lat.toString().replace(',', '.'), placement.long.toString().replace(',', '.')),
                                map: map,
                                draggable: false
                            });
                        });
                    });
                });
                */
            }
        },


        /**
        * Maps popupje tonen.
        */

        showMapsPopup: function(that, lat, lon)
        {
            var loc = $(that).offset();

            $('body').append('<div id="MAPS_POPUP" style="z-index: 50000; border: 5px #ffffff solid; top: '+(loc.top - 120)+'px; left: '+(loc.left - 75)+'px; width: 150px; height: 100px; position: absolute;"></div>');

            var opt =
            {
                streetViewControl: false,
                zoomControl: false,
                mapTypeControl: false,
                zoom: 12
            };

            Sjopper.base.loadMaps('MAPS_POPUP', lat, lon, opt, true);
        },


        /**
        * Maps popupje deleten.
        */

        deleteMapsPopup: function()
        {
            $('#MAPS_POPUP').remove();
        },


        /**
        * Grote map openen in dialog.
        */

        openBigMap: function(that, lat, lon)
        {
            $('body').append('<div id="BIG_MAP"></div>');

            $('#BIG_MAP').dialog(
            {
                autoOpen: true,
                width: ($(window).width() - 100),
                height: ($(window).height() - 100),
                position: 'center',
                title: 'Locatie van de aanbieding',
                modal: true,
                open: function()
                {
                    Sjopper.base.loadMaps('BIG_MAP', lat, lon, { zoom: 13 }, true, false, true);
                }
            });
        },


        /**
        * Image croppen
        */

        cropImage: function()
        {
            // ?????????????
        },


        /**
        * Max length info boxje.
        */

        maxLength: function(that)
        {
            var left = parseInt($(that).attr('maxlength')) - $(that).val().length;

            $('#left_'+$(that).attr('id')).remove();
            $('<span style="margin-left: 20px; font-size: 11px;" id="left_'+$(that).attr('id')+'">'+left+'</span>').insertAfter($(that));
        },


        /**
        * Jquery datepicker toepassen op een selector.
        */

        datepicker: function(selector)
        {
            selector.datepicker(
            {
                dateFormat: 'dd-mm-yy',
                buttonImage: '/images/calendar.png',
                buttonImageOnly: true,
                buttonText: 'Kies een begin datum',
                showOn: 'button',
                gotoCurrent: true
            });

            selector.attr(
            {
                readonly: 'readonly',
            });

            selector.css(
            {
                background: '#3CAFDF',
                border: 'none',
                color: '#ffffff'
            });

            selector.next().css(
            {
                paddingTop: '4px'
            });

            $('.ui-datepicker-trigger').css(
            {
                cursor: 'pointer'
            });
        },


        /** ---------------------------------------------------------------------------------------
        * Boomla nl city package.
        *
        * loadCities        steden laden aan de hand van letters
        * cityBlur          checken of nl id is geset na blurren van input
        * clearCity         city fields clearen
        * selectCity        nl id setten na selecteren van plaats
        *
        * #city_name    input   text
        * #city_list    div
        * #nl_id        input   hidden
        */

        city:
        {

            /**
            * Steden laden.
            *
            * @param that
            * @param e
            */

            loadCities: function(that, e)
            {

                /**
                * Key up en down afvangen.
                */

                if (e.keyCode == 38 || e.keyCode == 40)
                {
                    if (e.keyCode == 38)
                    {
                        if ($('.city[rel="selected"]').prev('.city').length > 0)
                        {
                            $('.city[rel="selected"]').prev('.city').attr('rel', 'selected').css('background', '#FF8C00');
                            $('.city[rel="selected"]').last().attr('rel', '').css('background', '#F2B979');
                        }
                    }

                    else
                    {
                        if ($('.city[rel="selected"]').next('.city').length > 0)
                        {
                            $('.city[rel="selected"]').next('.city').attr('rel', 'selected').css('background', '#FF8C00');
                            $('.city[rel="selected"]').first().attr('rel', '').css('background', '#F2B979');
                        }
                    }

                    $('#city_list').scrollTo($('.city[rel="selected"]'), 250);
                }


                /**
                * Enter knop.
                */

                else if (e.keyCode == 13)
                {
                    $('.city[rel="selected"]').trigger('click');
                }


                /**
                * Tekst.
                */

                else
                {
                    $('#city_list').fadeOut(200, function()
                    {
                        if ($(that).val().length > 1)
                        {
                            $('#nl_id').val(0);

                            $.post('/handles/ajax/get_city.php', { city: $(that).val() }, function(result)
                            {
                                try
                                {
                                    var result = $.parseJSON(result);

                                    var html = '';

                                    var i = 0;
                                    $(result).each(function()
                                    {
                                        html += '<div'+(i == 0 ? ' rel="selected" style="background: #FF8C00;"' : '')+' data-id="'+this.nl_id+'" class="city" onclick="javascript:Sjopper.base.city.selectCity(this);">'+this.nl_plaats+'</div>';
                                        i++;
                                    });

                                    var pos = $('#city_name').position();

                                    $('#city_list').css({ top: (pos.top + 18), left: pos.left }).html(html).show();


                                }

                                catch (e)
                                {
                                   Alert.show('Er is een fout opgetreden.');
                                }
                            });
                        }
                    });
                }
            },


            /**
            * Onblur van de city.
            *
            */

            cityBlur: function()
            {
                setTimeout(function()
                {

                    /**
                    * Als nl id niet is gevuld, dus als de user heeft getyped, zonder plaats te selecten.
                    */

                    if ($('#nl_id').val() == '' || parseInt($('#nl_id').val()) == 0)
                    {

                        /**
                        * Data objectje bakken van de lcoation
                        *
                        * @type Object
                        */

                        var data =
                        {
                            location: $('#location_address').val()+' '+$('#location_zip').val()+' '+$('#city_name').val()
                        };


                        /**
                        * Post naar de geocodert.
                        */

                        $.post('/handles/ajax/get_geolocation.php', data, function(result)
                        {
                            try
                            {
                                var result = $.parseJSON(result);

                                if (result.status == 'OK')
                                {

                                    /**
                                    * Data post objectje bakken.
                                    *
                                    * @type Object
                                    */

                                    var data =
                                    {
                                        city: $('#city_name').val(),
                                        lat: result.lat,
                                        lon: result.lon
                                    };


                                    /**
                                    * Post naar de servert
                                    */

                                    var unknown = false;

                                    $.post('/handles/ajax/get_nl_id.php', data, function(result)
                                    {
                                        try
                                        {
                                            var result = $.parseJSON(result);

                                            if (result.status == 'OK' && parseInt(result.nl_id) > 0)
                                            {
                                                $('#nl_id').val(result.nl_id);
                                                $('#city_name').val(result.nl_plaats);

                                                $('#city_list').fadeOut(200);
                                            }

                                            else
                                            {
                                                unknown = true;
                                            }
                                        }

                                        catch (e)
                                        {
                                            unknown = true;
                                        }
                                    });


                                    /**
                                    * Geen nl id gevonden -> dan maar clearen van de city.
                                    */

                                    if (unknown)
                                    {
                                        Sjopper.base.city.clearCity();
                                    }
                                }


                                /**
                                * Geen lat long gevonden op de location -> clearen.
                                */

                                else
                                {
                                    Sjopper.base.city.clearCity();
                                }
                            }

                            catch (e)
                            {
                                Alert.show('Er is een fout opgetreden.');
                            }
                        });
                    }

                }, 350);
            },


            /**
            * City meuk clearen
            *
            * @param that
            */

            clearCity: function()
            {
                $('#city_name').val('');
                $('#nl_id').val('0');
                $('#city_list').fadeOut(200);
            },


            /**
            * City selecteren.
            *
            * @param that
            */

            selectCity: function(that)
            {
                var id = parseInt($(that).attr('data-id'));
                $('#nl_id').val(id);

                $('#city_name').val($(that).html());

                $('#city_list').fadeOut(200);
            }
        },
    },



    /** -------------------------------------------------------------------------------------------
    * Inloggen package
    *
    * login          inloggen van de user
    */

    inloggen:
    {

        /**
        * Klik op de knop afvangen.
        *
        */

        login: function()
        {
            if ($('#user_email').val() == '')
            {
                Alert.show('Je hebt je e-mailadres niet ingevuld.');
            }

            else if ($('#user_password').val() == '')
            {
                Alert.show('Je hebt je wachtwoord niet ingevuld.');
            }

            else
            {
                $('#inloggen_form').submit();
            }
        }
    },


    /** -------------------------------------------------------------------------------------------
    * Registreren package
    *
    * setPassword           wachtwoord instellen
    * sendValidateCode      validatie code sturen naar de usert
    * validateAccount       account valideren
    * checkEmail            emailadres checken
    * submit                registreren van de user na input checks
    */

    register:
    {

        /**
        * Wachtwoord instellen.
        *
        */

        setPassword: function()
        {

            if ($('#password').val() == '')
            {
                Alert.show('U heeft het wachtwoord niet ingevuld.');
            }

            else if ($('#password_repeat').val() == '')
            {
                Alert.show('U heeft het wachtwoord (herhaling) niet ingevuld.');
            }

            else if ($('#password').val() != $('#password_repeat').val())
            {
                Alert.show('De wachtwoorden zijn niet gelijk.');
            }

            else
            {

                /**
                * Data objectje bakken.
                *
                * @type Object
                */

                var data =
                {
                    profile_id: $('#profile_id').val(),
                    password: $('#password').val()
                };


                /**
                * En posten naar de server.
                */

                $.post('/handles/ajax/register/set_password.php', data, function(result)
                {
                    try
                    {
                        var result = $.parseJSON(result);

                        if (result.status == 'OK')
                        {
                            $('#activate_form_result').fadeOut(500, function()
                            {
                                $('#set_password_result').fadeIn(750, function()
                                {
                                    $('#register_form').dialog('destroy');

                                    setTimeout(function()
                                    {
                                        Sjopper.newdeal.loginForm();
                                    }, 500);
                                });
                            });
                        }

                        else
                        {
                            Alert.show('Het instellen van het wachtwoord is mislukt.');
                        }
                    }

                    catch (e)
                    {
                        Alert.show('Het instellen van het wachtwoord is mislukt.');
                    }
                });
            }
        },


        /**
        * Validatie code via de mail sturen.
        *
        */

        sendValidateCode: function()
        {

            /**
            * Data objectje bakken.
            *
            * @type Object
            */

            var data =
            {
                profile_id: $('#profile_id').val(),
                email: $('#company_emailaddress').val()
            };


            /**
            * Posten naar de server.
            */

            $.post('/handles/ajax/register/send_register_mail.php', data, function(result)
            {
                try
                {
                    var result = $.parseJSON(result);

                    if (result.status != 'OK')
                    {
                        Alert.show('Validate code sturen is mislukt.');
                    }
                }

                catch (e)
                {
                    Alert.show('Validate code sturen is mislukt.');
                }
            });
        },


        /**
        * Account valideren.
        *
        */

        validateAccount: function()
        {

            if ($('#hash').val() == '')
            {
                Alert.show('U heeft de hash niet ingevuld.');
            }

            else
            {

                /**
                * Data objectje.
                *
                * @type Object
                */

                var data =
                {
                    profile_id: $('#profile_id').val(),
                    hash: $('#hash').val()
                };


                /**
                * Data posten naar server.
                */

                $.post('/handles/ajax/register/check_activate_hash.php', data, function(result)
                {
                    try
                    {
                        var result = $.parseJSON(result);

                        if (result.status == 'OK')
                        {
                            $('#activate_form').fadeOut(500, function()
                            {
                                $('#activate_form_result').fadeIn(750);
                            });
                        }

                        else if (result.status == 'UNKNOWN_HASH')
                        {
                            Alert.show('Onbekende validatie code.');
                        }

                        else
                        {
                            Alert.show('Het activeren van uw account is niet gelukt.');
                        }
                    }

                    catch (e)
                    {
                        Alert.show('Het activeren van uw account is niet gelukt.');
                    }
                });
            }
        },


        /**
        * Emailadres checken.
        */

        checkEmail: function()
        {

            if ($('#company_emailaddress').val() != '')
            {

                // Ajax call naar de server.

                $.post('/handles/ajax/register/check_email.php', { emailaddress: $('#company_emailaddress').val() }, function(result)
                {
                    try
                    {
                        var result = $.parseJSON(result);

                        if (result.status == 'EMAIL_ALREADY_EXISTS_BUT_NO_PASSWORD')
                        {
                            $('#profile_id').val(result.profile_id);
                            $('#email_check').fadeIn();
                        }

                        else if (result.status == 'EMAIL_ALREADY_EXISTS')
                        {
                            Alert.show('Met dit e-mailadres ('+$('#company_emailaddress').val()+') is al een account geregistreerd.');
                            $('#company_emailaddress').val('');
                        }

                        else
                        {
                            $('#profile_id').val('0');
                            $('#email_check').fadeOut();
                        }
                    }

                    catch (e)
                    {
                        Alert.show('Er is een fout opgetreden.');
                    }
                });
            }
        },


        /**
        * Knop afvangen.
        *
        */

        submit: function()
        {

            /**
            * Velden check.
            */

            if ($('#company_name').val() == '')
            {
                Alert.show('Je hebt de bedrijfsnaam niet ingevuld.');
            }

            else if ($('#company_emailaddress').val() == '')
            {
                Alert.show('Je hebt het e-mailadres niet ingevuld.');
            }

            else if ($('#company_password').val() == '')
            {
                Alert.show('Je hebt het wachtwoord niet ingevuld.');
            }

            else if ($('#company_password_repeat').val() == '')
            {
                Alert.show('Je hebt het wachwoord (herhaling) niet ingevuld.');
            }

            else if ($('#company_password').val() != $('#company_password_repeat').val())
            {
                Alert.show('De wachtwoorden zijn niet gelijk.');
            }

            else if ($('#location_address').val() == '')
            {
                Alert.show('Je hebt de straat niet ingevuld.');
            }

            else if ($('#location_zip').val() == '')
            {
                Alert.show('Je hebt de postcode niet ingevuld.');
            }

            else if ($('#city_name').val() == '')
            {
                Alert.show('Je hebt de plaats niet ingevuld.');
            }

            else if (parseInt($('#nl_id').val()) == 0)
            {
                Alert.show('Onbekende plaats.');
            }


            /**
            * Alle velden zijn ingevuld.
            */

            else
            {

                /**
                * Email checken op uniekhied.
                *
                */

                var result = $.ajax({ url: '/handles/ajax/register/check_email.php', type: 'POST', data: { emailaddress: $('#company_emailaddress').val()}, async: false }).responseText;

                try
                {
                    result = $.parseJSON(result);

                    if (result.status != 'OK' && result.status != 'EMAIL_ALREADY_EXISTS_BUT_NO_PASSWORD')
                    {
                        if (result.status == 'EMAIL_ALREADY_EXISTS')
                        {
                            Alert.show('Het e-mailadres komt al voor in het systeem.');
                        }

                        else if (result.status == 'INVALID_EMAIL')
                        {
                            Alert.show('Ongeldig e-mailadres.');
                        }

                        else
                        {
                            Alert.show('Er is een fout opgetreden.');
                        }
                    }


                    /**
                    * Registeren maar, alles is oke ;).
                    */

                    else
                    {

                        $.post('/handles/ajax/register/create_company.php', $('#register_form').serialize(), function(result)
                        {
                            try
                            {
                                var result = $.parseJSON(result);

                                if (result.status == 'OK')
                                {
                                    $('#register_form').fadeOut(750, function()
                                    {
                                        $('#register_result').fadeIn(500);
                                    });
                                }

                                else
                                {
                                    Alert.show('Er is een fout opgetreden.');
                                }
                            }

                            catch (e)
                            {
                                Alert.show('Er is een fout opgetreden.');
                            }
                        });
                    }
                }

                catch (e)
                {
                    Alert.show('Er is een fout opgetreden.');
                }
            }
        }
    },


    /** -------------------------------------------------------------------------------------------
    * Newdeal package
    *
    * checkEmail                emailadres checken of er al een bedrijf bestaat
    * loginForm                 login formulier openen
    * registerForm              registratie formulier openen
    * loadStep                  Step laden -> input checks
    * doLoadStep                Step laden na validatie
    * changePhoto               Foto changen naar input
    * saveStep                  Step opslaan
    * toPayment                 User doorsturen naar nieuwe deals page overzicht
    * toNewDeal                 User doorsturen naar nieuwe deal page
    * editDeal                  User doorsturen naar edit deal page
    * deleteDeal                deal deleten
    * checkCoupon               coupon checken
    * deleteCoupon              coupon deleten
    * pay                       User doorsturen naar nieuwe deal page
    * setValues                 values setten (bedragen)
    * loadNieuweAanbiedingen    Nieuwe aanbiedingen laden.
    * saveWeeks                 aantal weken opslaan
    * checkTotalWeeks           totaal aantal weken checken
    * calculateEndDate          eind datum berekenen aan de hand van start datum
    *
    */

    newdeal:
    {

        /**
        * Emailadres checken
        *
        * @param val
        * @param t                ???????
        */

        checkEmail: function(val, t)
        {
            $.post('/handles/ajax/register/check_email.php', { emailaddress: val }, function(result)
            {
                try
                {
                    var result = $.parseJSON(result);

                    if (result.status == 'EMAIL_ALREADY_EXISTS')
                    {
                        $('#next_step').hide();
                        $('#email_message').html('E-mailadres bestaat al, klik <a onclick="javascript:Sjopper.newdeal.loginForm();" href="javascript:void(0);">hier</a> om in te loggen.');
                    }

                    else if (result.status == 'EMAIL_ALREADY_EXISTS_BUT_NO_PASSWORD')
                    {
                        $('#next_step').hide();
                        $('#email_message').html('Dit e-mailadres is al eens gebruikt voor het toevoegen van een aanbieding zonder registratie, klik <a href="javascript:void(0);" onclick="javascript:Sjopper.newdeal.registerForm();">hier</a> om nu een echt profiel te maken. <input type="hidden" name="profile_id" id="profile_id" value="'+result.profile_id+'" />');
                    }

                    else
                    {
                        $('#next_step').show();
                        $('#email_message').html('');
                    }
                }

                catch (e)
                {
                    Alert.show('Er is een fout opgetreden.');
                }
            });

            return false;
        },


        /**
        * Login formulier openenen.
        *
        */

        loginForm: function()
        {
            $('#login_form').dialog(
            {
                title: 'Inloggen',
                autoOpen: true,
                width: 350,
                resizable: false,
                draggable: false,
                modal: true,
                buttons:
                {
                    'Annuleren': function()
                    {
                        $(this).dialog('close');
                        $(this).dialog('destroy');
                    },

                    'Inloggen': function()
                    {
                        if ($('#user_emailaddress').val() == '')
                        {
                            Alert.show('Je hebt je e-mailadres niet ingevuld.');
                        }

                        else if ($('#user_password').val() == '')
                        {
                            Alert.show('Je hebt je wachtwoord niet ingevuld.');
                        }

                        else
                        {
                            $.post('/handles/ajax/new_deal/login.php', { user_email: $('#user_emailaddress').val(), user_password: $('#user_password').val() }, function(result)
                            {
                                try
                                {
                                    var result = $.parseJSON(result);

                                    if (result.status == 'OK')
                                    {
                                        $('#login_form').dialog('close');
                                        $('#login_form').dialog('destroy');

                                        Sjopper.newdeal.loadStep(2, 1);
                                    }

                                    else
                                    {
                                        Alert.show('De door u ingevoerde gegevens zijn onjuist.');
                                    }
                                }

                                catch (e)
                                {
                                    Alert.show('Er is een fout opgetreden.');
                                }
                            });
                        }
                    }
                },
                open: function()
                {
                    var html = '<form id="loginform">Vul hieronder uw e-mailadres en uw wachtwoord in om in te loggen. Heeft u nog geen account? Klik dan <a href="/bedrijf/registeren">hier</a>. <br /> <br /> <table><tr><td style="width: 100px;">E-mailadres:</td><td><input style="width: 200px;" type="text" name="user_emailaddress" id="user_emailaddress" /></td></tr><tr><td>Wachtwoord:</td><td><input style="width: 100px;" type="password" name="user_password" id="user_password" /></td></tr></table></form>';
                    $('#login_form').html(html);

                    $('#user_emailaddress').val($('#company_emailaddress').val());
                }
            });
        },


        /**
        * Registreren van een amailadres naar een usert.
        *
        */

        registerForm: function()
        {
            $('#register_form').dialog(
            {
                title: 'Registreren',
                autoOpen: true,
                width: 350,
                resizable: false,
                draggable: false,
                modal: true,
                zIndex: 2,
                open: function()
                {

                    /**
                    * Activate code via de mail sturen.
                    */

                    Sjopper.register.sendValidateCode();


                    /**
                    * Inhoud van de dialog toevoegen.
                    */

                    var html = '<div id="activate_form">Wij hebben u zojuist een e-mail gestuurd met uw activatie code. Vul deze code hieronder in het veld in om uw account te valideren. <br /> <br /> <strong>Code:</strong> <input type="text" name="hash" id="hash" /> <br /> <br /> <input type="button" name="validate_submit" id="validate_submit" value="Valideren" onclick="javascript:Sjopper.register.validateAccount();" /></div> <div id="activate_form_result" style="display: none;">Uw account is succesvol geactiveerd. Uw account heeft op dit moment nog geen wachtwoord, vul in het onderstaande veld uw gewenste wachtwoord. <br /> <br /> <table><tr><td style="width: 120px;"><strong>Wachtwoord:</strong></td><td><input type="password" name="password" id="password" /></td></tr><tr><td><strong>Wachtwoord (herhaling):</strong></td><td><input type="password" name="password_repeat" id="password_repeat" /></td></tr></table> <br /> <input type="button" name="set_password" id="set_password" value="Wachtwoord instellen" onclick="javascript:Sjopper.register.setPassword();" /></div> <div id="set_password_result" style="display: none;">Uw wachtwoord is succesvol ingesteld, over enkele seconden wordt u door gestuurd naar het inloggen formulier.</div>';
                    $('#register_form').html(html);
                }
            });
        },


        /**
        * Volgende stap laden, maar eerst before dispatch nog wat dingen doen indien nodig.
        *
        * @param step
        * @param prev_step
        */

        loadStep: function(step, prev_step)
        {

            /**
            * Stap 1 controle.
            */

            if (prev_step == 1)
            {

                if ($('#deal_title').val() == '')
                {
                    Alert.show('Je hebt de titel niet ingevuld.');
                }

                else if ($('#deal_description').val() == '')
                {
                    Alert.show('Je hebt de omschrijving niet ingevuld.');
                }

                else if ($('#deal_stock').val() == '')
                {
                    Alert.show('Je hebt de voorraad niet ingevuld.');
                }

                else if ($('#no_photo:checked').length == 0 && $('#mm_id').length == 0 || $('#mm_id').val() == '')
                {
                    Alert.show('Je hebt geen foto geupload.');
                }

                else
                {
                    Sjopper.newdeal.saveStep(step, prev_step);
                }
            }


            /**
            * Stap 2 controle.
            */

            else if (prev_step == 2)
            {

                /**
                * Data objectje bakken.
                *
                * @type Object
                */

                var data =
                {
                    deal_id: $('#deal_id').val()
                };


                /**
                * Data posten naar de server en locaties tellen.
                */

                $.post('/handles/ajax/new_deal/count_locations.php', data, function(result)
                {
                    try
                    {
                        var result = $.parseJSON(result);

                        if (result.status == 'OK' && parseInt(result.locations) > 0)
                        {
                            Sjopper.newdeal.saveStep(step, prev_step);
                        }

                        else
                        {
                            Alert.show('Voeg op z\'n minst 1 locatie toe om verder te gaan.');
                        }
                    }

                    catch (e)
                    {
                        Alert.show('Er is een fout opgetreden.');
                    }
                });
            }


            /**
            * Step 3 controle.
            */

            else if (prev_step == 3)
            {
                if ($('#deal_valid_from').val() == '')
                {
                    Alert.show('Je hebt de vanaf datum niet ingevuld.');
                }

                else if ($('#deal_valid_weeks').val() == '')
                {
                    Alert.show('Je hebt het aantal weken niet ingevuld.');
                }

                else if (parseInt($('#deal_valid_weeks').val()) < 1)
                {
                    Alert.show('Je moet minimaal 1 week kiezen.');
                }

                else
                {
                    Sjopper.newdeal.saveStep(step, prev_step);
                }
            }

            else
            {
                Sjopper.newdeal.saveStep(step, prev_step);
            }

        },


        /**
        * Nu de volgende stap echt laden.
        *
        * @param step
        * @param prev_step
        */

        doLoadStep: function(step, prev_step)
        {

            /**
            * Mocht nu de 4de step moeten worden geladen dan direct doorsturen naar winkelwagen.
            */

            if (step == 4)
            {
                Sjopper.newdeal.toPayment();
            }


            /**
            * Alle andere stappen
            */

            else
            {

                /**
                * Vorige step uitfaden.
                */

                $('#step'+prev_step).slideUp(500, function()
                {

                    /**
                    * Volgende step inlaoden in infaden.
                    */

                    $.get('/handles/ajax/new_deal/step'+step+'.php?deal_id='+$('#deal_id').val(), function(data)
                    {
                        $('#step'+step).html(data).slideDown(750, function()
                        {

                            /**
                            * Step 1.
                            */

                            if (step == 1)
                            {
                                $('#geo_form').html('');

                                Sjopper.base.loadUploadify();

                                $('input[rel="keyup"],textarea[rel="keyup"]').trigger('onkeyup');
                            }


                            /**
                            * Step 3.
                            */

                            if (step == 3)
                            {
                                Sjopper.base.datepicker($('#deal_valid_from'));
                                $('#deal_valid_weeks').trigger('onkeyup');
                            }

                        });
                    });
                });
            }
        },


        /**
        * Andere foto.
        *
        */

        changePhoto: function()
        {
            $('#box_image_result').fadeOut(500, function()
            {
                $('#box_image_upload').fadeIn(500);
            }).html('');
        },


        /**
        * Stap opslaan.
        *
        * @param step
        * @param prev_step
        */

        saveStep: function(step, prev_step)
        {
            var data = $('#form_step'+prev_step).serialize();

            $.post('/handles/ajax/new_deal/save_step.php?step='+prev_step+'&deal_id='+$('#deal_id').val(), data, function(data)
            {
                try
                {
                    var result = $.parseJSON(data);

                    if (result.status == 'OK')
                    {
                        Sjopper.newdeal.doLoadStep(step, prev_step);
                    }
                }

                catch (e)
                {
                    Alert.show('Er is een fout opgetreden.');
                }
            });
        },


        /**
        * Naar de payment page.
        *
        */

        toPayment: function()
        {
            window.location.href = "/bedrijf/overzicht";
        },


        /**
        * Nog een aanbieding, ooooh wat worden we toch rijk ja.
        *
        */

        toNewDeal: function()
        {
            window.location.href = "/bedrijf/nieuweaanbieding";
        },


        /**
        * Deal wijzigen
        *
        * @param deal_id
        */

        editDeal: function(deal_id)
        {
            window.location.href = '/bedrijf/nieuweaanbieding/'+deal_id;
        },


        /**
        * Deal verwijderen.
        *
        * @param deal_id
        */

        deleteDeal: function(deal_id)
        {
            var data = { deal_id: deal_id };

            $.post('/handles/ajax/new_deal/delete.php', data, function(result)
            {
                try
                {
                    var result = $.parseJSON(result);

                    if (result.status == 'OK')
                    {
                        window.location.reload();
                    }
                }

                catch (e)
                {
                    Alert.show('Er is een fout opgetreden.');
                }
            });
        },


        /**
        * Coupon code checken.
        *
        * @param that
        */

        checkCoupon: function(that)
        {
            if ($(that).val().length > 0)
            {
                var table = $(that).parent().parent();
                var __input = table.find('td[rel="1"]').html();

                table.find('td[rel="1"]').html('<img src="/images/loader.gif" />');

                setTimeout(function()
                {
                    var data = { code: $(that).val() };

                    $.post('/handles/ajax/new_deal/add_coupon.php', data, function(result)
                    {
                        try
                        {
                            var result = $.parseJSON(result);

                            if (result.status == 'OK')
                            {
                                table.find('td[rel="1"]').html($(that).val());
                                table.find('td[rel="2"]').html('&euro; '+number_format((result.coupon_value / 100), 2, ',', ''));
                                table.find('td[rel="3"]').html('<a href="javascript:void(0);" onclick="javascript:Sjopper.newdeal.deleteCoupon(\''+$(that).val()+'\');">niet gebruiken</a>');

                                $('#coupon_value').val(parseInt($('#coupon_value').val()) + parseInt(result.coupon_value / 100));

                                Sjopper.newdeal.setValues();

                                var html = '<tr><td rel="1"><input onblur="javascript:Sjopper.newdeal.checkCoupon(this);" style="width: 120px;" type="text" name="boomla_coupon_code" id="boomla_coupon_code" /></td><td rel="2"><span id="html_coupon_value"></span></td><td rel="3"></td></tr>';

                                $('#coupon_table').append(html);
                            }

                            else
                            {
                                table.find('td[rel="1"]').html(__input);
                            }
                        }

                        catch (e)
                        {
                            Alert.show('Er is een fout opgetreden.');
                        }
                    });
                }, 1000);
            }
        },


        /**
        * Coupon verwijderen.
        *
        * @param code
        */

        deleteCoupon: function(code)
        {
            var data = { code: code };

            $.post('/handles/ajax/new_deal/delete_coupon.php', data, function(result)
            {
                try
                {
                    var result = $.parseJSON(result);

                    if (result.status == 'OK')
                    {
                        window.location.reload();
                    }
                }

                catch (e)
                {
                    Alert.show('Er is een fout opgetreden.');
                }
            });
        },


        /**
        * Naar ideal.
        *
        */

        pay: function()
        {
            window.location.href = "/bedrijf/betalen";
        },


        /**
        * Set values overzicht.
        *
        */

        setValues: function()
        {
            var total = ($('#total_price').val() - $('#coupon_value').val()) > 0 ? $('#total_price').val() - $('#coupon_value').val() : 0;

            if (total > 0)
            {
                $('#payment_submit').val('Afrekenen met iDeal');
                $('#coupon_div').slideDown();
            }

            else
            {
                $('#payment_submit').val('Aanbiedingen plaatsen');
                $('#coupon_div').slideUp();
            }

            $('#html_sub_total_price').html(number_format($('#total_price').val(), 2, ',', ''));
            $('#html_total_price').html(number_format((total), 2, ',', ''));

            var normal_price = 0;

            $('input[data="week"]').each(function()
            {
                normal_price += Number($(this).val());
            });

            if (normal_price > 4)
            {
                $('#normal_price').html('<br /> <small>(normale prijs: &euro; '+number_format((normal_price * 15), 2, ',', '')+')</small>');
            }
        },


        /**
        * Nieuwe aanbiedingen box ophalen.
        *
        */

        loadNieuweAanbiedingen: function()
        {
            $.get('/handles/ajax/get_nieuwe_aanbiedingen.php', function(data)
            {
                $('#nieuwe_aanbiedingen').html(data);
                Sjopper.newdeal.setValues();
            });
        },


        /**
        * Week opslaan.
        *
        * @param that
        */

        saveWeeks: function(that)
        {
            var tot_weeks = 0;

            $('input[data="week"]').each(function()
            {
                tot_weeks += parseFloat($(this).val());
            });

            if (tot_weeks > 100)
            {
                Alert.show('Je kan maximaal 100 aanbiedingen toevoegen.');
                $(that).val(1);
                $(that).trigger('onblur');
            }

            else
            {
                var deal_id = $(that).attr('rel');
                var weeks = $(that).val();

                $.post('/handles/ajax/new_deal/save_weeks.php', {deal_id: deal_id, weeks: weeks}, function()
                {
                    Sjopper.newdeal.loadNieuweAanbiedingen();
                });
            }
        },


        /**
        * Weken checken.
        */

        checkTotalWeeks: function(that)
        {
            if (isNaN($(that).val()))
            {
                $(that).val(1);
            }

            else
            {
                if ((parseFloat($('#total_weeks').val()) + parseFloat($(that).val())) > 100)
                {
                    Alert.show('Je hebt te veel weken ingevoerd, je kan maximaal 100 weken (aanbiedingen) aanmaken.');
                    $(that).val(1);
                }
            }
        },


        /**
        * Eind datum berekenen.
        */

        calculateEndDate: function()
        {

            /**
            * Alleen verder gaan als het aantal weken juist is.
            */

            if ($('#deal_valid_weeks').val() > 0)
            {

                /**
                * Data objecje bakken met de benodigde info.
                *
                * @type Object
                */

                var data =
                {
                    date_start: $('#deal_valid_from').val(),
                    weeks: $('#deal_valid_weeks').val()
                };


                /**
                * Gegevens posten naar de server.
                */

                $.post('/handles/ajax/calculate_end_date.php', data, function(result)
                {
                    try
                    {
                        var result = $.parseJSON(result);

                        if (result.status == 'OK')
                        {
                            $('#date_end').html(result.end_date);
                        }

                        else
                        {
                            Alert.show('Er is iets fout gegaan.');
                        }
                    }

                    catch (e)
                    {
                        Alert.show('Er is iets fout gegaan.');
                    }
                });
            }

            else
            {
                $('#date_end').html('');
            }
        }
    },


    /** -------------------------------------------------------------------------------------------
    * Edit deal package
    *
    * submit            submitten van het form
    */

    editdeal:
    {

        /**
        * Submit knop afvangen.
        *
        */

        submit: function()
        {

            if ($('#deal_title').val() == '')
            {
                Alert.show('Je hebt de titel niet ingevuld.');
            }

            else if ($('#deal_description').val() == '')
            {
                Alert.show('Je hebt de omschrijving niet ingevuld.');
            }

            else if ($('#deal_offer_description').val() == '')
            {
                Alert.show('Je hebt de korting omschrijving niet ingevuld.');
            }

            else if ($('#city_name').val() == '')
            {
                Alert.show('Je hebt de plaats niet ingevuld.');
            }

            else if ($('#nl_id').val() == 0)
            {
                Alert.show('Onbekende plaats.');
            }

            else if ($('#deal_stock').val() == '')
            {
                Alert.show('Je hebt de voorraad niet ingevuld.');
            }

            else
            {
                $('#edit_deal').submit();
            }
        }
    },


    /** -------------------------------------------------------------------------------------------
    * Mijn account package
    *
    * submitMyAccount       mijn gegevens aanpassen
    * submitPassword        wachtwoord aanpassen
    */

    mijnaccount:
    {

        /**
        * Submitten van het mijn account formulier
        */

        submitMyAccount: function()
        {
            if ($('#company_name').val() == '')
            {
                Alert.show('Uw heeft geen bedrijfsnaam ingevuld.');
            }

            else if ($('#company_address').val() == '')
            {
                Alert.show('U heeft geen adres ingevuld.');
            }

            else if ($('#company_zip').val() == '')
            {
                Alert.show('U heeft geen postcode ingevuld.');
            }

            else if ($('#city_name').val() == '')
            {
                Alert.show('U heeft geen plaats ingevuld.');
            }

            else if ($('#nl_id').val() == 0 || $('#nl_id').val() == '')
            {
                Alert.show('Onbekende plaats.');
            }

            else
            {

                /**
                * Data objectje bakken.
                *
                * @type Object
                */

                var data =
                {
                    company_name: $('#company_name').val(),
                    address: $('#location_address').val(),
                    zip: $('#location_zip').val(),
                    nl_id: $('#nl_id').val()
                };


                /**
                * Data gegevens psoten naar de servert.
                */

                $.post('/handles/ajax/account/save_my_account.php', data, function(result)
                {
                    try
                    {
                        var result = $.parseJSON(result);

                        if (result.status == 'OK')
                        {
                            $('#my_account').slideUp();
                            $('#all_ok').slideDown();
                        }

                        else
                        {
                            Alert.show('Er is een fout opgetreden.');
                        }
                    }

                    catch (e)
                    {
                        Alert.show('Er is een fout opgetreden.');
                    }
                });
            }
        },


        /**
        * Submitten van het wachtwoord aanpassen formulier.
        */

        submitPassword: function()
        {
            if ($('#my_current_password').val() == '')
            {
                Alert.show('U heeft uw huidige wachtwoord niet ingevuld.');
            }

            else if ($('#new_password').val() == '')
            {
                Alert.show('U heeft uw nieuwe wachtwoord niet ingevuld.');
            }

            else if ($('#new_password_repeat').val() == '')
            {
                Alert.show('U heeft uw nieuwe wachtwoord (herhaling) niet ingevuld.');
            }

            else if ($('#new_password').val() != $('#new_password_repeat').val())
            {
                Alert.show('De wachtwoorden zijn niet gelijk.');
            }

            else
            {

                /**
                * Data objectje bakken.
                *
                * @type Object
                */

                var data =
                {
                    current_password: $('#my_current_password').val()
                };


                /**
                * Huidig password checken op geldigheid.
                */

                $.post('/handles/ajax/account/check_password.php', data, function(result)
                {
                    try
                    {
                        var result = $.parseJSON(result);

                        if (result.status == 'OK')
                        {

                            /**
                            * Data objectje bakken van het nieuwe wacthwoord.
                            *
                            * @type Object
                            */

                            var data =
                            {
                                new_password: $('#new_password').val()
                            };


                            /**
                            * Nieuwe wacthwoord posten naar de server.
                            */

                            $.post('/handles/ajax/account/save_new_password.php', data, function(result)
                            {
                                try
                                {
                                    var result = $.parseJSON(result);

                                    if (result.status == 'OK')
                                    {
                                        $('#my_password').slideUp();
                                        $('#all_ok').slideDown();
                                    }

                                    else
                                    {
                                        Alert.show('Er is een fout opgetreden.');
                                    }
                                }

                                catch (e)
                                {
                                    Alert.show('Er is een fout opgetreden.');
                                }
                            });

                        }

                        else if (result.status == 'PASSWORD_WRONG')
                        {
                            Alert.show('Het huidige wachtwoord is onjuist.');
                        }

                        else
                        {
                            Alert.show('Er is een fout opgetreden.');
                        }
                    }

                    catch (e)
                    {
                        Alert.show('Er is een fout opgetreden.');
                    }
                });
            }
        }
    },


    /** -------------------------------------------------------------------------------------------
    * Wachtwoord vergeten package
    *
    * sendMail              mailtje sturen met activation code
    * sendPassword          mailtje sturen naar de user met z'n nieuwe wachtwoord
    */

    wachtwoordvergeten:
    {

        /**
        * Email sturen naar de user met een activatie code.
        */

        sendMail: function()
        {

            if ($('#emailaddress').val() == '')
            {
                Alert.show('Je hebt je e-mailadres niet ingevuld.');
            }

            else
            {

                /**
                * checken of emailadres wel bestaat
                */

                $.post('/handles/ajax/register/check_email.php', { emailaddress: $('#emailaddress').val() }, function(result)
                {
                    try
                    {

                        /**
                        * Result parsen als json.
                        */

                        var result = $.parseJSON(result);


                        /**
                        * Email adres bestaat.
                        */

                        if (result.status == 'EMAIL_ALREADY_EXISTS')
                        {

                            /**
                            * Data objectje bakken.
                            */

                            var data =
                            {
                                emailaddress: $('#emailaddress').val(),
                                profile_id: result.profile_id
                            };

                            var profile_id = result.profile_id;


                            /**
                            * Ajax post naar de servert.
                            */

                            $.post('/handles/ajax/ww/send_password_verification_mail.php', data, function(result)
                            {

                                try
                                {
                                    var result = $.parseJSON(result);

                                    if (result.status == 'OK')
                                    {
                                        $('#emailaddress').attr('disabled', 'disabled');
                                        $('#sendMailSubmit').attr('disabled', 'disabled');

                                        $('#profile_id').val(profile_id);

                                        $('#ww_step1').slideUp();

                                        $('#ww_step2').slideDown();
                                    }

                                    else
                                    {
                                        Alert.show('Er is iets fout gegaan.');
                                    }
                                }

                                catch (e)
                                {
                                    Alert.show('Er is iets fout gegaan.');
                                }
                            });
                        }


                        /**
                        * Email adres bestaat niet.
                        */

                        else
                        {
                            Alert.show('E-mailadres komt niet voor in ons systeem.');
                        }
                    }

                    catch (e)
                    {
                        Alert.show('Er is iets fout gegaan.');
                    }
                });
            }
        },


        /**
        * Nieuw wachtwoord naar de gebruiker sturen.
        *
        */

        sendPassword: function()
        {

            if ($('#code').val() == '')
            {
                Alert.show('U heeft de activatie code niet ingevuld.');
            }

            else
            {

                // Data objectje bakken.

                var data =
                {
                    emailaddress: $('#emailaddress').val(),
                    profile_id: $('#profile_id').val(),
                    code: $('#code').val()
                };


                // Post naar de servert.

                $.post('/handles/ajax/ww/send_new_password.php', data, function(result)
                {

                    try
                    {
                        var result = $.parseJSON(result);

                        if (result.status == 'OK')
                        {
                            $('#code').attr('disabled', 'disabled');
                            $('#sendPasswordSubmit').attr('disabled', 'disabled');

                            $('#ww_step2').slideUp();

                            $('#all_ok').slideDown();
                        }

                        else if (result.status == 'MAIL_SEND_ERROR')
                        {
                            Alert.show('Het versturen van het nieuwe wachtwoord is mislukt.');
                        }

                        else if (result.status == 'UNKNOWN_USER')
                        {
                            Alert.show('Onbekende gebruiker.');
                        }

                        else if (result.status == 'UNKNOWN_CODE')
                        {
                            Alert.show('Onbekende code.');
                        }

                        else
                        {
                            Alert.show('Er is iets fout gegaan.');
                        }
                    }

                    catch (e)
                    {
                        Alert.show('Er is iets fout gegaan.');
                    }
                });
            }
        }
    },


    /** -------------------------------------------------------------------------------------------
    * Mee doen page
    *
    * teaserForm        formulier laden.
    */

    meedoen:
    {

        /**
        * Het formulier laden om 6 weken gratis te hebben.
        */

        teaserForm: function()
        {
            $('body').append('<div id="teaser_form"></div>');

            $.get('/handles/ajax/meedoen/teaser_form.php', function(data)
            {
                $('#teaser_form').html(data);

                $('#teaser_form').dialog(
                {
                    autoOpen: true,
                    modal: true,
                    draggable: false,
                    width: 380,
                    height: 335,
                    resizable: false,
                    title: '6 weken gratis proberen!',
                    open: function()
                    {

                    },
                    buttons:
                    {
                        'Versturen': function()
                        {

                            /**
                            * E-mailadres checken.
                            */

                            if ($('#company_emailaddress').val() == '')
                            {
                                Alert.show('U heeft uw e-amailadres niet ingevuld.');
                            }

                            else
                            {

                                /**
                                * E-mailadres inpakken.
                                *
                                * @type Object
                                */

                                var data =
                                {
                                    emailaddress: $('#company_emailaddress').val()
                                };


                                /**
                                * Posten naar de server
                                *
                                */

                                $.post('/handles/ajax/register/check_email.php', data, function (result)
                                {

                                    try
                                    {
                                        var result = $.parseJSON(result);

                                        if (result.status == 'OK')
                                        {

                                            /**
                                            * Velden check.
                                            */

                                            if ($('#company_name').val() == '')
                                            {
                                                Alert.show('U heeft uw bedrijfsnaam niet ingevuld.');
                                            }

                                            else if ($('#location_address').val() == '')
                                            {
                                                Alert.show('U heeft uw adres niet ingevuld.');
                                            }

                                            else if ($('#location_zip').val() == '')
                                            {
                                                Alert.show('U heeft uw postcode niet ingevuld.');
                                            }

                                            else if ($('#city_name').val() == '')
                                            {
                                                Alert.show('U heeft uw plaatsnaam niet ingevuld.');
                                            }

                                            else
                                            {

                                                /**
                                                * Data objectje bakken voor post.
                                                *
                                                * @type Object
                                                */

                                                var data =
                                                {
                                                    company_name: $('#company_name').val(),
                                                    emailaddress: $('#company_emailaddress').val(),
                                                    address: $('#location_address').val(),
                                                    zip: $('#location_zip').val(),
                                                    nl_id: $('#nl_id').val()
                                                };


                                                /**
                                                * Posten naar de servert.
                                                */

                                                $.post('/handles/ajax/tryout/send_mail.php', data, function(result)
                                                {
                                                    try
                                                    {
                                                        var result = $.parseJSON(result);

                                                        if (result.status == 'OK')
                                                        {
                                                            $('#teaser_real_form').slideUp();
                                                            $('#teaser_real_form_ok').slideDown();

                                                            $('#teaser_form').dialog('option', 'buttons', []);
                                                        }

                                                        else
                                                        {
                                                            Alert.show('Er is iets fout gegaan.');
                                                        }
                                                    }

                                                    catch (e)
                                                    {
                                                        Alert.show('Er is een fout opgetreden.');
                                                    }
                                                });
                                            }
                                        }


                                        /**
                                        * E-mailadres bestaat al.
                                        */

                                        else if (result.status == 'EMAIL_ALREADY_EXISTS' || result.status == 'EMAIL_ALREADY_EXISTS_BUT_NO_PASSWORD')
                                        {
                                            Alert.show('Het door uw opgegeven e-mailadres komt al voor in ons systeem.');
                                        }


                                        /**
                                        * Onjuist e-mailadres.
                                        */

                                        else if (result.status == 'INVALID_EMAIL')
                                        {
                                            Alert.show('Onjuist e-mailadres.');
                                        }


                                        /**
                                        * Fout
                                        */

                                        else
                                        {
                                            Alert.show('Er is een fout opgetreden.');
                                        }
                                    }


                                    /**
                                    * Parsen van de json is mislukt.
                                    */

                                    catch (e)
                                    {
                                        Alert.show('Er is een fout opgetreden.');
                                    }
                                });
                            }
                        }
                    },
                    close: function()
                    {
                        $('#teaser_form').remove();
                    }
                });
            });
        }
    },


    /** -------------------------------------------------------------------------------------------
    * Contact package
    *
    * submit            submitten van de contact page
    */

    contact:
    {

        /**
        * Submit van het formulier
        */

        submit: function()
        {

            if (typeof($('input[name="prefix"]:checked').val()) == 'undefined')
            {
                Alert.show('U heeft geen prefix ingevuld.');
            }

            else if ($('#contact_name').val() == '')
            {
                Alert.show('U heeft geen naam ingevuld.');
            }

            else if ($('#contact_emailaddress').val() == '')
            {
                Alert.show('U heeft geen e-mailadres ingevuld.');
            }

            else if ($('#contact_message').val() == '')
            {
                Alert.show('U heeft geen bericht ingevuld.');
            }

            else
            {

                /**
                * Data objectje bakken met de contact form gegevens.
                *
                * @type Object
                */

                var data =
                {
                    prefix: $('input[name="prefix"]:checked').val(),
                    name: $('#contact_name').val(),
                    emailaddress: $('#contact_emailaddress').val(),
                    phonenumber: $('#contact_phonenumber').val(),
                    message: $('#contact_message').val()
                };


                /**
                * Post van het form naar de servert.
                */

                $.post('/handles/ajax/contact/send_form.php', data, function(result)
                {
                    try
                    {
                        var result = $.parseJSON(result);

                        if (result.status == 'OK')
                        {
                            $('#contact_form').slideUp();
                            $('#all_ok').slideDown();
                        }

                        else
                        {
                            Alert.show('Er is een fout opgetreden.');
                        }
                    }

                    catch (e)
                    {
                        Alert.show('Er is een fout opgetreden.');
                    }
                });
            }
        }
    },


    /** -------------------------------------------------------------------------------------------
    * Placement package
    *
    * form                  formulier
    * removeLocation        locatie verwijderen, new deal situatie
    * removePlacement       placement verwijderen, bestaande deal
    *
    */

    placement:
    {

        /**
        * Formulier.
        */

        form: function(id, session, deal_id)
        {

            /**
            * Dialog openen.
            */

            if ($('#placement_form').length == 0)
            {
                $('body').append('<div id="placement_form"></div>');
            }

            $('#placement_form').dialog(
            {
                autoOpen: true,
                title: 'Aanbieding locatie',
                width: 275,
                height: 350,
                modal: true,
                draggable: false,
                resizable: false,
                open: function()
                {

                    /**
                    * Data objectje bakken.
                    *
                    * @type Object
                    */

                    var data =
                    {
                        id: id,
                        session: session,
                        deal_id: deal_id
                    };


                    /**
                    * Data posten naar het formulier.
                    */

                    $.post('/handles/ajax/placement/form.php', data, function(data)
                    {
                        $('#placement_form').html('').html(data);
                    });
                },
                buttons:
                {
                    'Opslaan': function()
                    {

                        /**
                        * Onblur triggeren op city name om NL ID te verkrijgen (als die er nog niet is).
                        */

                        $('#city_name').trigger('onkeyup');


                        /**
                        * Door de onblur moeten we even wachten.
                        */

                        setTimeout(function()
                        {

                            if ($('#city_name').val() == '')
                            {
                                Alert.show('U heeft geen plaats ingevuld.');
                            }

                            else
                            {

                                /**
                                * Geen lat long is gevuld via hidden fields.
                                */

                                var go = true;

                                if (($('#placement_lat').val() == '' && $('#placement_long').val() == '') || ($('#placement_lat').val() == '0.00000000' && $('#placement_long').val() == '0.00000000'))
                                {
                                    go = false;

                                    if ($('#location_address').val() == '')
                                    {
                                        Alert.show('U heeft geen adres ingevuld.');
                                    }

                                    else if ($('#location_zip').val() == '')
                                    {
                                        Alert.show('U heeft geen postcode ingevuld.');
                                    }

                                    else
                                    {

                                        /**
                                        * Data objectje bakken met de locatie.
                                        *
                                        * @type Object
                                        */

                                        var data =
                                        {
                                            location: $('#location_address').val()+' '+$('#location_zip').val()+' '+$('#city_name').val()
                                        };


                                        /**
                                        * Geolocatie ophalen van het adres.
                                        */

                                        $.post('/handles/ajax/get_geolocation.php', data, function(result)
                                        {
                                            try
                                            {
                                                var result = $.parseJSON(result);

                                                if (result.status == 'OK')
                                                {
                                                    $('#placement_lat').val(result.lat);
                                                    $('#placement_long').val(result.lon);
                                                    Sjopper.placement.save();
                                                }

                                                else
                                                {
                                                    Alert.show('Via de opgegeven adres gegevens is geen geo locatie gevonden.');
                                                }
                                            }

                                            catch (e)
                                            {
                                                Alert.show('Er is een fout opgetreden.');
                                            }
                                        });
                                    }
                                }


                                // Geo locatie is ingevuld -> saven maar.

                                else
                                {
                                    Sjopper.placement.save();
                                }
                            }

                        }, 500);
                    }
                }
            });
        },


        /**
        * Map openen.
        *
        */

        map: function()
        {

            if ($('#city_name').val() == '')
            {
                Alert.show('Vul eerst een plaats in.');
            }

            else
            {

                $('#location_address').val('');
                $('#location_zip').val('');


                if ($('#geo_form').length == 0)
                {
                    $('body').append('<div id="geo_form"></div>');
                }

                $('#geo_form').dialog(
                {
                    autoOpen: true,
                    width: 500,
                    height: 400,
                    title: 'Locatie droppen',
                    draggable: false,
                    resizable: false,
                    modal: true,
                    open: function()
                    {

                        /**
                        * Uitleg en map
                        */

                        var html = 'Klik op de kaart om de locatie van de aanbieding te kiezen. <br /> <br /> <div id="map_canvas_drop" style="width: 470px; height: 235px;"></div> <br /> <span id="marker_address"></span><input type="hidden" name="market_lat" id="marker_lat" /> <input type="hidden" name="marker_lon" id="marker_lon" />';
                        $('#geo_form').html('').append(html);


                        /**
                        * Geo ophalen van de city.
                        */

                        $.post('/handles/ajax/get_geolocation.php', { location: $('#city_name').val() }, function(result)
                        {
                            try
                            {

                                var result = $.parseJSON(result);

                                if (result.status == 'OK')
                                {

                                    /**
                                    * Maps inladen.
                                    */

                                    Sjopper.base.loadMaps('map_canvas_drop', result.lat, result.lon, {}, false, true);
                                }

                                else
                                {
                                    Alert.show('Onbekende plaats.');
                                }
                            }

                            catch (e)
                            {
                                Alert.show('Er is een fout opgetreden.');
                            }
                        });
                    },
                    buttons:
                    {
                        'OK': function()
                        {

                            /**
                            * Alleen verder gaan als er een marker is geplaatst.
                            */

                            if ($('#marker_lat').val().length > 0 && $('#marker_lon').val().length > 0)
                            {
                                $('#placement_lat').val($('#marker_lat').val());
                                $('#placement_long').val($('#marker_lon').val());

                                $('#geo_form').dialog('close').remove();
                            }

                            else
                            {
                                Alert.show('Plaats eerst een marker om verder te gaan.');
                            }
                        }
                    }
                });
            }
        },


        /**
        * De placements ophalen van een deal.
        *
        */

        loadPlacements: function(deal_id)
        {
            $.post('/handles/ajax/placement/load.php', { deal_id: deal_id }, function(result)
            {
                $('#location_list').html(result);
            });
        },


        /**
        * Locatie opslaan bij de deal.
        */

        save: function()
        {
            /**
            * Data objectje bakken het formulier.
            */

            var data = $('#placementform').serialize();


            /**
            * Formulier posten naar de save pagina.
            */

            $.post('/handles/ajax/placement/save.php', data, function(result)
            {
                try
                {
                    var result = $.parseJSON(result);

                    if (result.status == 'OK')
                    {

                        // Dialog sluiten.

                        $('#placement_form').dialog('close').remove();


                        // Nieuwe deal situatie.

                        if (result.session == 'true')
                        {
                            Sjopper.newdeal.loadStep(2, 1);
                        }


                        // Wijzigen van een deal.

                        else
                        {
                            Sjopper.placement.loadPlacements($('#deal_id').val());
                        }

                    }

                    else
                    {
                        Alert.show('Er is een fout opgetreden.');
                    }
                }

                catch (e)
                {
                    Alert.show('Er is een fout opgetreden.');
                }
            });
        },


        /**
        * Locatie verwijderen (new deal).
        */

        removeLocation: function(location_id)
        {

            // Data objectje bakken.

            var data =
            {
                deal_id: $('#deal_id').val(),
                location_id: location_id
            };


            // Posten naar de server.

            $.post('/handles/ajax/placement/delete.php', data, function(result)
            {
                try
                {
                    var result = $.parseJSON(result);

                    if (result.status == 'OK')
                    {
                        Sjopper.newdeal.loadStep(2, 1);
                    }

                    else
                    {
                        Alert.show('Er is iets fout gegaan bij het verwijderen van de locatie.');
                    }
                }

                catch (e)
                {
                    Alert.show('Er is iets fout gegaan.');
                }
            });
        }
    },


    // Video player.

    video:
    {

        // Player openen in dialog.

        open: function(type)
        {

            if ($('#video_popup').length == 0)
            {
                $('body').append('<div style="width: 768px; heigth: 432px;" id="video_popup"></div>');
            }

            $('#video_popup').dialog(
            {
                modal: true,
                draggable: false,
                resizable: false,
                width: 768,
                height: 432,
                open: function()
                {

                    // jw player bouwen

                    jwplayer("video_popup").setup(
                    {
                        file: '/videos/'+type+'.mp4',
                        width: 768,
                        height: 432,
                        autoplay: true,
                        modes:
                        [
                            { type: 'html5' },
                            { type: 'flash', src: '/swf/player.swf' }
                        ]
                    });
                },
                close: function()
                {
                    $(this).remove();
                }
            });
        }
    },


    // Actueel pagina.

    actueel:
    {

        // Deals laden.

        loadDeals: function(page)
        {
            $('#deal_list').fadeOut().html('<img src="/images/ajax-loader.gif" />');

            $.get('/handles/ajax/get_deals.php?page='+page, function(result)
            {
                $('#deal_list').html(result);
                $('#deal_list').fadeIn();
            });
        }
    }
};










/**
* Alert object.
*/

var Alert =
{

    /**
    * Showen van de alert.
    *
    * @param mess
    */

    show: function(mess)
    {
        $('body').append('<div style="display: none;" id="ALERT"></div>');

        $('#ALERT').html(mess).dialog(
        {
            autoOpen: true,
            title: 'Bericht',
            modal: true,
            resizable: false,
            buttons:
            {
                'Sluiten': function()
                {
                    $(this).dialog('close');
                    $('#ALERT').remove();
                }
            },
            open: function()
            {
                $('#ALERT').focus();
            }
        });
    }
};
