function IsDefined(myVar) {
	var undefined;
	if (myVar != undefined) {
		return true;
	} else {
		return false;
	}
}

/**
* Adds an event handler to an element
*
* This method automatically decides the proper way to attach an event handler based on the browser's Javascript implementation
* @link http://www.quirksmode.org/js/events_order.html
* @param element target element
* @param eventType string event to listen for (example: 'click')
* @param function function to call when event occurs
* @param bool capture events (default: false)
*/
function addEventHandler(element, eventType, func, useCapture) {
  if (element){
     if (element.addEventListener) {
        element.addEventListener(eventType, func, useCapture);
        return true;
     } else if (element.attachEvent) {
        var r = element.attachEvent('on' + eventType, func);
        return r;
     } else {
        element['on' + eventType] = func;
     }
  }
}

/* USAGE EXAMPLE
addEventHandler(window, 'load', function(e){

});
*/


function emailCheck (obj,nomessage) {
	emailObj=obj;
	emailStr = emailObj.value;
	if(emailStr == "") {
		if (!nomessage) {  alert ( "U heeft geen email adres ingevuld." ); }
		    return false;
		}
		var checkTLD=0;
		var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
		var emailPat=/^(.+)@(.+)$/;
		var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
		var validChars="\[^\\s" + specialChars + "\]";
		var quotedUser="(\"[^\"]*\")";
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
		var atom=validChars + '+';
		var word="(" + atom + "|" + quotedUser + ")";
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
		var matchArray=emailStr.match(emailPat);
		if (matchArray==null) {
			if (!nomessage) {alert("Het ingevulde email adres is geen geldig email adres."); }
				return false;
		}
		var user=matchArray[1];
		var domain=matchArray[2];
		for (i=0; i<user.length; i++) {
			if (user.charCodeAt(i)>127) {
			if (!nomessage) {alert("Het emailadres bevat ongeldige tekens voor de @."); }
				return false;
			}
		}
		for (i=0; i<domain.length; i++) {
			if (domain.charCodeAt(i)>127) {
				if (!nomessage) {alert("Het emailadres bevat ongeldige tekens na de @."); }
				return false;
			}
		}
		if (user.match(userPat)==null) {
			if (!nomessage) {alert("Het ingevulde email adres is geen geldig email adres."); }
			return false;
		}
		var atomPat=new RegExp("^" + atom + "$");
		var domArr=domain.split(".");
		var len=domArr.length;
		for (i=0;i<len;i++) {
			if (domArr[i].search(atomPat)==-1) {
				if (!nomessage) {alert("Het ingevulde email adres is geen geldig email adres."); }
				return false;
			}
		}
		if (checkTLD && domArr[domArr.length-1].length!=2 &&
		domArr[domArr.length-1].search(knownDomsPat)==-1) {
		if (!nomessage) {alert("Het ingevulde email adres is geen geldig email adres."); }
			return false;
		}
		if (len<2) {
			if (!nomessage) {alert("Het ingevulde email adres is geen geldig email adres."); }
			return false;
		}
	return true
}

/**
*	jQuery version of the IE6 fix for :hover
*/
(function($){
    $.fn.nbHover = function(){
    	return this.each(function(){
		    var $e = $(this);
		    $e.hover(
				function(){
					$(this).addClass('sfhover');
				},
				function(){
					$(this).removeClass('sfhover');
				}
			);
		});
    };
})(jQuery);

/* init hover */
$(document).ready(function(){
	$('.nav li').nbHover();
});


/*** Google Maps ***/
var directionDisplay;
var directionsService;
var map;
var sv;
var geocoder;
var panorama;
var rendered = false;
var streetview; /* display streetview or google maps */

function codeAddress(address, markerImage) {
	if (geocoder) {
		geocoder.geocode( { 'address': address}, function(results, status) {
	        if (status == google.maps.GeocoderStatus.OK) {
	        	if(markerImage == 'marker-nedbase'){
	        		var marker = new google.maps.Marker({
						map: map,
						position: results[0].geometry.location,
						icon: new google.maps.MarkerImage(
							"/image/" + markerImage+".gif",
							new google.maps.Size(464, 81),
							new google.maps.Point(0, 0),
							new google.maps.Point(0, 44)
						)
		          	});
	        	}else{
					var marker = new google.maps.Marker({
						map: map,
						position: results[0].geometry.location,
						icon: new google.maps.MarkerImage(
							"/image/" + markerImage+".png",
							new google.maps.Size(27, 27),
							new google.maps.Point(0, 0),
							new google.maps.Point(5, 5)
						)
		          	});
		        }
		        map.addMarker(marker);
	        }
      	});
	}
}

function processSVData(data, status) {
  if (status == google.maps.StreetViewStatus.OK) {
      var markerPanoID = data.location.pano;
      // Set the Pano to use the passed panoID
      panorama.setPano(markerPanoID);
      panorama.setPov({
        heading: 347,
        pitch: 3.75,
        zoom: 1
      });
      panorama.setVisible(true);
  }
}

function initGoogleMap(htmlId) {
	geocoder = new google.maps.Geocoder();
	if(IsDefined(streetview)){
		var latlng = new google.maps.LatLng(51.496889,3.628438);
		sv = new google.maps.StreetViewService();
		panorama = new google.maps.StreetViewPanorama(document.getElementById(htmlId));
		if (geocoder) {
			geocoder.geocode( { 'address': 'Molenwater 79, 4331SE, MIDDELBURG, NEDERLAND'}, function(results, status) {
		        if (status == google.maps.GeocoderStatus.OK) {
					sv.getPanoramaByLocation(results[0].geometry.location, 50, processSVData);
				}});
		}
	}else if(!rendered){
		renderOptions = {
			polylineOptions : {
				strokeColor: "#FFF",
				strokeOpacity: 0.9,
				strokeWeight: 7
			},
			suppressMarkers : true,
			draggable:true
		};
		directionsService = new google.maps.DirectionsService();
		directionsDisplay = new google.maps.DirectionsRenderer(renderOptions);

		var latlng = new google.maps.LatLng(51.500889,3.618438);
		var myOptions = {
			zoom: 14,
			center: latlng,
			mapTypeId: google.maps.MapTypeId.SATELLITE,
			scrollwheel: false,
			mapTypeControl: false
		};
		map = new google.maps.Map(document.getElementById(htmlId), myOptions);

		google.maps.Map.prototype.markers = new Array();

		google.maps.Map.prototype.addMarker = function(marker) {
		    this.markers[this.markers.length] = marker;
		};

		google.maps.Map.prototype.clearMarkers = function() {
		    for(var i=0; i<this.markers.length; i++){
		        this.markers[i].setMap(null);
		    }
		};

		//codeAddress('Molenwater 79, 4331SE, MIDDELBURG, NEDERLAND', "marker-nedbase");
		directionsDisplay.setMap(map);
		directionsDisplay.setPanel(document.getElementById("directionsPanel"));

		if(typeof calculateGMRoute == "function"){
			calculateGMRoute();
		}

		google.maps.event.addListener(directionsDisplay, 'directions_changed', function() {
        	window.setTimeout(correctIcons, 50);
      	});

	}
}

function correctIcons(){
	if($('#directionsPanel table.adp-placemark img')){
		rendered = true;
		var el = $('#directionsPanel .adp-summary');
		el.hide();
		$('#directionsPanel .adp-placemark .adp-text').parent().append('<td class="adp-summary" style="width:250px">' + el.html() +'</td>');
		$('#directionsPanel table.adp-placemark img').each(function(index){
				$(this).attr('src', '/image/marker'+(index+1)+'.png').css('margin-right', '5px');
				if(index == '1'){
					el = $(this).parent().siblings().last();
					el.prev().css('width', '100%');
					el.remove();
				}
		});
	}else{
		 window.setTimeout(correctIcons, 50);
	}
}

function loginFormSuccessHandler(data){
	$("#ajaxLoginHtml").html(data);
}

function contactFormSuccessHandler(data){
	$("#formContact").html(data);
}

function ajaxFormSubmit(form){
	$.post(form.action, $("#"+form.id).serialize(), function(data){if(window[form.id+"SuccessHandler"]){window[form.id+"SuccessHandler"].apply(this, arguments);}});
}


/* JS -> FLASH INTERACTION */
function getMovie(movieName) {
	return document.getElementById(movieName);
}

function pauseSlideshow(){
	var flash = getMovie('slideshow');
	if(flash != null){
		flash.pauseSlideshow();
	}
}

function resumeSlideshow(){
	var flash = getMovie('slideshow');
	if(flash != null){
		flash.resumeSlideshow();
	}
}

function showBigVideo(){
	//this function can be called by Flash
	bvPlayer.sendEvent('PLAY');
	$('#ajaxBigvideo').trigger('click');

}
function showSlideshow(){
	//this function can be called by Flash
	//console.log('from flash.....');
	$('#ajaxSlideshow').trigger('click');
}
function callClickTag(url){
	//open clicktag from flash
	//console.log('clickTag ' + url);
	document.location.href = url;
}
