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(':text: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').removeClass('error-ta');
	$('span.reqd, span.info-ok, span.option-accept, span.warning', $('#'+form_name)).remove();
}

function errorMessagesAdd(form_name, el, msg)
{
	var $el = $('#'+form_name+' :input[name='+el+']');
	if ($el.is('textarea'))
	{
		$el
			.addClass('error-ta')
			.change(function() {
				if ($(this).val().length > 0)
				{
					$(this).unbind('change')
						.removeClass('error-ta')
						.parent()
						.find('span.warning')
							.remove();
				}
			})
			.prev('label').eq(0).each (function() {
				$(this).html($(this).html()+' <span class="warning">'+msg+'</span>');
			});
	}
	else if ($el.is(':checkbox'))
	{
		$el.change(function() {
			if (this.checked)
			{
				$('label[for='+$el.attr('name')+']', $('#'+form_name)).next('span.option-accept').remove();
			}
		})
		var elName = ($el.attr('id')) ? $el.attr('id') : $el.attr('name');
		$('label[for='+elName+']', $('#'+form_name))
			.after('<span class="option-accept">'+msg+'</span>');
	}
	else
	{
		$el
			.change(function() {
				if ($(this).val().length > 0)
				{
					$(this).unbind('change')
//						.parent()
						.closest('div')
						.removeClass('red')
						.find('span.reqd')
							.remove()
						.end()
						.prepend('<span class="info-ok">OK!</span>');
				}
			})
			.closest('div')
			.addClass('red')
			.prepend('<span class="reqd">'+msg+'</span>');
	}
}

function showErrorDiv(el, state, message)
{
	if ('undefined' == typeof message)
		message = 'REQUIRED!';
	var $el = $(el);
	if (state)
	{
		if ($el.is('textarea'))
		{
			if (!$el.hasClass('error-ta'))
			{
				$el
					.addClass('error-ta')
					.change(function() {
						if ($(this).val().length > 0)
						{
							$(this).unbind('change')
								.removeClass('error-ta')
								.parent()
								.find('span.warning')
									.remove();
						}
					})
					.prev('label').eq(0).each (function() {
						$(this).html($(this).html()+' <span class="warning">'+message+'</span>');
					});
			}
		}
		else if ($el.is(':checkbox'))
		{
			if ($el.closest('form').find('label[for='+$el.attr('name')+']').next('span.option-accept').length == 0)
			{
				$el.change(function() {
					if (this.checked)
					{
						$(this).closest('form').find('label[for='+$el.attr('name')+']').next('span.option-accept').remove();
					}
				}).closest('form').find('label[for='+$el.attr('name')+']')
					.after('<span class="option-accept">'+message+'</span>');
			}
		}
		else
		{
			$el.parent().addClass('red');
			if (!$el.parent().find('span.reqd').length)
				$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().prepend('<span class="reqd">'+message+'</span>');
		}
	}
	else
	{
		if ($el.is('textarea'))
		{
			$el
				.removeClass('error-ta')
				.parent()
				.find('span.warning')
					.remove();
		}
		else if ($el.is('checkbox'))
		{
			$(this).closest('form').find('label[for='+$el.attr('name')+']').next('span.option-accept').remove();
		}
		else
		{
			$el.unbind('change').parent().removeClass('red').find('span.reqd').remove().end().find('info-ok').remove();
		}
	}
}

