function trim(s) {
	return s.replace(/^\s*(.*?)\s*$/, "$1");
}
function isFloat(s){
	var i;
    s = trim(s);
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if ((c != '.') && ((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}
function isInteger(s){
	var i;
    s = trim(s);
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function in_array(needle, haystack, strict) {    // Checks if a value exists in an array
    // 
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
 
    var found = false, key, strict = !!strict;
 
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }
 
    return found;
}
function submitenter(myfield,e)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;

if (keycode == 13)
   {
   myfield.form.submit();
   return false;
   }
else
   return true;
}

function functionenter(function_name,e)
{
var keycode;
if (window.event) keycode = window.event.keyCode;
else if (e) keycode = e.which;
else return true;
if (keycode == 13)
   {
   eval(function_name);
   return false;
   }
else
   return true;
}

function topSelectFirstInput()
{
/*
	if (document.forms.length > 0)
	{
		for(var i=0 ; i<document.forms[0].elements.length ; i++)
			if (document.forms[0].elements[i].type != 'hidden')
			{
				document.forms[0].elements[i].focus();
				break;
			}
	}
*/
	jQuery('input:visible:enabled').eq(0).focus();
}
function countSymbols(obj, objCounter, lng)
{
	var $obj = obj;
	if (typeof $obj != 'object')
	{
		$obj = document.getElementById($obj);
	}
	var $objCounter = objCounter;
	if (typeof $objCounter != 'object')
	{
		$objCounter = document.getElementById($objCounter);
	}

	var remains = lng-$obj.value.length;
	if (remains < 0)
		remains = 0;
	var out;
	if (remains <= 5)
		out = 'This really should be the last word! ('+remains+')';
	else if (remains <= 20)
		out = 'Nearly there! Start wrapping it up! ('+remains+')';
	else
		out = 'Characters remaining: '+remains;
	$objCounter.innerHTML = out;
}

function errorMessagesRemove(form_name)
{
	$('div.option-input', $('#'+form_name)).removeClass('red');
	$('span.reqd', $('#'+form_name)).remove();
	$('span.info-ok', $('#'+form_name)).remove();
	$('span.error-red', $('#'+form_name)).hide();
}

function errorMessagesAdd(form_name, el, msg)
{
	var $el = $('#'+form_name+' :input[name='+el+']')
	if ($el.is(':checkbox'))
	{
		$el.change(function() {
			if (this.checked)
			{
				$(this).unbind('change')
					.closest('table')
					.find('span.error-red')
						.hide();
			}
		})
		.closest('table')
		.find('span.error-red')
			.show();
	}
	else
	{
		$el.change(function() {
			if ($(this).val().length > 0)
			{
				$(this).unbind('change')
					.parent()
					.removeClass('red')
					.find('span.reqd')
						.remove()
					.end()
					.prepend('<span class="info-ok">OK!</span>');
			}
		})
		.parent()
		.addClass('red')
		.prepend('<span class="reqd">'+msg+'</span>');
	}
}