// allows simple slideshow of container's children
jQuery.fn.viewStack = function(obj) {
	var self = this.get(0);
	var currentIndex = $(self).data("currentIndex");
	var newIndex = 0;
	var views = $(this.children());
	
	if( typeof currentIndex != "undefined" ){
		currentIndex = $(self).data("currentIndex");
	}else{
		$(views).hide();
		$(views).eq(0).show();
		$(self).data("currentIndex",0)
	}

	var activeView = $(views).eq(currentIndex);
	
	if(obj == "next"){
		
		newIndex = currentIndex + 1;
		
		if(newIndex > ($(views).length - 1) && $(self).data("wrap")){
			newIndex = 0;
		}else{
		 	newIndex = Math.min($(views).length - 1,newIndex);
		}
	}else if(obj == "prev"){

		newIndex = currentIndex - 1;
		
		if(newIndex < 0 && $(self).data("wrap")){
			newIndex = $(views).length - 1;
		}else{
			newIndex = Math.max(0,newIndex);
		}
	}else if(typeof obj == "int"){
		newIndex = obj;
	}else if(typeof obj == "object"){
		if(obj.wrap){
			$(self).data("wrap",true);
		}
	}

	if(newIndex != currentIndex && $(views).eq(newIndex)){
		$(self).data("currentIndex",newIndex);
		$(activeView).fadeOut("slow");
		$(views).eq(newIndex).fadeIn("slow");
	}
	
	return this;
}	

jQuery.fn.clearFormElements = function() {
	$(':input',this)
    .not(':button, :submit, :reset, :hidden')
    .val('')
    .removeAttr('checked')
    .removeAttr('selected');
}

jQuery.fn.validateInput = function(regex,message) {
	var label = $('label[for="'+$(this).attr("id")+'"]');
	$(label).find("span").remove();

	if(!regex.test($(this).val())){
		$(label).append('<span class="inputLabelError">*'+message+'</span>')
		return false;
	}else{
		return true;
	}
}

function nl2br (str, is_xhtml) {   
	var breakTag = (is_xhtml || typeof is_xhtml === 'undefined') ? '<br />' : '<br>';    
	return (str + '').replace(/([^>\r\n]?)(\r\n|\n\r|\r|\n)/g, '$1'+ breakTag +'$2');
}

