$(document).ready(function() {

    // traverse all mapPlayers on current page
    $('.mapPlayer').each(function(i) {

        // get player sources via id from json
        conf = $(this).attr('id');
        conf = eval(conf);
        src = conf['playerSources'];

        // load sources if we have sources
        if (src) {
            overlay = $('.player_images', $(this));
            jQuery.each(src,
                    function(index, valueOfElement) {
                        overlay.append(valueOfElement);
                    });
                }

        });
    
    
        /**
	 * prefetch objects via jQuery direct access
	 */

	 function prefetch(tar){

        	 links = $(tar+' ul.player_list li');
        	 linksActive = $(tar+' ul.player_list li.active');
        	 thumbs = $('li', tar+' ul.player_thumbs');
        	 images = $('div', tar+'  div.player_images');
	}
	prefetch ('#mapPlayerHome');
	
	/**
	 * define rollover funtion on singles
	 */
	var lastOver = '';
	function overIt(i) {
		if (lastOver) {
			clearIt(lastOver)
		}
		lastOver = i + ''; // +'' is to convert als int 0 to string and not
		// be ment as false
		links.eq(i).addClass('over');
		thumbs.css('opacity',0.5);
		thumbs.eq(i).addClass('over').css('opacity',1);
		images.eq(i).addClass('over');
		stadtteilOnMap[i].addClass('over');
		immoOnMap[i].addClass('over');
		//
		playerPosition = i +'';
	}
	/**
	 * define clear function for singles
	 */
	function clearIt(i) {
		links.eq(i).removeClass('over');
		thumbs.eq(i).removeClass('over');
		images.eq(i).removeClass('over');
		stadtteilOnMap[i].removeClass('over');
		immoOnMap[i].removeClass('over');
	}

	/**
	 * prefetch additional objects via traverse
	 */
	 function prefetchAdd(tar){
        	immoOnMap = new Array;
        	stadtteilOnMap = new Array;
        	sel = '';
        	indexOfTheLastImage ='';
        	indexOfActive ='';
        	links.each( function(i) {
        		href = $(this).children('a').attr('href');
        		sel = $(tar+" ul.player_map a[href='" + href + "']");
        		immoOnMap[i] = $(sel).parent();
        		/*
        		 * attach over function on immos on map during this traverse
        		 */
        		$(sel).parent().mouseover( function() {
        			overIt(i);
        		})
        		stadtteilOnMap[i] = $(sel).parent().parent().parent();
        		indexOfTheLastImage = i;
        		/**
        		* remember active if active
        		*/
        		if ($(this).hasClass('active')){
        			indexOfActive = i + '';
        		}
		
        	})
        }
        prefetchAdd ('#mapPlayerHome');
	/**
	 * adjust margin of immogruppe
	 */
	function marginAdj(){
	        var wmap = $('#mapPlayerHome ul.player_map').width();
        	var wmap_l = $('#mapPlayerHome ul.player_map').offset();
        	wmap_l = wmap_l.left;
        	var w = '';
        	var l = '';
        	var delta = '';
        	$('.immobilienGruppe').each( function(i) {
        		w = $(this).width();
        		l = $(this).parent().offset();// ('left');
        			l = l.left - wmap_l;
        			delta = wmap - (l + w);
        			if (delta < 0) {
        				$(this).css('margin-left', delta);
        				$(this).prev().css('margin-left', delta);
        			}
        		//console.info(w);
                });
        }

	/**
	 * attach rollover function on restliche singles
	 */
	
	links.each( function(i) {
		$(this).mouseover( function() {
			overIt(i);
		}).mouseout( function() {
			if(indexOfActive){
				overIt(indexOfActive);
			}
		});
	});
	thumbs.each( function(i) {
		$(this).mouseover( function() {
			overIt(i);
		}).mouseout( function() {
			if(indexOfActive){
				overIt(indexOfActive);
			}
		});
	});
	
	
	
	
	
	
	
	/**
	 * attach over on stadtteil
	 */
	$('#mapPlayerHome ul.player_map li.stadtteil').mouseenter( function() {
		if (lastOver)
			stadtteilOnMap[lastOver].removeClass('over'); // store
		$(this).addClass('open');
	}).mouseleave( function() {
		if (lastOver)
			stadtteilOnMap[lastOver].addClass('over'); // restore
		$(this).removeClass('open');
		if(indexOfActive){
			overIt(indexOfActive);
		}
	});
	/**
	 * attach over and off on map
	 */
	$('#mapPlayerHome ul.player_map').mouseenter( function() {
		$(this).addClass('over');
	}).mouseleave( function() {
		$(this).removeClass('over');
	});
	$('#mapPlayerHome').mouseenter( function() {
		window.clearTimeout(timer);
	}).mouseleave( function() {
		autoplay(playerPosition);
	});
	//overIt(2);
	/**
	* autoplay
	*/
	/*var content = '<div id="autoplayCtrl"><div class="indi"></div><span>STOP</span></div>';
	$('#mapPlayer').append(content);
	$('#autoplayCtrl .indi').hide().fadeTo('slow', 0.5)*/
	var playerPosition =0+'';
	
	// do play in loop
	var timer=null;
	function autoplay(playerPosition) {
		// if (tfMapPlayerAutoplay == true){
		if (conf['autoplay'] == 'true'){	
			
			
			
		timer = window.setTimeout( function() {
			
			playerPosition++;
			curPos = playerPosition;
			if (playerPosition > indexOfTheLastImage) playerPosition = 0;
			overIt(playerPosition);	
			window.clearTimeout(timer);
			timer = null;
			autoplay(playerPosition);
			}, 5000);
		}
	}
	
	marginAdj();
	
        if (conf['selectFirst'] == 'true'){     
            overIt(playerPosition);

       }    
        // 
         if (conf['autoplay'] == 'true'){
              autoplay(playerPosition);
         }
	
        // $('ul#map_map').mouseenter( function() {
        //      $(this).addClass('over');
        // }).mouseleave( function() {
        //      $(this).removeClass('over');
        // });
});

