
var crepeutils = {
	feedToBr: function(content){
		return content.replace(/\n/g, '<br>');
	},
	feedFromBr: function(content){
		return jQuery.browser.msie ? content.replace(/<BR>/g, '\n') : content.replace(/<br>/g, '\n');
	},
	shorter: function(text,n){
		return ( text.length > n ? text.substring(0,n-3)+"..." : text );
	},
	updateElement: function(selector, content){
		value = ( typeof content == "function" ? content() : content );
		jQuery(selector).html( crepeutils.feedToBr(value) );
	},
	callService: function(service, arg1, arg2, selector){
		var result;
		
		if( arg2 != undefined ){
			service(arg1, arg2, { callback: function(data){ result = data }, async: false });
		}else{
			service(arg1, { callback: function(data){ result = data }, async: false });
		}
		
		if( selector ){
			crepeutils.updateElement(selector, result);
		}
		
		return result;
	},
	validate: function(settings, caller, callback){
		var valid = true;
		
		defaultMessages = {
			required: "入力は必須です",
			maxlength: "文字数が多すぎます",
			minlength: "文字数が少なすぎます",
			regex: "許可されていない文字列です"
		}
		
		for(i=0; i<settings.length; i++){
			var value = jQuery("[@name='"+settings[i].name+"']", caller).val();
			
			validator = settings[i].validators;
			message = jQuery.extend({}, defaultMessages, settings[i].messages);
			display = settings[i].display ? jQuery(settings[i].display) : undefined;
			
			if( validator ){
				messages = "";
				if( validator.required && value.length <= 0 ){
					messages += message.required + "<br/>";
				}else if( validator.maxlength && value.length > validator.maxlength ){
					messages += message.maxlength + "<br/>";
				}else if( validator.minlength && value.length < validator.minlength ){
					messages += message.minlength + "<br/>";
				}else if( validator.regex && !value.match(validator.regex) ){
					messages += message.regex + "<br/>";
				}
				
				if( messages ){
					valid = false;
					if( display ){
						display.html(messages);
					}
				}else if( display ){
					display.html('');
				}
			}
		}
		
		return valid;
	}
}