function redirect( url, delay, replace ){
	var delay = delay || 0;
	var replace = replace || false;
	var _go	= function(){ document.location.href = url; }
	var _rep= function(){ document.location.replace( url ); }
	var func = replace ? _rep : _go;
	if( delay > 0 )
		setTimeout( func, delay );
	else func();
}

jQuery.fn.limitInput = function( settings ){

	var _p = null;
	if("string" == typeof settings ){
		_p = settings;
	}

	settings = jQuery.extend( {
		pattern: (_p === null ? /./ : _p ),
		min_value: false,
		max_value: false,
		min_length: false,
		max_length: false,
		default_value: ''
	}, settings );

	if( settings.pattern == 'numbers' ){
		settings.pattern = /\d/;
	} else if( settings.pattern == 'text' ){
		settings.pattern = /[a-zA-Z]/;
	}

	var check_empty_input = function( e ){
		var t = $(this);
		var v = jQuery.trim( t.val() );
		if( v == '' ){
			t.val( settings.default_value );
		} else {
			if( settings.min_length !== false && v.length < settings.min_length ){
				var msg = '"' + v + '"' +" isn't long enough\n\nThe minimum number of characters is " + settings.min_length;
				//t.next().addClass('error').text( msg );
				alert( msg );				
			}
		}
	}
	
	var check_valid_input = function( e ){
		if( e.keyCode == 8 )//Backspace key
			return;

		var t = $(this);
		var v = jQuery.trim( t.val() );
		var l = v.length;
		var new_value = '';
		for( var i = 0 ; i < l ; ++i ){
			var _c = v.substr( i , 1 );
			if( settings.pattern.test( _c ) ){
				new_value += _c;
			}
		}

		if( parseInt( new_value ) == new_value || parseFloat( new_value ) == new_value ){
			if( settings.min_value !== false && new_value < settings.min_value ){
				new_value = settings.min_value;
			} else if( settings.max_value !== false && new_value > settings.max_value ){
				new_value = settings.max_value;
			}
		}
		
		if( settings.max_length !== false && new_value.length > settings.max_length ){
			new_value = new_value.substr( 0, settings.max_length );
		}
		if( new_value != v ){
			t.val( new_value );
		}
		if( e.keyCode == 27 )//ESC key
			t.blur();
	}
	return this.each( function(){
		var t = $(this);
		if( settings.max_length !== false ){
			t.removeAttr('maxLength');
		}
		t.keyup( check_valid_input ).blur( check_empty_input );//.focus( check_valid_input );
	} );
}

function validate_form( f ){
	var errors = 0;
	$('.required', f ).each( function(){
		var t = $(this);
		var v = jQuery.trim( t.val() );
		var l = t.next('label');
		if( v == '' ){
			++errors;
			l.addClass('error');
		} else {
			l.removeClass('error');
		}
	} );
	if( errors == 0 ){
		$('#continue-button').attr('disabled', 'disabled').text('Submitting now. Please wait.');
		return true;
	} else {
		$('#submission-errors').text('Please fill in the required fields.').fadeIn( 1500, function(){
				setTimeout( function(){
					$('#submission-errors').slideUp();
				}, 10000 );
			} 
		);
		return false;	
	}
}


$(document).ready( function(){

	if( $.browser.msie && parseInt( $.browser.version ) < 7 ){

		$('form').each( function(){
			var f = $( this );
			f.addClass('half-white-bg');
			f.width( f.width() );
			$('fieldset:last-child, fieldset+fieldset', this ).css('margin', 0 );
		} );
	
		try{document.execCommand("BackgroundImageCache", false, true);}catch(e){}
	
		try{

			$('form, .content-box, .half-white-bg, #logout-link').pngfix( { sizingMethod:'scale' } );

		}catch(e){
			alert( e.message );
		}

	}
	
	$('input.numbers-only').limitInput( {pattern:'numbers', min_value:0 } );
	//$('input.phone-number').limitInput( { pattern:'numbers', min_length:7, max_length:10 } );
	$('input.phone-number').limitInput( { pattern: /[\d\(\)\s-]/, min_length:7, max_length:14 } );
	//$('input.phone-number').limitInput( { pattern: /\(?\d{3}\)?(\s|-)*\d{3}-?\d{4}/ , min_length:7, max_length:10 } );
	
});
