function trim( str ) { return str.replace(/^\s*|\s*$/g,""); }

function CheckValue( value, type )
{
	if( !value )
		return 0;
	switch( type )
	{
		case 'int':
			if( !value.length || (!parseInt(value) && value != '0') )
				return 0;
		break;
		case 'float':
			if( !value.length || !parseFloat(value) )
				return 0;
		break;
		case 'email':
			return i_e(value);
		break;
		case 'code':
			return i_c(value);
		break;
		case 'phone':
			return i_p(value);
		break;
	}
	return 1;
}

// is email
function i_e(s){
var f=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
if(f.test(s)==false)
	return 0;
else
{
	if((s.substr(0,5)=='abuse')||(s.substr(0,10)=='postmaster')||(s.substr(0,6)=='usenet'))
		return 0;
	else
		return 1;
}
}
// is code
function i_c(s){
var f=/^[0-9]{2}[ \-]?[0-9]{3}/;
if(f.test(s))
	return 1;
else
	return 0;
}
// is phone
function i_p(s){
var r=1;var g="0123456789()-+ ";for(var i=0;i<=s.length-1;i++){if(g.indexOf(s.charAt(i))<0){r=0;}}
return r;
}

function CheckItem( obj, type )
{
	if( ! obj )
	{
		alert('CheckItem obj not specified');
		return 0;
	}
	
	if( obj.length > 1 && obj.tagName != 'SELECT' )
	{
		var cnt = 0;
		for( i = 0; i < obj.length; i++ )
			cnt += CheckItem( obj[ i ], type );
		if( ! cnt )
		{
			obj[ 0 ].focus();
			return 0;
		}
		return cnt;
	}
	else
	{
		if( obj.disabled )
			return 0;
		switch( obj.tagName )
		{
			case 'INPUT':
				switch ( obj.type )
				{
					case 'text':
					case 'hidden':
					case 'file':
					case 'password':
						val = CheckValue( obj.value, type );
						if( !val && obj.type != 'hidden')
							obj.focus();
						return val;
					break;
					case 'checkbox':
					case 'radio':
						if( !obj.checked || !CheckValue(obj.value, type) )
							return 0;
					break;
					default:
						alert(obj.name + ' ' + obj.tagName + ' ' + obj.type);
					break;
				}
			break;
			case 'SELECT':
				if( !CheckValue(obj.value, type) ) //obj.selectedIndex < 0 || ! obj.options[ obj.selectedIndex ].value )
				{
					obj.focus();
					return 0;
				}
			break;
			case 'TEXTAREA':
				if( !CheckValue(obj.value, type) )
				{
					obj.focus();
					return 0;
				}
			break;
			default:
				alert(obj.name + ' ' + obj.tagName + ' ' + obj.type);
		}
	}
	return 1;
}

function TextControlInt( obj, value, minvalue, maxvalue )
{
	if( obj.disabled )
		return;
	if( obj.value )
		obj.value = parseInt( obj.value ) + parseInt( value );
	else
		obj.value = value;
	if( parseInt(obj.value) < parseInt(minvalue) )
		obj.value = minvalue;
	else if( parseInt(obj.value) > parseInt(maxvalue) )
		obj.value = maxvalue;
}

function addToSelect( objSelect, value, text, selected )
{
	if( objSelect )
	{
		opt = new Option();
		opt.value = value;
		opt.text = text;
		objSelect.options[ objSelect.length ] = opt;
		if( selected )
			objSelect.selectedIndex = objSelect.length - 1;
	}
}

function autoResize() {
	var isMSIE = (navigator.appName == "Microsoft Internet Explorer");
	var isOpera = (navigator.userAgent.indexOf("Opera") != -1);

	if (isOpera)
		return;

	if (isMSIE) {
		window.resizeTo(10, 10);

		var elm = document.body;
		var width = elm.offsetWidth;
		var height = elm.offsetHeight;
		var dx = (elm.scrollWidth - width) + 4;
		var dy = elm.scrollHeight - height;

		window.resizeBy(dx, dy);
	} else {
		window.scrollBy(1000, 1000);
		if (window.scrollX > 0 || window.scrollY > 0) {
			window.resizeBy(window.innerWidth * 2, window.innerHeight * 2);
			window.sizeToContent();
			window.scrollTo(0, 0);
			var x = parseInt(screen.width / 2.0) - (window.outerWidth / 2.0);
			var y = parseInt(screen.height / 2.0) - (window.outerHeight / 2.0);
			window.moveTo(x, y);
		}
	}
}

function decode(string) 
{
  return unescape(string.replace(/\+/g, " "));
}

/*
** This function parses comma-separated name=value argument pairs from
** the query string of the URL. It stores the name=value pairs in 
** properties of an object and returns that object. 
*/
function getargs() {
  var args = new Object();
  var query = location.search.substring(1);   // Get query string.
  var pairs = query.split("&");               // Break at ampersand.
  for(var i = 0; i < pairs.length; i++) {
    var pos = pairs[i].indexOf('=');          // Look for "name=value".
    if (pos == -1) continue;                  // If not found, skip.
    var argname = pairs[i].substring(0,pos);  // Extract the name.
    var value = pairs[i].substring(pos+1);    // Extract the value.
    args[argname] = decode(value);            // Store as a property.
  }
  return args;                                // Return the object.
}