function IsIE8Browser() {    
	var rv = -1;    
	var ua = navigator.userAgent;    
	var re = new RegExp("Trident\/([0-9]{1,}[\.0-9]{0,})");    
	if (re.exec(ua) != null) {        
		rv = parseFloat(RegExp.$1);    
	}    
	
	return (rv == 4);
}

function verifyEmail(email){
	var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
	if (email.search(emailRegEx) == -1) {
		return false;
	}
	return true;
}

function wordwrap (str, int_width, str_break, cut) {
    // Wraps buffer to selected number of characters using string break char  

    // PHP Defaults
    var m = ((arguments.length >= 2) ? arguments[1] : 75);
    var b = ((arguments.length >= 3) ? arguments[2] : "\n");
    var c = ((arguments.length >= 4) ? arguments[3] : false);
 
    var i, j, l, s, r;
 
    str += '';
 
    if (m < 1) {
        return str;
    }
 
    for (i = -1, l = (r = str.split(/\r\n|\n|\r/)).length; ++i < l; r[i] += s) {
        for (s = r[i], r[i] = ""; s.length > m; r[i] += s.slice(0, j) + ((s = s.slice(j)).length ? b : "")) {
            j = c == 2 || (j = s.slice(0, m + 1).match(/\S*(\s)?$/))[1] ? m : j.input.length - j[0].length || c == 1 && m || j.input.length + (j = s.slice(m).match(/^\S*/)).input.length;
        }
    }
 
    return r.join("\n");
}

function initMap(address,holder){
	if(holder=='' || holder==undefined){
		holder = '#map-placeholder';
	}
	
	var directions_link = 'http://maps.google.com/maps?f=d&hl=en&ie=UTF8&t=h&z=13&iwloc=A&daddr='+encodeURI(address);
	var html = '<h3>Address:</h3>'+str_replace(',',',<br />',address)+'<br /><br /><a target="_blank" href="'+directions_link+'">Get directions</a>';
	setTimeout(function(){
		$(holder).gMap({ 
			markers: [{address: address, html: html, title: '_address', popup: true}],
			//address: address,
			zoom: 15,
			maptype: google.maps.MapTypeId.HYBRID
		});
	},100);
}

function IeFixVals(form){ 
	if(!Modernizr.input.placeholder){
		form.find('input').each(function(){
			if($(this).val()==$(this).attr('placeholder')){
				$(this).val('');
			}
		});
	}
}

function extractNumber(string){
	return string.match(/\d/g);
}

//FORM VALIDATION
function formRequired(form) {
	var allow = true;
	form.children().each(function(intIndex){ 
		//var tag = this.nodeName.toLowerCase();
		var tag='input';
		if(tag=='input' || tag=='textarea' || tag=='select') { 
			if($(this).attr('type')!='radio' && $(this).attr('type')!='hidden' && $(this).hasClass('required')==true) { 
				if($(this).val()==''){
					alert('Required fields can not be empty.');
					$(this).focus();
					$(this).addClass('highlighted');
					allow = false;
					return false;
				}
				else {
					$(this).removeClass('highlighted');
				}
			}
		}
	});
	if(!allow){
		return false;
	} else {
		return true;
	}
}

function load_google_map()
{
	var geocoder = new google.maps.Geocoder();
	var myOptions = {
		zoom: 15,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	}
	var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

	var address = $('#map_canvas').data('address');

	geocoder.geocode( { 'address': address}, function(results, status) {
		if (status == google.maps.GeocoderStatus.OK) {
			map.setCenter(results[0].geometry.location);
			var marker = new google.maps.Marker({
				map: map, 
				position: results[0].geometry.location
			});
		} else {
			console.log("Couldn't geocode: " + address);
		}
	});
}

function popup_message(html){
	$('.popup .overlay').show();
	$('.popup .popup_content').html(html); 
	var top = 50+$(document).scrollTop();
	var width = $('.popup .popup_wrapper').outerWidth();
	var left = 480-(width/2); 
	$('.popup .popup_wrapper').css('top',top+'px');
	$('.popup .popup_wrapper').css('left',left+'px');;
	$('.popup .popup_wrapper').slideDown('fast'); 
}

function popup(file,data,func)
{ 
	$('.popup .overlay').show(); 
	if(data==undefined){
		data = {};
	} 
	$.get(file,data,function(response){ 
		$('.popup .popup_content').html(response);
		var top = 50+$(document).scrollTop();
		$('.popup .popup_wrapper').css('top',top+'px');
		var width = $('.popup .popup_wrapper').outerWidth();
		var left = 480-(width/2);
		$('.popup .popup_wrapper').css('left',left+'px');
		if(func!=undefined) {
			func();
		}
		$('.popup .popup_wrapper').slideDown('fast');
	})
}

function popup_submit(elem)
{
	//keep original popup size
	width = $('.popup .popup_wrapper').width();
	$('.popup .popup_wrapper').width(width);
	height = $('.popup .popup_wrapper').height();
	$('.popup .popup_wrapper').height(height);
	
	path = elem.attr('action');
	method = elem.attr('method'); 
	$.ajax({
		type: method,
		url: path,
		data: elem.serialize(),
		success: function(response){
			$('.popup .popup_content').html(response);
		}
	});
}

function popup_close()
{
	$('.popup .popup_wrapper').slideUp('fast',function(){
		$('.popup .overlay').hide();
		
		//remove fixed size
		$('.popup .popup_wrapper').height('');
		$('.popup .popup_wrapper').width('');
	});
}

function getHash()
{
	return window.location.href.substr(window.location.href.indexOf('#')+1);
}

function str_replace (search, replace, subject, count) {
    // Replaces all occurrences of search in haystack with replace  
    var i = 0,
        j = 0,
        temp = '',
        repl = '',
        sl = 0,
        fl = 0,
        f = [].concat(search),
        r = [].concat(replace),
        s = subject,
        ra = Object.prototype.toString.call(r) === '[object Array]',
        sa = Object.prototype.toString.call(s) === '[object Array]';
    s = [].concat(s);
    if (count) {
        this.window[count] = 0;
    }
 
    for (i = 0, sl = s.length; i < sl; i++) {
        if (s[i] === '') {
            continue;
        }
        for (j = 0, fl = f.length; j < fl; j++) {
            temp = s[i] + '';
            repl = ra ? (r[j] !== undefined ? r[j] : '') : r[0];
            s[i] = (temp).split(f[j]).join(repl);
            if (count && s[i] !== temp) {
                this.window[count] += (temp.length - s[i].length) / f[j].length;
            }
        }
    }
    return sa ? s : s[0];
}
