//general JS functions
function allow_numeric_only(e)
{
	if(e.keyCode) 
		key_code = e.keyCode;
	else 
		key_code = e.which;
	//check keycode for 0-9 on both sides of the keyboard, del, backspace etc
	if((key_code >= 48 && key_code <= 57) || (key_code >= 96 && key_code <= 105) || key_code== 8 || key_code== 46 || key_code== 190 || key_code== 110 || (key_code >= 35 && key_code <= 39))
	{ 
		return true;
	}
	else
		return false;
}

function get_date_diff(startDt,endDt)
{
	var arr = startDt.split('-');
	var start_year = arr[0];
	var start_month = arr[1];
	var start_day = arr[2];
	
	var startDate = new Date();
	startDate.setFullYear(start_year,(start_month-1),start_day);  // setFullYear month range is from 0-11
	
	var arr = endDt.split('-');
	var end_year = arr[0];
	var end_month = arr[1];
	var end_day = arr[2];
	
	var endDate = new Date();
	endDate.setFullYear(end_year,(end_month-1),end_day);  // setFullYear month range is from 0-11
	
   var date_diff = (endDate - startDate)/(1000*60*60*24);
   return date_diff;
}

function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}

function str_replace(search, replace, subject, count) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Gabriel Paderni
    // +   improved by: Philip Peterson
    // +   improved by: Simon Willison (http://simonwillison.net)
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   bugfixed by: Anton Ongson
    // +      input by: Onno Marsman
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    tweaked by: Onno Marsman
    // +      input by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   input by: Oleg Eremeev
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Oleg Eremeev
    // %          note 1: The count parameter must be passed as a string in order
    // %          note 1:  to find a global variable in which the result will be given
    // *     example 1: str_replace(' ', '.', 'Kevin van Zonneveld');
    // *     returns 1: 'Kevin.van.Zonneveld'
    // *     example 2: str_replace(['{name}', 'l'], ['hello', 'm'], '{name}, lars');
    // *     returns 2: 'hemmo, mars'
 
    var i = 0, j = 0, temp = '', repl = '', sl = 0, fl = 0,
            f = [].concat(search),
            r = [].concat(replace),
            s = subject,
            ra = r instanceof Array, sa = s instanceof 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];
}