paul@0 | 1 | // User Editing Utilities |
paul@0 | 2 | |
paul@0 | 3 | /** |
paul@0 | 4 | * for new users: |
paul@0 | 5 | * Depending on the input field which calls it, takes the value |
paul@0 | 6 | * and dispatches it to certain other input fields: |
paul@0 | 7 | * |
paul@0 | 8 | * address |
paul@0 | 9 | * +-> username |
paul@0 | 10 | * | `-> realname |
paul@0 | 11 | * `-> organisation |
paul@0 | 12 | */ |
paul@0 | 13 | function split_name(that) { |
paul@0 | 14 | var raw = that.value |
paul@0 | 15 | var val = trim(raw) |
paul@0 | 16 | if (val == '') { |
paul@0 | 17 | return |
paul@0 | 18 | } |
paul@0 | 19 | var username='' |
paul@0 | 20 | var realname='' |
paul@0 | 21 | var address='' |
paul@0 | 22 | switch (that.name) { |
paul@0 | 23 | case 'address': |
paul@0 | 24 | address=val |
paul@0 | 25 | break |
paul@0 | 26 | case 'username': |
paul@0 | 27 | username=val |
paul@0 | 28 | break |
paul@0 | 29 | case 'realname': |
paul@0 | 30 | realname=val |
paul@0 | 31 | break |
paul@0 | 32 | case 'firstname': |
paul@0 | 33 | case 'lastname': |
paul@0 | 34 | return |
paul@0 | 35 | default: |
paul@0 | 36 | alert('Ooops - unknown name field '+that.name+'!') |
paul@0 | 37 | return |
paul@0 | 38 | } |
paul@0 | 39 | var the_form = that.form; |
paul@0 | 40 | |
paul@0 | 41 | function field_empty(name) { |
paul@0 | 42 | return the_form[name].value == '' |
paul@0 | 43 | } |
paul@0 | 44 | |
paul@0 | 45 | // no break statements - on purpose! |
paul@0 | 46 | switch (that.name) { |
paul@0 | 47 | case 'address': |
paul@0 | 48 | var split1 = address.split('@') |
paul@0 | 49 | if (field_empty('username')) { |
paul@0 | 50 | username = split1[0] |
paul@0 | 51 | the_form.username.value = username |
paul@0 | 52 | } |
paul@0 | 53 | if (field_empty('organisation')) { |
paul@0 | 54 | the_form.organisation.value = default_organisation(split1[1]) |
paul@0 | 55 | } |
paul@0 | 56 | case 'username': |
paul@0 | 57 | if (field_empty('realname')) { |
paul@0 | 58 | realname = Cap(username.split('.').join(' ')) |
paul@0 | 59 | the_form.realname.value = realname |
paul@0 | 60 | } |
paul@0 | 61 | case 'realname': |
paul@0 | 62 | if (field_empty('username')) { |
paul@0 | 63 | username = Cap(realname.replace(' ', '.')) |
paul@0 | 64 | the_form.username.value = username |
paul@0 | 65 | } |
paul@0 | 66 | if (the_form.firstname && the_form.lastname) { |
paul@0 | 67 | var split2 = realname.split(' ') |
paul@0 | 68 | var firstname='', lastname='' |
paul@0 | 69 | firstname = split2[0] |
paul@0 | 70 | lastname = split2.slice(1).join(' ') |
paul@0 | 71 | if (field_empty('firstname')) { |
paul@0 | 72 | the_form.firstname.value = firstname |
paul@0 | 73 | } |
paul@0 | 74 | if (field_empty('lastname')) { |
paul@0 | 75 | the_form.lastname.value = lastname |
paul@0 | 76 | } |
paul@0 | 77 | } |
paul@0 | 78 | } |
paul@0 | 79 | } |
paul@0 | 80 | |
paul@0 | 81 | function SubCap(str) { |
paul@0 | 82 | switch (str) { |
paul@0 | 83 | case 'de': case 'do': case 'da': |
paul@0 | 84 | case 'du': case 'von': |
paul@0 | 85 | return str; |
paul@0 | 86 | } |
paul@0 | 87 | if (str.toLowerCase().slice(0,2) == 'mc') { |
paul@0 | 88 | return 'Mc'+str.slice(2,3).toUpperCase()+str.slice(3).toLowerCase() |
paul@0 | 89 | } |
paul@0 | 90 | return str.slice(0,1).toUpperCase()+str.slice(1).toLowerCase() |
paul@0 | 91 | } |
paul@0 | 92 | |
paul@0 | 93 | function Cap(str) { |
paul@0 | 94 | var liz = str.split(' ') |
paul@0 | 95 | for (var i=0; i<liz.length; i++) { |
paul@0 | 96 | liz[i] = SubCap(liz[i]) |
paul@0 | 97 | } |
paul@0 | 98 | return liz.join(' ') |
paul@0 | 99 | } |
paul@0 | 100 | |
paul@0 | 101 | /** |
paul@0 | 102 | * Takes a domain name (behind the @ part of an email address) |
paul@0 | 103 | * Customise this to handle the mail domains you're interested in |
paul@0 | 104 | */ |
paul@0 | 105 | function default_organisation(orga) { |
paul@0 | 106 | switch (orga.toLowerCase()) { |
paul@0 | 107 | case 'gmx': |
paul@0 | 108 | case 'yahoo': |
paul@0 | 109 | return '' |
paul@0 | 110 | default: |
paul@0 | 111 | return orga |
paul@0 | 112 | } |
paul@0 | 113 | } |
paul@0 | 114 | |