String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); };
String.prototype.ltrim = function() { return this.replace(/^\s+/, ""); };
String.prototype.rtrim = function() { return this.replace(/\s+$/, ""); };

var my_cktoolbar =
	[
		['Source','Maximize','Preview'],
		['PasteText','PasteFromWord','RemoveFormat'],
		['Find','Replace'],
		['Link','Unlink'],
		['Image','Flash','Table','HorizontalRule','Smiley','SpecialChar','PageBreak'],
		'/',
		['TextColor','BGColor','Bold','Italic','Underline','Strike','-','Subscript','Superscript'],
		['NumberedList','BulletedList','-','Outdent','Indent','Blockquote'],
		['JustifyLeft','JustifyCenter','JustifyRight','JustifyBlock'],
		['About']
	];

function jsalert(message, title, okfunc) {
	var d = $('#modaldialog');
	if (title) d.dialog('option', 'title', title);
	d.html(message);
	d.dialog('option', 'closeOnEscape', false);
	d.dialog('option', 'buttons', {"OK": function() { if (okfunc) okfunc(); $(this).dialog("close"); }});
	d.dialog('open');
}

function check_pwfields(f1, f2, minlen) {
	if (f1.value.length < minlen) {
		jsalert('Your password must be at least ' + minlen + ' characters.', '', function () { f1.focus(); } );
		$(f1).addClass('errorfield');

	} else if (f1.value != f2.value) {
		jsalert('Your passwords do not match, please try again.', '', function () { f1.focus(); } );
		$(f1).addClass('errorfield');
		$(f2).addClass('errorfield');

	} else {
		return true;
	}

	return false;
}

function check_field_not_empty(f, empty_message) {
	if (f.value.trim() == '') {
		$(f).addClass('errorfield');
		jsalert(empty_message, '', function() { f.focus() });
		return false;

	} else {
		$(f).removeClass('errorfield');
		return true;
	}
}

function checkall(button, target) {
	if (button.value == 'Check All') {
		$(button).attr('value', 'Uncheck All');
		$(target).attr('checked', true);
	} else {
		$(button).attr('value', 'Check All');
		$(target).attr('checked', false);
	}
}

function pformat(str) {
	return str
		.replace(/&/g, '&amp;')
		.replace(/>/g, '&gt;')
		.replace(/</g, '&lt;')
		.replace(/\n/g, '<br>');
}

/* credits: http://www.cafewebmaster.com/check-password-safety-javascript-while-typing */
function check_password_safety(pwd, pwdinfo) {
	var password_info = document.getElementById(pwdinfo);

	if (pwd == "") {
		password_info.innerHTML = '';

	} else {
		var msg = "";
		var points = pwd.length;
		var has_letter  = new RegExp("[a-z]");
		var has_caps    = new RegExp("[A-Z]");
		var has_numbers = new RegExp("[0-9]");
		var has_symbols = new RegExp("\\W");

		if (has_letter.test(pwd))  { points += 4; }
		if (has_caps.test(pwd))    { points += 4; }
		if (has_numbers.test(pwd)) { points += 4; }
		if (has_symbols.test(pwd)) { points += 4; }

		if (points >= 24) {
			msg = 'Password strength: <span style="color:#080;">Strong</span>';
		} else if (points >= 16) {
			msg = 'Password strength: <span style="color:#00f;">Medium</span>';
		} else if (points >= 12) {
			msg = 'Password strength: <span style="color:#f00;">Weak</span>';
		} else {
			msg = 'Password strength: <span style="color:#f00;">Very Weak</span>';
		}

		password_info.innerHTML = msg;
	}
}

function focus_first_empty(frm) {
	var total = frm.elements.length;
	for (i = 0; i < total; i++) {
		var e = frm.elements[i];
		if (!e.disabled
			&& e.value == ''
			&& (e.type == 'text' || e.type == 'textarea' || e.type == 'select-one' || e.type == 'password')) {
			e.focus();
			return true;
		}
	}

	return false;
}
