
/*******************************************************************************
 * smartresize
 ******************************************************************************/


//Setting up smart resize (debounce)
(function($,sr){
    
    // debouncing function from John Hann
    // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
    var debounce = function (func, threshold, execAsap) {
        var timeout;
   
        return function debounced () {
            var obj = this, args = arguments;
            function delayed () {
                if (!execAsap)
                    func.apply(obj, args);
                timeout = null; 
            };
   
            if (timeout)
                clearTimeout(timeout);
            else if (execAsap)
                func.apply(obj, args);
   
            timeout = setTimeout(delayed, threshold || 500); 
        };
    }
	// smartresize 
	jQuery.fn[sr] = function(fn){  return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };
 
})(jQuery,'smartresize');


$(window).smartresize(function() {  
    //Remove jqzoom
    $(document).ready(function() {
        
        init();
		
        $($.jqzoom).remove();
        $('#image_box #image').html(imageHtml);
        
        initializeZoom();
		
        //$('#win-width').text($(window).width() + 'px');
    });
})


/*******************************************************************************
 * trigger events
 *******************************************************************************/

$(document).ready(function() {
    
    
    if($('#image').length > 0) {
        initializeZoom();
    }
    
    // initialice evrything like slider position of the teaser
    init();
    
    // beautify form elemente
    
    $(  '#kontakt input:text,'
      + '#kontakt input:radio,'
      + '#kontakt input:checkbox,'
      + '#kontakt select, '
      + '#kontakt textarea, '
      + 'select').uniform();
    
    $('form#sortbox select').change(function() {
        $('form#sortbox').submit();    
    })
    
    $('#tabs-nav li').click(function() {
        selectCycle(this);
    })
    
    //$('#content_wrap').prepend('<p id="win-width">' + $(window).width() + 'px</p>');
    
    /*******************************************************************************
     * Merkzettel speichern einblenden
     ******************************************************************************/
    
	$('#btn_save_merkzettel').click(function() {
		$('#save_merkzettel').animate({
				height: 'toggle',
				opacity: 'toggle'
			},
			1000,
			'linear'
		);
	})   
    
    /*******************************************************************************
     * Scrollen der Artikelvorschau Bilder und Anzeige der Vorschau Bilder
     ******************************************************************************/
    
    var scrolled = 0;
    var w = $('.images').width();
    var imagewidth = $('.images a').outerWidth();
    var step = 2*imagewidth;
    var l = '-=' + step;
    
    $('a[href=left]').click(function() {
        
        scrolled += step;
        
        if(scrolled > w) {
            l = 0;
            scrolled = 0;
        } else {
            l = '-='+step;
        }
        
        $('.images').animate(
            {left: l},
            800
        );
        
        return false;
    })
    
    $('a[href=right]').click(function() {
        
        scrolled -= step;
        
        if(scrolled < 0 || scrolled > w) {
            duration = parseInt(w/step);
            l = '-=' + (duration*step);
            scrolled = (duration*step);
        } else {
            l = '+='+step;
        }
        
        $('.images').animate(
            {left: l},
            800
        );
        
        
        return false;    
    })
    
    $('a', '#preview_images').click(function() {
        changeImage(this);
        return false;
    })
    
    $('.print').click(function() {
        window.print();
        return false;
    })
    
    //$('a', '#preview_images').mouseover(function() {
    //    changeImage(this);
    //    return false;
    //})
        
    
})

/*******************************************************************************
 * /end trigger events
 ******************************************************************************/

/*******************************************************************************
 *  Tauscht ein  Bild in der Detailseite aus
 ******************************************************************************/

var detachedAnchor = null;
var detachedImg = null;

function changeImage(elem) {
    
    zoom = $(elem).attr('rel');
    img = elem;
    
    detachedImg = $('#image img').attr('src');
    detachedAnchor = $('#image a').attr('href');
    
    $('#image img').attr('src', img);
    $('#image a').attr('href', zoom);
    
    initializeZoom();
}

function resetImage() {
    $('#image img').attr('src', detachedImg);
    $('#image a').attr('href', detachedAnchor);
    
    initializeZoom();
}

/***************************************************************************
* Google Maps Code
**************************************************************************/

var map;
var marker;
var infowindow;
var target;
var pan = false;
var lat = 50.982641;
var lng = 11.02272;

var mapMarker = new Array();
mapMarker['jewelry'] = wwwroot + '/img/jewelry.png';
mapMarker['macaurum'] = wwwroot + '/img/map_marker_macaurum.png';

function initializeMap(t) {
    target = t ? t : '#map';
    
    try {
         var myLatLng = new google.maps.LatLng(lat, lng);
         
         var myOptions = {
              zoom: 6
             ,center: myLatLng
             ,mapTypeId: google.maps.MapTypeId.ROADMAP
             ,mapTypeControl: true
             ,navigationControl: true
             ,navigationControlOptions: {
               style: google.maps.NavigationControlStyle.ZOOM_PAN
             }
         };
                                 
         map = new google.maps.Map(document.getElementById(target.substring(1)), myOptions);
         fitToBounds();
    }
    catch(e) {
        $(target).empty();
        $(target).append('<p class="error">Für die Darstellung der Karte benötigen Sie eine Verbindung zum Internet!</p>');
        $(target).append('<p class="error">Bitte überprüfen Sie Ihre Internetverbindung.</p>');
    }
}

function fitToBounds() {
    var southWest = new google.maps.LatLng(47.323056,5.041944); // dijon
    var northEast = new google.maps.LatLng(55.105556,14.702778); // roenoe / bornholm
    var bounds = new google.maps.LatLngBounds(southWest,northEast);
    
    map.panToBounds(bounds);
}

function setZoom(zoom) {
    zoom = !zoom ? 6 : zoom;
    map.setZoom();
}

function searchLocation(txtAddress, htmlAddress, zoom, infowindowShow) {
   
    try {
        var geocoder = new google.maps.Geocoder();
        
        if(!zoom) zoom = 6;
        
        geocoder.geocode({address: txtAddress}, function(results, status) {
            
            if (status == google.maps.GeocoderStatus.OK) {                
               
                if(pan == false) {
                    map.setCenter(results[0].geometry.location);
                    map.setZoom(zoom);
                }
                
                var marker = new google.maps.Marker();
                var image = new google.maps.MarkerImage(mapMarker['macaurum']);
    
                marker.setIcon(image);
                marker.setOptions({
                    position: results[0].geometry.location, 
                    map: map
                });
                
                if(htmlAddress != '') {
                    var infowindow = new google.maps.InfoWindow();
                    
                    google.maps.event.addListener(marker, 'click', function() {
                      infowindow.setContent(htmlAddress);
                      infowindow.open(map, marker);
                      //var ib = new InfoBox(myOptions);                
                      //ib.open(map, marker);
                    });
                    
                    if(infowindowShow && infowindowShow == true) {
                      infowindow.setContent(htmlAddress);
                      infowindow.open(map, marker);
                      infowindow.setPosition(results[0].geometry.location);
                      
                      //var ib = new InfoBox(myOptions);                
                      //ib.open(map, marker);
                    }
                }
            }
            else {
                $('#right').append(status + '<br /><br />' + txtAddress);
            }
        });
    }
    catch(e) {
        $('#map').empty();
        $('#map').append('<p class="error">Für die Darstellung der Karte benötigen Sie eine Verbindung zum Internet!</p>');
        $('#map').append('<p class="error">Bitte überprüfen Sie Ihre Internetverbindung.</p>');
    }
}


/***************************************************************************
 * Image Zoom Options
 **************************************************************************/

var imageHtml = false;

function initializeZoom() {
    
    
    //alert($('#image_box img').width());
    
    if(imageHtml == false) {
        imageHtml = $('#image_box #image').html();
    }
	
    if($(window).width() > 980) {
        
        var zoomOptions =
        {
            zoomWidth: 340,
            zoomHeight: 300,
            zoomType: 'standard',
            lens:true,
            preloadImages: true,
            position : 'right',
            yOffset : 0,
            xOffset : 30,
            title : false
        }
    }
    else {
        var zoomOptions =
        {
            zoomType: 'innerzoom',
            preloadImages: false,
            alwaysOn:false, 
            title : false
        }
    }
    
    $(".jqzoom").jqzoom(zoomOptions);
}


/**
 * Cycling Funktion für den Slider der Startseite
 */
    
function init() {
    
    // entferne alle li
    $('#tabs-nav li').remove();
	
    // initialisiere den Slider abhänging vom Bildschirm
	if($('#slides').length > 0) {
		/**
		if($(document).width() > 650) {
			
			if($('#slides')) {    
				$('#slides').cycle({
					fx: 'fade',
					speed: 4000,
					pager: '#tabs-nav',
					fit: true,
					width: 380,
					height: 260,
					preloadImages: true,
					// callback fn that creates a pager anchor 
					pagerAnchorBuilder: function(idx, slide) {
						caption = $('img', slide).attr('alt');
						return '<li><a href="#">' + caption + '</a></li>';
					}
				});
			}
			
		} else {
			
			if($('#slides')) {
				
				$('#slides').cycle({
					fx: 'fade',
					speed: 4000,
					pager: '#tabs-nav',
					fit: true,
					width: 380,
					height: 260,
					preloadImages: true,
					// callback fn that creates pager anchor 
					pagerAnchorBuilder: function(idx, slide) {
						return '<li><a href="#">' + (idx+1) + '</a></li>';
					}
				});
			}		
		}
		*/
		if($('#slides')) {
				
			$('#slides').cycle({
				fx: 'fade',
				speed: 4000,
				pager: '#tabs-nav',
				fit: true,
				width: 380,
				height: 260,
				preloadImages: true,
				// callback fn that creates pager anchor 
				pagerAnchorBuilder: function(idx, slide) {
					return '<li><a href="#">' + (idx+1) + '</a></li>';
				}
			});
		}	
	}
	
    // Der Kontakt Teaser 
    teaser = $('#kontakt_teaser').detach();
    
    if($(document).width() <= 820) {
        if(teaser) {
            $('#content_2_column').after(teaser);
            $('#kontakt_teaser').css('display', 'block');
        }
    }
    else {
        if(teaser) {
            $('#content_2_column').before(teaser);
            $('#kontakt_teaser').css('display', 'block');
        }
    }
}
