// js/common.js

var TESTING = false;

function safe_alert(msg)
{
	if ( TESTING )
	{
		return msg;
	}
	else
	{
		alert(msg);
		return false;
	}
}

function safe_confirm(question)
{
	if ( TESTING )
	{
		if ( arguments.length > 1 )
		{
			return arguments[1];
		}
		else
		{
			return true;
		}
	}
	else
	{
		return confirm(question);
	}
}

function redirect(destination)
{
	if ( TESTING )
	{
		return destination;
	}
	else
	{
		location.href = destination;
	}
}

function precision_round(value, precision)
{
	value = parseFloat(value);
	if ( isNaN(value) ) return 0;
	precision = parseInt(precision);
	if ( precision && !isNaN(precision) )
	{
		var tens = Math.pow(10,precision);
		return Math.round(value*tens)/tens;
	}
	else
	{
		return Math.round(value);
	}
}

function commafy(value)
{
	var numbers = value.toString().split('');
	var loop = 0;
	var commafied = '';
	while ( numbers.length > 0 )
	{
		commafied = numbers.pop() + commafied;
		loop++;
		if ( !(loop%3) && (numbers.length) )
		{
			commafied = ',' + commafied;
		}
	}
	return commafied;
}

Math.bound = function(value, minimum, maximum){
	var preserve_decimal = arguments[3] || false;
	value = ( (typeof minimum == 'integer') && (typeof maximum == 'integer') && !preserve_decimal ) ? parseInt(value) : parseFloat(value);
	return Math.max(Math.min(value,maximum),minimum);
};

function zero_pad(num, len)
{
	num = parseInt(num).toString();
	if ( num.length >= len ) return num;
	len -= num.length;
	while ( len > 0 )
	{
		num = '0' + num;
		len--;
	}
	return num;
}

function strip_pipe(str)
{
	var control = str;
	str = str._repl('|','')._repl('~','');
	if ( control.length != str.length )
	{
		safe_alert("Pipe characters - | - and tilde characters - ~ - are not allowed and have been removed.");
	}
	return str;
}

function do_download(src)
{
	var iframe = '<iframe src="' + src + '" style="height:0px;width:0px;display:none"></iframe>';
	$('body').append(iframe);
}

String.prototype._repl = function(a,b){
	return this.split(a).join(b);
};

String.prototype.replaceCharAt = function(idx, new_char)
{
	idx = Math.max(Math.min(parseInt(idx--),this.length),0);
	new_char = new_char.toString().charAt(0);
	var new_text = this.substring(0,idx) + new_char;
	if ( this.length > idx )
	{
		new_text += this.substring(idx+1);
	}
	return new_text;
}

String.prototype.repeat = function()
{
	var s = "", t = this.toString();
	n = parseInt(arguments[0]);
	while (--n >= 0)
	{
		s += t;
	}
	if ( arguments.length > 1 )
	{
		var m = parseInt(arguments[1]);
		if ( s.length > m )
		{
			s = s.substring(0,m);
		}
	}
	return s;
};

function string_to_date_object(str)
{
	var work = str.split('/');
	var M = trimmed_parseInt(work[0]) - 1;
	var D = trimmed_parseInt(work[1]);
	var Y = parseInt(work[2]);
	return new Date(Y, M, D);
}

function vali_date(the_id, _default)
{
	var str = $(the_id).val();
	str = str._repl('-','/');
	var dateobj = new Date(str);
	var datestr = dateobj.asString();
	if ( datestr.indexOf('NaN') < 0 )
	{
		var work = datestr.split('/');
		var year = parseInt(work[2]);
		if ( year < 1921 )
		{
			year += 100;
		}
		work[2] = year.toString();
		str = work.join('/');
	}
	else
	{
		str = _default;
	}
	$(the_id).val(str);
	return str;
}

function trimmed_parseInt(check)
{
	var retval = check;
	while ( retval.substring(0,1) === '0' )
	{
		retval = retval.substring(1);
	}
	return parseInt(retval);
}

var PHP = {};
PHP.stripslashes = function(str){return (str+'').replace(/\0/g,'0').replace(/\\([\\'"])/g,'$1');};
PHP.in_array = function(needle, haystack, argStrict){var key='',strict=!!argStrict;if (strict){for(key in haystack){if(haystack[key]===needle){return true;}}}else{for(key in haystack){if(haystack[key]==needle){return true;}}}return false;};

// end of file