function str2int(str){
	int = parseFloat(str);
	return (!is_numeric(int))? 0 : Math.round(int);
}

function is_numeric(str){
	return (!isNaN(str*1));
}

function getCompleteWidth(Obj){
	return Obj.width() + getWidthMargins(Obj) + getWidthBorders(Obj);
}

function getCompleteHeight(Obj){
	return Obj.height() + getHeightMargins(Obj) + getHeightBorders(Obj);
}

function getWidthMargins(Obj){
	return str2int(Obj.css('margin-left')) + 
		str2int(Obj.css('margin-right')) + 
		str2int(Obj.css('padding-left')) + 
		str2int(Obj.css('padding-right'));
}

function getHeightMargins(Obj){
	return str2int(Obj.css('margin-bottom')) + 
		str2int(Obj.css('margin-top')) + 
		str2int(Obj.css('padding-bottom')) + 
		str2int(Obj.css('padding-top'));
}


function getWidthBorders(Obj){
	return str2int(Obj.css('border-left-width')) + 
		str2int(Obj.css('border-right-width'));
}

function getHeightBorders(Obj){
	return str2int(Obj.css('border-bottom-width')) + 
		str2int(Obj.css('border-top-width'));
}

function is_valid_email(str){
	return str.match(/\b(^(\S+@).+((\.com)|(\.net)|(\.edu)|(\.mil)|(\.gov)|(\.org)|(\..{2,2}))$)\b/gi);
}

function isIE(){
	var data=navigator.appVersion;
	
	if(data.indexOf('MSIE') > -1)
		return parseFloat(data)
	
	return false;
}

function preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.p) d.p=new Array();
	var i,j=d.p.length,a=preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.p[j]=new Image; d.p[j++].src=a[i];}}
}

// Function to set src on given image element
function setImage (id, img) {
	document.getElementById(id).src=img;
	return true;
}

var zIndex = 2;

function setZIndex(Obj){
	Obj.css('z-index', zIndex);
	zIndex = zIndex + 1;
}

function is_valid_date(p_strValue, p_strLanguageFormat)
{
    var l_objRegExp;
    var l_intDay;
    var l_intMonth;
    var l_intYear;
    var l_intDaysInMonth;
    var l_Valid;
    var l_objDate;

    l_Valid = true;
    l_objRegExp = new RegExp("^(\\d{1,2})[/-](\\d{1,2})[/-](\\d{4})$");
    if (!l_objRegExp.test(p_strValue))
    {

            l_objRegExp = new RegExp("^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$");
            if (!l_objRegExp.test(p_strValue))
            {
                    return '##FIELDNAME## is een incorrecte datum';
            }
            else
            {
                    return true;
            }
                    }
    else
    {
		
            l_objRegExp.exec(p_strValue);
            switch (p_strLanguageFormat)
            {
                    case "English":
                    {
                            l_intDay = new Number(RegExp.$2);
                            l_intMonth = new Number(RegExp.$1);
                            break;
                    }
                    case "Dutch":
                    {
                            l_intDay = new Number(RegExp.$1);
                            l_intMonth = new Number(RegExp.$2);
                            break;
                    }
            }
            l_intYear =  new Number(RegExp.$3);
            l_intYear += ((l_intYear < 100)?((l_intYear >= 50)?1900:2000):0);
            l_intDaysInMonth = new Array (31,0,31,30,31,30,31,31,30,31,30,31);
            l_intDaysInMonth[1]= ((l_intYear%4==0)&&((l_intYear%100!=0)||(l_intYear%400==0)))?29:28;
            l_Valid = ((l_intMonth < 1) || (l_intMonth > 12) || 
					  (l_intDay < 1) || (l_intDay > l_intDaysInMonth[l_intMonth - 1]) || 
					  (l_intYear < 0))?false:true;
			if (l_Valid)
            {
                    l_objDate = new Date(l_intYear, (l_intMonth - 1), l_intDay);
                    l_Valid = isNaN(l_objDate)?false:true;
            }
            if (l_Valid == false)
            {
                    l_Valid = "##FIELDNAME## is geen correcte datum (";
                    if (p_strLanguageFormat == "English")
                    {
                            l_Valid += "MM-DD-YYYY";
                    }
                    else
                    {
                            l_Valid += "DD-MM-JJJJ";
                    }
                    l_Valid += ")";
            }       
            return l_Valid;
    }
} 

/* Maps aanpassingen */
function createMarker(point, index, map, doLetter) {
	doLetter = false;
	// shadow, icon dimensions, etc.
	var baseIcon = new GIcon(G_DEFAULT_ICON);
	baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
	baseIcon.iconSize = new GSize(20, 34);
	baseIcon.shadowSize = new GSize(37, 34);
	baseIcon.iconAnchor = new GPoint(9, 34);
	baseIcon.infoWindowAnchor = new GPoint(9, 2);

	// Create a lettered icon for this point using our icon class
    var letter = String.fromCharCode("A".charCodeAt(0) + index-1);
	var letteredIcon = new GIcon(baseIcon);
	letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
	
	// Set up our GMarkerOptions object
	markerOptions = { icon:letteredIcon };
	if(doLetter == true) {
		var marker = new GMarker(point, markerOptions);
	}
	else {
		var marker = new GMarker(point, {});
	}

	var inhoud = $('#info-maps'+index).html();	
	var inhoud2 = $('#info-maps'+index+' h1').html() + '<br />' + $('#info-maps'+index+' #city_'+index).html();
	
	GEvent.addListener(marker, "click", function(){
		//inhoud = inhoud.replace(/<img(.*?)>/gi,"");
		if($('#info-maps'+index+' #location_'+index).html() != null && $('#info-maps'+index+' #location_'+index).html() != 'undefined') {
			window.location = '/dierenasielen' + $('#info-maps'+index+' #location_'+index).html();
		}
		else {
			displayPoint(marker, index, inhoud, map);
		}
	});
	
	GEvent.addListener(marker, "mouseover", function(){
		displayHover(marker, index, inhoud2, map);
	});
	
	GEvent.addListener(marker, "mouseout", function(){
		//$("#hover").hide();
	});
	
	GEvent.addListener(map, "click", function() {
		if($('#hover').length == 0){									  
	  		$('#message').after('<div id="hover"></div>');
		}
		$('#message').hide();
	});
	
	/*
	if(doLetter == true) {
		$('#col_icon'+index).html('<img src="http://www.google.com/mapfiles/marker' + letter + '.png" height="30" width="18" alt="' + letter + '" />').click(function(){displayPoint(marker, index,inhoud,map);}).css({cursor:'pointer'});
	}
	else {
		$('#col_icon'+index).html('<img src="http://www.google.com/mapfiles/marker.png" height="30" width="18" alt="Marker" />').click(function(){displayPoint(marker, index,inhoud,map);}).css({cursor:'pointer'});
	}*/
	$('#marker'+index).click(function(){displayPoint(marker, index,inhoud,map);}).css({cursor:'pointer'});
	/*
	for(var mark in marker){
		
		//alert(marker[mark]);
	}
	*/
	
	return marker;
}

$('#closePoint').live('click',function(){
	if($('#hover').length == 0){									  
		$('#message').after('<div id="hover"></div>');
	}
	$('#message').hide();
});

function displayPoint(marker, index, inhoud, map){
	$("#hover").hide();
	$("#message").hide();
	var moveEnd = GEvent.bind(map, "moveend", this, function(){
	var markerOffset = map.fromLatLngToDivPixel(marker.getLatLng());
	
		$("#message")
			.html('<div class="overlay_top"><div id="closePoint" alt="Sluiten" title="Sluiten"></div></div>'+inhoud+'<br /><div class="overlay_bottom"></div>')
			/*.fadeIn()*/
			.show()
			.css({ top:markerOffset.y, left:markerOffset.x-150, position: 'absolute', zIndex: 100 });
		GEvent.removeListener(moveEnd);
		GEvent.clearListeners(map, "moveend");
	});
	map.panTo(marker.getLatLng());
}
function displayHover(marker, index, inhoud, map){
	$("#hover").hide();
	
	if($('#message').is(':hidden')) {
		//var moveEnd = GEvent.addListener(map, "moveend", function(){
		var markerOffset = map.fromLatLngToDivPixel(marker.getLatLng());
			var direction = 'right';
			var mapswidth = $('#map').width();
			var X = 20;
			if(markerOffset.x > (mapswidth/2)+10) {
				direction = 'left';
				X = -200;
			}
			$("#hover")
				.html('<div class="arrow'+direction+'"></div>'+inhoud+'')
				.fadeIn()
				.css({ top:markerOffset.y-40, left:markerOffset.x+X, position: 'absolute' });
			hoverh = $("#hover").height() - 5;
			$(".arrow"+direction).css({height:hoverh});
	}

		//GEvent.removeListener(moveEnd);
	//});
}
