/*
 * JQuery multiple link from one textfield
 *
 * @author nchalon
 * @version 1 02.12.2010
 */

/*# AVOID COLLISIONS #*/
;if(window.jQuery) (function($){
/*# AVOID COLLISIONS #*/
    // plugin initialization
    $.fn.MultiLink = function(options){
        if(this.length==0) {
            return this; // quick fail
        }
        // intialize options
        var options = $.extend(
            {}/* new object */,
            $.fn.MultiLink.options/* default options */,
            options || {} /* just-in-time options */
        );
        // get the "button"
        var button = this;
        // get the list holder
        $.fn.MultiLink.list = $(options.holder);
        $.fn.MultiLink.defaultLang = options.defaultLang;
        // get the languages
        $.fn.MultiLink.languages = options.languages;
        // hide empty list holder
        $.fn.MultiLink.list.hide();
        // handle add click
        $(button).click(function(){
            $.fn.MultiLink.addLink('','');
        });
    };
    $.fn.MultiLink.options = {
        novalmsg : 'no_link_defined',
        name_message : 'Choose aname for this link',
        holder : '.linkListHolder',
        languages : false,
        defaultLang : 'EN'
    };
    $.fn.MultiLink.list = null;
    $.fn.MultiLink.languages = null;
    $.extend($.fn.MultiLink, {
        addLink : function(url,name,lang,id){
            if(!lang){
                lang = $.fn.MultiLink.defaultLang;
            }
            var sz = $('.multilink').size();
            var
            r = $('<div class="multilink"></div>'),
            astr = '<table>'+
            	  '<tr>'+'<td class="addFiles2">URL</td>'
            	  +'<td class="addFiles">name</td>'
            	  +'<td class="addFiles">lang</td>'
            	  +'<td class="addFiles" rowspan="2" valign="middle"></td>'
            	  +'</tr>'
            	  +'<tr>'
            	  +'<td class="addFiles2">'
            	  +'<input type="text" name="links['+sz+'].url" value="'+url+'" style="width:90%;"/></td>'
            	  +'<td class="addFiles"><input type="text" value="'+name+'" name="links['+sz+'].name" style="width:90%;"/></td>'
            	  +'<td class="addFiles" style="vertical-align:top;padding-top:3px;"><select name="links['+sz+'].lang">';
            for(var tlang in $.fn.MultiLink.languages){
                astr += '<option value="'+tlang+'">'+$.fn.MultiLink.languages[tlang]+'</option>';
            }
            astr +='</select>'+
                  (id?'<input type="hidden" name="links['+sz+'].id" value="'+id+'"/>':'')+ // if an id was given add it
                  '</td></tr></table>';
            a = $(astr);
            b = $('<a href="#"><span class="linkEntryRemove" title="click to remove link">&nbsp;</span></a>');
           // add remove entry to first td
           a.find('tr').first().find('td').last().append(b);
           a.find('[name=links['+sz+'].lang] option[value='+lang.toUpperCase()+']').attr('selected',true);
           // add table to list
           $.fn.MultiLink.list.append(
            r.append(a)
           );
           // show list if it was hidden
           $.fn.MultiLink.list.show();
           // handle click on remove
           b.click(function(){
              $(this).closest('.multilink').remove();
              if($.fn.MultiLink.list.children().size()==0){
                  $.fn.MultiLink.list.hide();
              }
           });
        }
    });
/*# AVOID COLLISIONS #*/
})(jQuery);
/*# AVOID COLLISIONS #*/

