/**
 * check input for length of value (minimal chars)
 */
function input_charlength_check( input_element, input_text_value, alert_value, min_charlength  ){
	if ( $(input_element).val().length < min_charlength || $(input_element).val() == input_text_value){
		alert(alert_value);
		return false;
	}else{
		return true;
	}
}

/**
 * Colorize on focus
 */
jQuery.fn.checkForValue = function(label){
	//onfocus
	this.focus(function(){
		$(this).css('color', '#000');
		if ($.trim($(this).val()) == label) $(this).val('');
		$(this)[0].select();
	});
	//onunfocus
	this.blur(function(){
		if ($(this).val() == '' || $.trim($(this).val()) == label) {
			$(this).val(label);
			$(this).css('color', '#929292');
		}
	});
}

/**
 * Bookmark the arguments
 */
function addBookmark(title, url){
	if (window.sidebar) {
		window.sidebar.addPanel(title, url, "");
	} else if( document.all) { 
		window.external.AddFavorite(url, title);
	} else if( window.opera && window.print ) {
		return true;
	}
}

/**
 * Validate element in a form
 * @param element	: element to validate
 * @param type		: type to validate ('email' | 'chars')
 */
function validateElement(element, type){
	//remove all error classes of input elements out of the 'element' form
	$.each($("input[class$='_red']"), function(index, input){
		var element_form = $(element[0].form);
		var input_form = $(input.form);
		
		if (element_form.find("input[name='user_func']").val() != input_form.find("input[name='user_func']").val() ||
			element_form.find('input').length != input_form.find('input').length){
			
			$(input).removeClass();
			$(input).attr('class', $(input).attr('class').replace("_red", ""));
		}
	});
	
	//get class name start with 'form_input_..'
	var input_class;
	var classes = element.attr('class').split(' ');
	for (var i=0; i<classes.length; i++){
		var class_name = $.trim(classes[i]);
		if (class_name != ''){
			var input_form_regexpr = new RegExp(/^form_input_(.+)/);
			if (input_form_regexpr.test(class_name)){
				input_class = class_name.replace(/_red$/, "");
				element.removeClass(class_name);
			}
		}
	}
	
	//validate type
	switch (type){
		case 'any_content':
			if ($.trim(element.val()) != ''){
				element.addClass(input_class);
				return true;
			}else{
				element.addClass(input_class + "_red");
				return false;
			}
		break;
		case 'numbers':
			var numbers_regexpr = new RegExp(/^[0-9]+$/);
			if ( numbers_regexpr.test($.trim(element.val())) ){
				element.addClass(input_class);
				return true;
			}else{
				element.addClass(input_class + "_red");
				return false;
			}
		break;
		case 'email':
			var str = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
			var email_regexpr = new RegExp(str);
			if ( email_regexpr.test($.trim(element.val())) ){
				element.addClass(input_class);
				return true;
			}else{
				element.addClass(input_class + "_red");
				return false;
			}
		break;
	}
}
