
/* - ++resource++abstract.ui.MultilineWidget.js - */
// http://www.radiopan.it/portal_javascripts/++resource++abstract.ui.MultilineWidget.js?original=1
(function(){var $=this.jQuery;if((typeof this.abstract)=='undefined') this.abstract={};if((typeof this.abstract.ui)=='undefined') this.abstract.ui={};var au=this.abstract.ui;au.MultiLineWidget=function(container,separator,debug){var _widget=this;if((typeof debug)=='undefined')
var debug=false;this.container=container;this.separator=separator;this.widgetData=$('.widgetData',container);if(!debug)
this.widgetData.hide();this.addButton=$('.addButton',container);this.bottomLine=$('.widgetBottomLine',container);this.template=$('.widgetLine',container).eq(0);this.template.removeClass('widgetLine');this.template.addClass('widgetLineTemplate');this.template.hide();this.addButton.click(
function(e){_widget.addLine();e.preventDefault()});this.load()};au.MultiLineWidget.prototype.dump=function(){var _widget=this;var serialization='';$('.widgetLine',this.container).each(
function(i){$('.widgetLineItem',this).each(
function(i){if(this.tagName.toLowerCase()=='input'){serialization+=$(this).val()+_widget.separator}
if(this.tagName.toLowerCase()=='select'){serialization+=$('option:selected',this).val()+_widget.separator}});serialization=serialization.substr(0,serialization.length-_widget.separator.length)+'\n'});this.widgetData.val(serialization)};au.MultiLineWidget.prototype._splitLines=function(text,keepVoid){var lines=[];var current='';var lastWasSpecial=false;for(var i=0;i<text.length;i++){if(text[i]=='\n'||text[i]=='\r'){if(!lastWasSpecial){lastWasSpecial=true;if(keepVoid||current.length>0)
lines.push(current);current=''}}
else{lastWasSpecial=false;current=current+text[i]}}
if(keepVoid||current.length>0)
lines.push(current);return lines};au.MultiLineWidget.prototype.loadElement=function(line){var components=line.split(this.separator);this.addLine();var lastAdded=$('.widgetLine:last',this.container).eq(0);$('.widgetLineItem',lastAdded).each(
function(i){$(this).val(components.shift())})};au.MultiLineWidget.prototype.load=function(){var value=this.widgetData.val();var lines=this._splitLines(value,false);if(lines.length>0){for(var i=0;i<lines.length;i++)
this.loadElement(lines[i])}
this.widgetData.val(value)};au.MultiLineWidget.prototype.addLine=function(){var _widget=this;var newLine=this.template.clone();newLine.addClass('widgetLine');newLine.addClass('widgetLineTemplate');newLine.insertBefore(this.bottomLine);$('.delButton',newLine).click(
function(e){_widget.delLine(e.target);e.preventDefault()});$('select.widgetLineItem',newLine).change(
function(e){_widget.dump()});$('input.widgetLineItem',newLine).keyup(
function(e){_widget.dump()});newLine.show();this.dump()};au.MultiLineWidget.prototype.delLine=function(element){var parent=$(element).parent();parent.empty();parent.remove();this.dump()};au.MultiLineWidget.constructor=au.MultiLineWidget;au.multiLineWidgetRegistry=[];$(document).ready(
function(){$('.multiLineSpaceWidget').each(
function(i){var widget=new au.MultiLineWidget(this,' ',false);au.multiLineWidgetRegistry.push(widget)});$('.multiLineColonWidget').each(
function(i){var widget=new au.MultiLineWidget(this,':',false);au.multiLineWidgetRegistry.push(widget)});$('.multiLineCommaWidget').each(
function(i){var widget=new au.MultiLineWidget(this,',',false);au.multiLineWidgetRegistry.push(widget)})})})();
