function toggleRating(rating) {
	for(var i=1;i<=rating;i++) {
		$('img.image-rating-'+i).attr('src', 'images/star-green.gif');
	}
	
	for(i;i<=5;i++) {
		$('img.image-rating-'+i).attr('src', 'images/star-white.gif');
	}	
}

function setHotspotRating(id, rating, realpost) {		
	$.ajax({
	    url: 'javascript/ajax.php?action=hotspot-rating&id='+id+'&rating='+rating+'&realpost='+realpost,
	    type: 'GET',
	    dataType: 'html',
	    timeout: 0,
	    error: function(XMLHttpRequest, textStatus, errorThrown){
	        alert('Error loading XML document');
	        alert(errorThrown);
	    },
	    success: function(result) {  
	    	if(realpost == 'true')
	    		updateHotspotRating(id);
	    	
	    	$('div.rating-images').html('<img src="images/rating_'+rating+'.gif" alt="'+rating+'" />');
	    	$('div.rating-images').css('cursor','default');
	    	$('input#input-rating').attr('value', rating);	    	
	    }				    
	});	
}

function submitForm(form) {
	var valid = true;
	var params = "";
	
	$('table#'+form+' tr.form').each(function(index) {
		if($('input', this).length == 1) {
			var name = $('input', this).attr("name");
			var value = $('input', this).attr("value");
		}

		if($('textarea', this).length == 1) {
			var name = $('textarea', this).attr("name");
			var value = $('textarea', this).val();
		}

		params = params + "&" + name + "=" + escape(value);
				
		if(value == "" || value == "0" || (value.length < 2 && name != "rating" && name != "category")) {
			$('td.title', this).addClass("not-valid");						
			valid = false;
		} else if (name == "email" || name == "receiver-email") {
			var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
			if(reg.test(value) == false) {
				$('td.title', this).addClass("not-valid");						
				valid = false;
			} else {
				$('td.title', this).removeClass("not-valid");
			}
		} else {
			$('td.title', this).removeClass("not-valid");
		}
	});
	
	params = params.substr(1, params.length);
	
	if(valid) {
		$('table#'+form+' div.button a').text("Bezig met verzenden...");
		$('table#'+form+' div.button a').attr("disabled", "disabled");
		$('table#'+form+' div.button a').addClass("disabled");
		
		$.ajax({
 		    url: 'javascript/ajax.php?'+params,
 		    type: 'GET',
 		    dataType: 'html',
 		    timeout: 0,
 		    error: function(XMLHttpRequest, textStatus, errorThrown){
 		        alert('Error loading XML document');
 		        alert(errorThrown);
 		    },
 		    success: function(result) {			    
				if(form == "form-review") {
					reloadReviews($('input[name=hotspot-id]').attr("value"));
					updateHotspotRating($('input[name=hotspot-id]').attr("value"));
				}
							
				$('table#'+form+' tr.form').css("display", "none");				
				$('table#'+form+' tr.result').css("visibility", "visible");
 		    }				    
 		});
	}
}

function reloadReviews(id) {
	$.ajax({
	    url: 'javascript/ajax.php?action=reload-reviews&id='+id,
	    type: 'GET',
	    dataType: 'html',
	    timeout: 0,
	    error: function(XMLHttpRequest, textStatus, errorThrown){
	        alert('Error loading XML document');
	        alert(errorThrown);
	    },
	    success: function(result){ 
	    	$('div#reviews').html(result);
	    }				    
	});
}

function updateHotspotRating(id) {
	$.ajax({
	    url: 'javascript/ajax.php?action=update-hotspot-rating&id='+id,
	    type: 'GET',
	    dataType: 'html',
	    timeout: 0,
	    error: function(XMLHttpRequest, textStatus, errorThrown){
	        alert('Error loading XML document');
	        alert(errorThrown);
	    },
	    success: function(result) {
	    	var results = result.split("{}");
	    	
	    	$('img.img-rating').attr("src","images/rating_"+results[0]+".gif");
	    	$('img.img-rating').attr("alt",results[0]);
	    	$('div.num-ratings').html("("+results[1]+")");
	    }				    
	});	
}

function rejectHotspotReview(id) {
	$.ajax({
	    url: 'javascript/ajax.php?action=reject-review&review-id='+id,
	    type: 'GET',
	    dataType: 'html',
	    timeout: 0,
	    error: function(XMLHttpRequest, textStatus, errorThrown){
	        alert('Error loading XML document');
	        alert(errorThrown);
	    },
	    success: function(result){
	    	alert('De review is als ongepast gerapporteerd');
	    }				    
	});
}

function selectCategories(checked) {
	$('div#categories input').attr('checked', checked);

	if(checked)
			makeNewMap();
}

function makeNewMap(address) {
	var latlng = new google.maps.LatLng(52, 5);
	var target = document.getElementById('map');
	var addressField = document.getElementById("map-address");
	
	var options = {
	  zoom: 7,
	  center: latlng,
	  mapTypeId: google.maps.MapTypeId.ROADMAP
	}; 
	
	var map = new google.maps.Map(target, options);		
	var infowindow = new google.maps.InfoWindow();
	var bounds = new google.maps.LatLngBounds;
		
	var selectedCategories = "";
	var elms = $("div#categories input:checked");

	for(var i=0;i<elms.length;i++) {
		if(elms[i].name != "select-all")
			selectedCategories = selectedCategories+","+elms[i].value;
	}

	selectedCategories = selectedCategories.substr(1, selectedCategories.length);
	 	
	$.ajax({
	    url: 'javascript/ajax.php?action=map&categories='+selectedCategories,
	    type: 'GET',
	    dataType: 'html',
	    timeout: 0,
	    error: function(XMLHttpRequest, textStatus, errorThrown){
	        alert('Error loading XML document');
	        alert(errorThrown);
	    },
	    success: function(markers){
	    	var xmlobject = parseXMLString(markers);
	    	var items = xmlobject.getElementsByTagName('HOTSPOT');

	    	var address = addressField.value;
	    	if(address.length > 0 && address != "Zoek op je adres") {
			var geocoder = new google.maps.Geocoder();						
 		      	if (geocoder) {
 		        	geocoder.geocode( { 'address': address }, function(results, status) {
 		          		if (status == google.maps.GeocoderStatus.OK) {
 		          			var marker = new google.maps.Marker({
 		          				map: map, 
 		          				position: results[0].geometry.location,
 		          				icon: 'images/markers/default.gif'
 		          			});
 		          			bounds.extend(marker.position);
 		          			map.fitBounds(bounds);
 		          		} else {
 		            		alert("Geocode was not successful for the following reason: " + status);
 		         		}
 		       		});
 		     	}
	    	} 
	    		    					    				    	
	        for (var i = 0; i < items.length; i++) {
	        	var lat = items[i].getElementsByTagName("LATITUDE")[0].firstChild.nodeValue;
				var lon = items[i].getElementsByTagName("LONGITUDE")[0].firstChild.nodeValue;
				var name = items[i].getElementsByTagName("NAME")[0].firstChild.nodeValue;
				var id = items[i].getElementsByTagName("HOTSPOTID")[0].firstChild.nodeValue;	
				var categoryid = items[i].getElementsByTagName("HOTSPOTTYPEID")[0].firstChild.nodeValue;	
				var address = items[i].getElementsByTagName("STREET")[0].firstChild.nodeValue+" "+items[i].getElementsByTagName("HOUSENR")[0].firstChild.nodeValue;
				if(items[i].getElementsByTagName("EXTENSION")[0].firstChild) {
					address = address + items[i].getElementsByTagName("EXTENSION")[0].firstChild.nodeValue;
				}
				
				var position = new google.maps.LatLng(lat, lon);

				bounds.extend(position);
		        
	            var marker = new google.maps.Marker({
	              position: position,
	              map: map,
	              icon: 'images/markers/'+categoryid+'.gif',
	              html: '<strong>'+name+'</strong><br />'+address+'<br /><br /><a href="?p=hotspot&amp;id='+id+'&amp;category=map">Bekijk deze hotspot</a>'
	            });

	            google.maps.event.addListener(marker, 'click', (function(marker, i) {
	              return function() {
	                infowindow.setContent(this.html);
	                infowindow.open(map, marker);
	              }
	            })(marker, i));
			}

	        map.fitBounds(bounds);
	    }			    
	});
}

function getToolMapMarkers() {
	var latlng = new google.maps.LatLng(52, 5);
	var target = document.getElementById('map');
	var addressField = document.getElementById("map-address");
	
	var options = {
	  zoom: 7,
	  center: latlng,
	  mapTypeId: google.maps.MapTypeId.ROADMAP
	}; 
	
	var map = new google.maps.Map(target, options);	
	var infowindow = new google.maps.InfoWindow();
    var bounds = new google.maps.LatLngBounds;
	
    var url = 'javascript/ajax.php?action=tools-map';
		
	if($('input#map-offices').is(':checked'))
		url = url+'&offices=1';
	else
		url = url+'&offices=1';
		
	if($('input#map-dispensers').is(':checked'))
		url = url+'&dispensers=1';
	else
		url = url+'&disensers=0';
	
	$.ajax({
		url: url,
	    type: 'GET',
	    dataType: 'html',
	    timeout: 0,
	    error: function(XMLHttpRequest, textStatus, errorThrown){
	        alert('Error loading XML document');
	        alert(errorThrown);
	    },
	    success: function(markers){	  	   	
	    	var xmlobject = parseXMLString(markers);
	    	var offices = xmlobject.getElementsByTagName('OFFICE');
	    	var dispensers = xmlobject.getElementsByTagName('ATM');

			var address = addressField.value;
			if(address.length > 0 && address != "Zoek op je adres") {
				var geocoder = new google.maps.Geocoder();						
	 		      	if (geocoder) {
	 		        	geocoder.geocode( { 'address': address}, function(results, status) {
	 		          		if (status == google.maps.GeocoderStatus.OK) {
	 		            	var marker = new google.maps.Marker({
	 		                	map: map, 
	 		                	position: results[0].geometry.location,
	 		                	icon: 'images/markers/default.gif'
	 		            	});
	 		            	bounds.extend(marker.position);
	 		            	map.fitBounds(bounds);
	 		          		} else {
	 		            		alert("Geocode was not successful for the following reason: " + status);
	 		         		}
	 		       		});
	 		     	}
			} 	 		    	
	    				
			for (var i = 0; i < offices.length; i++) {
	        	var lat = offices[i].getElementsByTagName("LATITUDE")[0].firstChild.nodeValue;
				var lon = offices[i].getElementsByTagName("LONGITUDE")[0].firstChild.nodeValue;
				var name = offices[i].getElementsByTagName("NAME")[0].firstChild.nodeValue;
				var address = offices[i].getElementsByTagName("ADDRESS")[0].firstChild.nodeValue;
				var position = new google.maps.LatLng(lat, lon);
			
				bounds.extend(position);
		        
	            var marker = new google.maps.Marker({
	              position: position,
	              map: map,
	              icon: 'images/markers/red.gif',
	              html: "<strong>"+name+"</strong><br />"+address+"<br />"
	            });

	            google.maps.event.addListener(marker, 'click', (function(marker, i) {
	              return function() {
	                infowindow.setContent(this.html);
	                infowindow.open(map, marker);
	              }
	            })(marker, i));
			}
	        	        	        
			for (var i = 0; i < dispensers.length; i++) {
	        	var lat = dispensers[i].getElementsByTagName("Lat")[0].firstChild.nodeValue;
				var lon = dispensers[i].getElementsByTagName("Lon")[0].firstChild.nodeValue;
				var name = dispensers[i].getElementsByTagName("Name")[0].firstChild.nodeValue;
				var address = dispensers[i].getElementsByTagName("Address")[0].firstChild.nodeValue;
				var position = new google.maps.LatLng(lat, lon);
			
				bounds.extend(position);
		        
	            var marker = new google.maps.Marker({
	              position: position,
	              map: map,
	              icon: 'images/markers/default.gif',
	              html: '<strong>'+name+'</strong><br />'+address+'<br />'
	            });

	            google.maps.event.addListener(marker, 'click', (function(marker, i) {
	              return function() {
	                infowindow.setContent(this.html);
	                infowindow.open(map, marker);
	              }
	            })(marker, i));
			}
	       
	        map.fitBounds(bounds);
	    }			    
	});
}

function toggleOverlayForm(action, form, id, category, type) {
	if(action == "close") {
		$('div#overlay').css("display", "none");
		$('div#overlay-form').css("display", "none");
		$('div#form').css("display", "none");
	} else if(action == "open") {
		var url = 'javascript/ajax.php?action=overlay-form&form='+form;
		
		if(id)
			url = url+'&id='+id;
		
		if(category)
			url = url+'&category='+category;
		
		if(action)
			url = url+'&type='+type;
			
		$.ajax({
		    url: url,
		    type: 'GET',
		    dataType: 'html',
		    timeout: 0,
		    error: function(XMLHttpRequest, textStatus, errorThrown){
		        alert('Error loading XML document');
		        alert(errorThrown);
		    },
		    success: function(result){ 		    	
		    	$('div#form').html(result);
		    	
		    	$('div#overlay').css("display", "block");
				$('div#overlay-form').css("display", "block");
				$('div#form').css("display", "block");
		    }				    
		});
	}	
}

function parseXMLString(text) {
	if (window.DOMParser) {
		parser=new DOMParser();
		xmlDoc = parser.parseFromString(text,"text/xml");
	} else {
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		xmlDoc.loadXML(text); 
	}
	
	return xmlDoc;
}

function toggleCategoriesMore() {
	$('div.categories-hidden').css('display', 'block');	
	$('img.categories-more').css('display','none');
	$('div#footer').css('bottom','0');
}

function toggleSocialMedia(url) {
    window.open(url,"socialmedia", "width=600,height=550,status=no,resizable=no,scrollbars=y");
}

function toggleOverlayImage(url) {
	if(url != '') {	
		$('div#overlay-image img').attr("src", url);		
		$('div#overlay-image img').load(function() {
			$(this).removeAttr("width")
	           .removeAttr("height")
	           .css({ width: "", height: "" }); // Remove css dimensions as well

			var margin = (this.width * -0.5);
			$('div#overlay-image').css("margin-left", margin);
			$('div#overlay').toggle();
			$('div#overlay-image').toggle();
		});
	} else {
		$('div#overlay').toggle();
		$('div#overlay-image').toggle();
	}	
}
