$(document).ready(function(){
	// Front page news
	var facebook_ajax_wrapper = $('#facebook-ajax-wrapper');
	
	if(facebook_ajax_wrapper.length > 0) {
		facebook_ajax_wrapper.load(template_directory +'/fb.php');	
	}
	
	// News page
	var facebook_content = $('#facebook-content');
	
	if(facebook_content.length > 0) {
		facebook_content.load(template_directory +'/fb.php?method=news');	
	}
	
	// News page (twitter)
	var twitterfeed = $('#twitterfeed');
	
	if(twitterfeed.length > 0) {
		twitterfeed.load(template_directory +'/fb.php?method=twitter');	
	}
	
	//Run Coda slider plugins for products
	$('#coda-slider-1').codaSlider();

	//Tooltip on features
	$('.product-feature img').hover(function(){
		$(this).parent().find('.feature-content').show();
		$(this).parent().find('.feature-content').hover(function(){
			$(this).show();
		}, function(){
			$(this).hide();
		});
	}, function(){
		$(this).parent().find('.feature-content').hide();
	});

	//Slide down extra inputs on reseller form
	$('input#no').bind('click', function(){
		$('.extra-fields').slideDown(300);
	});
	$('input#yes').bind('click', function(){
		$('.extra-fields').slideUp(300);
	});
	
	//Google maps
	var markers = [];
	var boxes = [];
	var num = -1;
	var xml_content = new Array();
	var result = new Array();
	
	if ($("#map-wrapper").length > 0) {
		var latlng = new google.maps.LatLng(46.195042,46.230469);
		var mapOptions = {
			zoom: 3,
			center: latlng,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		};
		var map = new google.maps.Map($("#map")[0], mapOptions);
		get_content();	
		
		$('#search_btn').bind('click', function() {		
			var search_value = $('input#search_location').val();
			if(search_value.length==0) {
			
			}
			else {
				result = do_search(search_value);
				get_locations_search(result);
				result.length = 0;
			}
		})		
		
		$('#search_location').bind('keyup', function() { 	
			var search_value = $('input#search_location').val();
			
			if(search_value.length >= 1) {
				remove_markers();
				result = do_search(search_value);
				
				get_locations_search(result);
				result.length = 0;
			} 
			else if (search_value.length == 0) {
				result.length = 0;
				remove_markers();
				all_locations ();
			}
		});
	}
	

	
function get_content() {
	$.ajax ({
		type: "GET",
		url: template_directory + "/js/data.xml",
		dataType: "xml",
		success: function (xml, status) {
			if(status != "success" || !xml || typeof(xml.error) == "object")
				return;
			
			$(xml).find('marker').each(function(){
				storeObj = new Object();					
				storeObj.name = $(this).attr('name');
      			storeObj.adress = $(this).attr('adress');
      			storeObj.boxadress = $(this).attr('boxadress');
     			storeObj.webbadress = $(this).attr('webbadress');
     			storeObj.webbname = $(this).attr('webbname');
	 			storeObj.city = $(this).attr('city');
	 			storeObj.country = $(this).attr('country');
	 			storeObj.lat = $(this).attr('lat');
	 			storeObj.lng = $(this).attr('lng');
	 			storeObj.id = $(this).attr('id');
	 			xml_content.push(storeObj);
			}); // close each
			all_locations();
		} 
	});
}

function get_locations_search(result) {
	var bounds = new google.maps.LatLngBounds();

	$.each (result, function(key, item){
		var point = create_point(item.lat, item.lng); // Create point
		var html = "<h3 class=\"map-header\">" + item.name + "</h3>" + item.adress + "<br />" + item.boxadress + ", " + item.city + "<br />";
		var marker = create_marker(map, point); // Create marker
		var infobox = create_infobox (html); // Create infobox
	    bindInfoWindow(marker, map, infobox[0], infobox[1]); // Create infowindow
	    var latlng = new google.maps.LatLng(item.lat, item.lng);
		bounds.extend(latlng);
		map.fitBounds(bounds);
	})
}
	
function do_search(search) {
	$.each (xml_content, function(key, item){
		var namn = item.name.toLowerCase();
		var city = item.city.toLowerCase();
		var country = item.country.toLocaleLowerCase();
		var low_search = search.toLowerCase();
		
		if (namn.indexOf(low_search) == 0 || city.indexOf(low_search) == 0 || country.indexOf(low_search) == 0) {
			result.push(item); 
		}	
	})	
	return result;
}

function remove_markers() {
	for(var i = 0; i < markers.length; i++)
	markers[i].setMap(null);
	markers = new Array();
}

function close_boxes() {
	for(var i = 0; i<boxes.length; i++)
	boxes[i].close();
	boxes = new Array();
}

function create_point (lat,lng) {
	var point = new google.maps.LatLng(
	parseFloat(lat), 
	parseFloat(lng));
	return point;
}

function all_locations () {
	var bounds = new google.maps.LatLngBounds();
	$.each (xml_content, function(key, item){
		var point = create_point(item.lat, item.lng); // Create point
		var html = "<h3 class=\"map-header\">" + item.name + "</h3>" + item.adress + "<br />" + item.boxadress + ", " + item.city + "<br />";
		var marker = create_marker(map, point); // Create marker
		var infobox = create_infobox (html); // Create infobox
	    bindInfoWindow(marker, map, infobox[0], infobox[1]); // Create infowindow
	    var latlng = new google.maps.LatLng(item.lat, item.lng);
		bounds.extend(latlng);
		map.fitBounds(bounds);
	})
}

function create_marker (map, point) {
	marker = new google.maps.Marker({
		map: map,
	    position: point
	});
	markers.push(marker);
	return marker;
}

function create_infobox (html) {
	var boxText = document.createElement('div');

	$(boxText).css({
    	marginTop:'8px',
    	background: 'white',
    	padding: '20px'
    });
    
    boxText.innerHTML = html;
    var myOptions = {
         content: boxText,
         disableAutoPan: true,
         maxWidth: 0,
         pixelOffset: new google.maps.Size(-25, 0),
         zIndex: null,
         boxStyle: { 
         	width: "280px"
         },
         closeBoxMargin: "10px 2px 2px 2px",
         closeBoxURL: "/wp-content/themes/tickler/images/close.png",
         infoBoxClearance: new google.maps.Size(1, 1),
         isHidden: false,
         pane: "floatPane",
         enableEventPropagation: false
    };
    var infobox = new InfoBox(myOptions);
    var info = [infobox, boxText];
    return info;
}

function bindInfoWindow(marker, map, infobox, boxText) {
  google.maps.event.addListener(marker, 'click', function() {
     close_boxes();
     infobox.setContent(boxText);                
     infobox.open(map, marker);
     boxes.push(infobox); 
  });
}	
			
});



