function isNumeric(val,decimals) {
    if (decimals <= 0) {
        var re = /^\s*\d+\.?\s*$/;
        return re.test(val);
    } else {
        var reString = "^\\s*((\\d+(\\.\\d{0," + decimals + "})?)|((\\d*(\\.\\d{1," + decimals + "}))))\\s*$"
        var re = new RegExp(reString);
        return re.test(val);
    }
}

function trim(str) {
	var	str = str.replace(/^\s\s*/, ''),
		ws = /\s/,
		i = str.length;
	while (ws.test(str.charAt(--i)));
	return str.slice(0, i + 1);
}

function removeSpaces(string) {
 	return string.split(' ').join('');
}

function targetBlank (url) {
  	blankWin = window.open(url,'_blank','menubar=yes,toolbar=yes,location=yes,directories=yes,fullscreen=no,titlebar=yes,hotkeys=yes,status=yes,scrollbars=yes,resizable=yes');
}

function newWin(url,winName,props){
	var winName = winName || "compass.net.nz";
	var props = props || "width=600,scrollbars=yes,height=500,top="+((screen.height-400)/2)+",left="+((screen.width-600)/2);
	var myWin = window.open(url,winName,props);
	myWin.focus();
}

function daysInMonth(month,year) {
	var ds = String(month+1)+'/0/'+String(year);
	var dd = new Date(ds);
	return dd.getDate();
} 

function openWindow(url,windowName,winatts) {
	var windowName = windowName || 'NewWindow';
	var winatts = winatts || 'width=600,height=500,left=200,top=50,scrollbars=yes';
	window.open(url,windowName,winatts);
}

function browse(url,target) {
	var target=target || '';
	if(target == '_blank'){
		openWindow(url);
	}else{
		top.location.href=url;	
	}
}

function left(str, n){
	if (n <= 0)
	    return "";
	else if (n > String(str).length)
	    return str;
	else
	    return String(str).substring(0,n);
}
function right(str, n){
    if (n <= 0)
       return "";
    else if (n > String(str).length)
       return str;
    else {
       var iLen = String(str).length;
       return String(str).substring(iLen, iLen - n);
    }
}


/*
function convert(f) {
    f.kb.value=Math.round(f.byte.value/1024*100000)/100000
    f.mb.value=Math.round(f.byte.value/1048576*100000)/100000
    f.gb.value=Math.round(f.byte.value/1073741824*100000)/100000
     
  }

function convertkb(f) {
    f.byte.value=Math.round(f.kb.value*1024*100000)/100000
    f.mb.value=Math.round(f.kb.value/1024*100000)/100000
    f.gb.value=Math.round(f.kb.value/1048576*100000)/100000
     
  }

function convertmb(f) {
    f.byte.value=Math.round(f.mb.value*1048576*100000)/100000
    f.kb.value=Math.round(f.mb.value*1024*100000)/100000
    f.gb.value=Math.round(f.mb.value/1024*100000)/100000
     
  }

function convertgb(f) {
    f.byte.value=Math.round(f.gb.value*1073741824*100000)/100000
    f.kb.value=Math.round(f.gb.value*1048576*100000)/100000
    f.mb.value=Math.round(f.gb.value*1024*100000)/100000
     
  }

*/


/*
   jQuery (character and word) counter
   Copyright (C) 2009  Wilkins Fernandez
*/
(function(b) { b.fn.extend({ counter: function(a) { a = b.extend({}, { type: "char", count: "down", goal: 140 }, a); var d = false; return this.each(function() { function e(c) { if (typeof a.type === "string") switch (a.type) { case "char": if (a.count === "down") { g = " character(s) left"; return a.goal - c } else if (a.count === "up") { g = " characters (" + a.goal + " max)"; return c } break; case "word": if (a.count === "down") { g = " word(s) left"; return a.goal - c } else if (a.count === "up") { g = " words (" + a.goal + " max)"; return c } break; default: } } var g, f = b(this); b('<div id="' + this.id + '_counter"><span>' + e(b(f).val().length) + "</span>" + g + "</div>").insertAfter(f); var i = b("#" + this.id + "_counter span"); f.bind("keyup click blur focus change paste", function(c) { switch (a.type) { case "char": c = b(f).val().length; break; case "word": c = f.val() === "" ? 0 : b.trim(f.val()).replace(/\s+/g, " ").split(" ").length; break; default: } switch (a.count) { case "up": if (e(c) >= a.goal && a.type === "char") { b(this).val(b(this).val().substring(0, a.goal)); d = true; break } if (e(c) === a.goal && a.type === "word") { d = true; break } else if (e(c) > a.goal && a.type === "word") { b(this).val(""); i.text("0"); d = true; break } break; case "down": if (e(c) <= 0 && a.type === "char") { b(this).val(b(this).val().substring(0, a.goal)); d = true; break } if (e(c) === 0 && a.type === "word") d = true; else if (e(c) < 0 && a.type === "word") { b(this).val(""); d = true; break } break; default: } f.keydown(function(h) { if (d) { this.focus(); if (h.keyCode !== 46 && h.keyCode !== 8) if (b(this).val().length > a.goal && a.type === "char") { b(this).val(b(this).val().substring(0, a.goal)); return false } else return h.keyCode !== 32 && h.keyCode !== 8 && a.type === "word" ? true : false; else { d = false; return true } } }); i.text(e(c)) }) }) } }) })(jQuery);


function validateEmail(email) {
	var re = /^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i;
	return email.match(re); 
}
