$(document).ready(function(){
  
    $('.product_variant input[type="text"]').focus(function(){
        if($(this).val() == 0){
            $(this).val('');
        }
    });
  
    $('.product_variant input[type="text"]').blur(function(){
        if($(this).val() == ''){
            $(this).val(0);
        }
    });

    if($('#homeslideshow').length > 0){
        $('#homeslideshow').cycle({
            fx: 'fade',
            speed: 1000,
            timeout: 1000		
        });
    }
	
    backgroundResize();
  
    $('#flip').jcoverflip();
  
    $('area.maparea').hover(
        function(){
            $('#storelocator').attr('src', '/images/store-locator/'+$(this).attr('data-map')+'.png')
        },
        function(){
            $('#storelocator').attr('src', '/images/store-locator/base_map.png')    
        }
        );
  
    var to;
    
    $('form.maps_form input[type="text"]').keypress(function(e)
    {   
        clearTimeout(to);
        code=(e.keyCode ? e.keyCode : e.which);
        if(code == 13){
            to = setTimeout(function(){
                $('form.maps_form').submit();
            }, 300);
            return false;
        }
    });  
  
    $('form.maps_form').submit(function(e){
        e.preventDefault();
      
        formdata = $(this).serialize();
      
        $.post(   'includes/ajax.locate_dealers.php' 
            ,formdata
            ,function(data){
                if(data.errormessage != null){
                    geef_melding(data.errormessage);
                }else{
                    $('#maps_form').animate({
                        width: 0
                    }, 300);
                    $('#maps').animate({
                        width: 480
                    },300, function(){
                        google.maps.event.trigger(map, "resize");
                        
                        for( var $point in  data){
                            addDealer(data[$point]);
                        }
                            
                        setToggleEvents();
                        
                        //Alle markers toevoegen aan cluster-systeem. 
                        markerCluster = new MarkerClusterer(map, markers);
                    });
                        
                    $('#maps_result').animate({
                        width: 250
                    }, 300);
                }
            }
            ,'json'
            );
    })
  
    $('#results_back').click(function(e){
        e.preventDefault();
        clearAllMarkers();
        
        count = 0;
        
        bounds = new google.maps.LatLngBounds()
        
        $('#maps_result div.dealer_block').remove();
    
        $('#maps_form').animate({
            width: 390
        }, 300);
        $('#maps').animate({
            width: 730
        },300, function(){
                        google.maps.event.trigger(map, "resize");
                        markerCluster.clearMarkers();
                    });
        $('#maps_result').animate({
            width: 0
        }, 300);
    
    });
  
});

$(window).resize(function(){
    backgroundResize();
    overviewResize();
});

$(window).load(function(){
    backgroundResize();
});

function setToggleEvents(){
    $('#maps_result div.dealer_block').toggle(
        function(){
            $('#maps_result div.dealer_block').css({
                height: 20,
                backgroundColor: '#9c9d9f'
            }).find('.toggle').html('');
            
            $(this).animate({
                height: 100,
                backgroundColor: '#4daaef'
            },300);

            map.setZoom(16);
            map.panTo( new google.maps.LatLng($(this).data('lat'), $(this).data('lng')));

            $(this).find('.toggle').html('&lt;&lt; close');
        },
        function(){
            $(this).animate({
                height: 20,
                backgroundColor: '#9c9d9f'
            },300);
            map.fitBounds(bounds);
            $(this).find('.toggle').html('');
        }
        );
}

function clearAllMarkers(){
    for(var m in markers){
        markers[m].setMap(null);
    }
    markers = new Array();
}

function superZoom(url){
	
    $('#lightbox .img').load(function() {
        setLightboxSize(function(){
            $('#lightbox').fadeIn();
        });
    });
    if($('#lightbox .img').attr('src') == url) {
        setLightboxSize(function(){
            $('#lightbox').fadeIn();
        });
    } else {
        $('#lightbox .img').attr('src', url);
    }
    $('#lightbox .img').click(function() {
        $('#lightbox').fadeOut();
    });
	
}


function setLightboxSize($function){
    newWidth 	= $(window).width();
    newHeight 	= $(window).height();
	
    $('#lightbox').width(newWidth);
    $('#lightbox').height(newHeight);
    $('#lightbox').find('img').width(newWidth);
	
    $function();
}

//Functie om een meldingsdoos te geven
function geef_melding(melding){
    hoogte = $(window).height();	
    breedte = $(window).width(); 
    afstand_links = Math.floor((breedte-($("#meldingbox").width()))/2,0);
    afstand_boven = Math.floor((hoogte-($("#meldingbox").height()))/2,0);
    $("#meldingbox").css({
        "left":afstand_links
    }); 
    $("#meldingbox").css({
        "top":afstand_boven
    }); 
    $("#meldingbox_inhoud").html(melding);
    $("#meldingbox").fadeIn(500).delay(1200).fadeOut(500);
}

	
function preloadImages() {
    for(var i = 0; i < arguments.length; i++) {
        var oImg = new Image();
        oImg.src = arguments[i];
    }
}
function toggleMultipleFocus() {
    for(var i = 0; i < arguments.length; i++) {
        toggleFocus(arguments[i]);
    }
}
function toggleFocus(id) {
    var val = $(id).val();
    $(id).focus(function() {
        if($(this).val() == val) {
            $(this).val('');
        }
    }).blur(function() {
        if($(this).val() == '') {
            $(this).val(val);
        }
    });
}

function overviewResize() { 
    if($('#lightbox img').attr('src') != ''){
        var oImg = new Image();
        oImg.src = $('#lightbox img').attr('src');
        var orgW = oImg.width;
        var orgH = oImg.height;
        var h = $(window).height();
        var w = $(window).width();
		
        $('#lightbox').css({
            width: w,
            height: h 
        });
		
        var ratioW = w / orgW;
        var ratioH = h / orgH;
        if(ratioW > ratioH){ 
            $('#lightbox img').css({
                'height':(w * orgH / orgW), 
                'width':w
            }); 
        } else { 
            $('#lightbox img').css({
                'height':h, 
                'width':(h * orgW / orgH)
            });	
        }
		
    }
}

function backgroundResize() {
    if($('#bg-img').length > 0) {
        var oImg = new Image();
        oImg.src = $('#bg-img').attr('src');
        $('#bg-img').ready(function (e) {
            var orgW = oImg.width;
            var orgH = oImg.height;
            if(orgW != 0 && orgH != 0) {
                var h = $(window).height();
                var w = $(window).width();
                var ratioW = w / orgW;
                var ratioH = h / orgH;
                if(ratioW > ratioH) {
                    $('#bg-img').css({
                        'height':(w * orgH / orgW), 
                        'width':w
                    });
                } else {
                    $('#bg-img').css({
                        'height':h, 
                        'width':(h * orgW / orgH)
                    });
                }
                $('#bg-holder').css({
                    'display':'block'
                });
            }
        });
        setTimeout(function() {
            $('#bg-holder').css({
                'display':'block'
            });
        }, 3000);
    }
}
var map;
var bounds;
var infowindow;
var clientLocationFound = false;
var markers = new Array();
var markerCluster;
var count = 0;


function doSellingPointsMap(IPlat, IPlng, global_zoom) {
   
    if(!global_zoom){
        global_zoom = 8;
    }
    if(IPlat == 0){
        IPlat = 50.84958;
    }
    if(IPlng == 0){
        IPlng = 5.70522;
    }

    var point = new google.maps.LatLng(IPlat, IPlng);
    var myOptions = {
        zoom:global_zoom, 
        panControl: false,
        zoomControl: true,
        mapTypeControl: false,
        scaleControl: false,
        streetViewControl: false,
        overviewMapControl: false, 
        center:point,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
   
    bounds = new google.maps.LatLngBounds();
    map = new google.maps.Map(document.getElementById("maps"), myOptions);
 
    infowindow = new google.maps.InfoWindow();
}


function addDealer(obj) {
    
    count ++;
    
    lat = obj.lat;
    lng = obj.lng;
    title = obj.Naam;
  
    var latlng = new google.maps.LatLng(lat, lng);
    bounds.extend(latlng);
    map.fitBounds(bounds);
     
    var marker_image = new google.maps.MarkerImage('images/store-locator/marker.png',
        new google.maps.Size(33, 46),
        new google.maps.Point(0,0),
        new google.maps.Point(14, 40));
     
    var marker = new google.maps.Marker({
        position:latlng, 
        map:map, 
        title:title, 
        icon: marker_image, 
        animation: google.maps.Animation.DROP
    });
    var el = '#dealerblock_'+count;

    google.maps.event.addListener(marker, 'click', function() {
        $(el).trigger('click');
    });
    
    markers.push(marker);
  
    dealer_html = '<div class="dealer_block" id="dealerblock_'+count+'" data-lat="'+lat+'" data-lng="'+lng+'"> <a href="#openclose" class="toggle"></a>'
    + '<h3>'+obj.Naam.toLowerCase()+'</h3>'
    + '<span>'+(Math.round(obj.distance*10)/10)+' km</span>'
    + obj.Adres+'<br/>'
    + obj.Postcode+' '+obj.Plaats+ '<br/>'
    + (typeof obj.Tel != 'undefined' && obj.Tel != '' ? 'Phone: '+obj.Tel+'<br/>' : '')
    + (typeof obj.Fax != 'undefined' && obj.Fax != '' ? 'Fax: '+obj.Fax+'<br/>' : '')
    + (typeof obj.Website != 'undefined' && obj.Website != '' ? '<a href="'+obj.Website+'" target="_blank">visit website &gt;</a>' : '')
    + '</div>';
  
    $('#results_back').before(dealer_html);  
  
}

function showWallpaper(url, title, obj) {
    if(url) {
        if(title) {
            $('#shown').html('<small>Shown is</small> ' + title);
        }
        if(obj) {
            obj = obj.split(', ');
            for(var i in obj) {
                var j = obj[i].split(':');
                $('#downloads').append($('<a href="' + j[1] + '" target="_blank">' + j[0] + '</a>'));
            }
        }
        $('#blocker .img').load(function() {
            $('#blocker').fadeIn();
        });
        if($('#blocker .img').attr('src') == url) {
            $('#blocker').fadeIn();
        } else {
            $('#blocker .img').attr('src', url);
        }
        $('#blocker .img').click(function() {
            $('#shown').html('');
            $('#downloads').html('');
            $('#blocker').fadeOut();
        });
    }
}

function showBrochure(url) {
    $('#downloads').append($('<a href="' + url + '" target="_blank" style="margin:265px 0 0 0;" id="downloadlinkmoetweg">download</a>'));
    $('#downloadlinkmoetweg').click(function() {
        $('#shown').html('');
        $('#downloads').html('');
        $('#blocker').fadeOut();
    });
    $('#blocker').fadeIn();
}
