var undoHistory = new Array(); // global hashmap var edits = 0; // nr of fields being edited // Memento constructor function Memento(lbl, lnk, oldval) { this.labelClass=lbl; this.linkText=lnk; this.oldValue=oldval; } /* LANGUAGE SUPPORT */ function setLanguage(lc) { var expiry = new Date(); expiry.setTime(expiry.getTime()+1000*3600*24*900); document.cookie = 'lang=' + lc + '; expires=' + expiry.toGMTString() + '; path=/'; location.reload(); } /* IDENTIFICATION */ function editRef(el) { var lnk=$(el).children("a.dataAction"); var ref=$(el).children("span.reference"); var form=$(el).children("span.form"); if(el.substring(0, 4) == "#cla") { var idx=el.substring(4); var prefix='cla'; } else if(el.substring(0, 4) == "#def") { var idx=el.substring(4); var prefix='def'; } else if(el.substring(0, 8) == "#law_cla") { var idx=el.substring(8); var prefix='law_cla'; } else if(el.substring(0, 8) == "#law_def") { var idx=el.substring(8); var prefix='law_def'; } // Remember label class var labelId="#"+prefix+"Lbl"; undoHistory[el]=new Array(); undoHistory[el][0]=labelId; undoHistory[el][1]=$(labelId).attr("class"); $(labelId).attr("class", "labelHi"); // edit -> undo (reversing these two lines breaks it??) lnk.attr("href", "javascript:cancelEditParty('"+el+"', 'reference');"); lnk.attr("title", "undo"); lnk.children("img").attr("src", "../img/undo.gif"); // Toggle between coordinates and form view ref.hide(); form.show(); // Create form form.empty(); form.append("
Reference:
"); $(".saveButton").show(); // Provision form form.ready( function() { $(document.forms[0].elements[prefix+"_ref["+idx+"]"]).val($("#"+prefix+"_ref"+idx).text()); document.forms[0].elements[prefix+"_ref["+idx+"]"].focus() }); ++edits; } function editParty(el) { var lnk=$(el).children("a.dataAction"); var coord=$(el).children("span.coordinates"); var form=$(el).children("span.form"); var ref=$(el).children("span.reference"); if(el.substring(0, 4) == "#cla") { var idx=el.substring(4); var prefix='cla'; } else if(el.substring(0, 4) == "#def") { var idx=el.substring(4); var prefix='def'; } else if(el.substring(0, 8) == "#law_cla") { var idx=el.substring(8); var prefix='law_cla'; } else if(el.substring(0, 8) == "#law_def") { var idx=el.substring(8); var prefix='law_def'; } // Remember label class var labelId="#"+prefix+"Lbl"; undoHistory[el]=new Array(); undoHistory[el][0]=labelId; undoHistory[el][1]=$(labelId).attr("class"); $(labelId).attr("class", "labelHi"); // edit -> undo (reversing these two lines breaks it??) lnk.attr("href", "javascript:cancelEditParty('"+el+"', 'coordinates');"); lnk.attr("title", "undo"); lnk.children("img").attr("src", "../img/undo.gif"); // Toggle between coordinates and form view coord.hide(); form.show(); ref.hide(); // Create form form.empty(); form.append("(name)
"); form.append("(street+nr)
"); form.append(""); form.append("(zip+city)
"); form.append("
"); form.append("
"); form.append(""); form.append("
"); form.append("

"); if(prefix.substring(0,3) != "law") { form.append("
Company nr:
"); } form.append("
Reference:
"); if(prefix.substring(0,3) == "cla") { form.append("
Language:
"); } $(".saveButton").show(); // Provision form form.ready( function() { $(document.forms[0].elements[prefix+"_name["+idx+"]"]).val($("#"+prefix+"_name"+idx).text()); $(document.forms[0].elements[prefix+"_street["+idx+"]"]).val($("#"+prefix+"_street"+idx).text()); $(document.forms[0].elements[prefix+"_zip["+idx+"]"]).val($("#"+prefix+"_zip"+idx).text()); $(document.forms[0].elements[prefix+"_city["+idx+"]"]).val($("#"+prefix+"_city"+idx).text()); $(document.forms[0].elements[prefix+"_country["+idx+"]"]).val($("#"+prefix+"_country"+idx).text()); $(document.forms[0].elements[prefix+"_phone["+idx+"]"]).val($("#"+prefix+"_phone"+idx).text()); $(document.forms[0].elements[prefix+"_fax["+idx+"]"]).val($("#"+prefix+"_fax"+idx).text()); $(document.forms[0].elements[prefix+"_email["+idx+"]"]).val($("#"+prefix+"_email"+idx).text()); $(document.forms[0].elements[prefix+"_companynr["+idx+"]"]).val($("#"+prefix+"_companynr"+idx).text()); $(document.forms[0].elements[prefix+"_ref["+idx+"]"]).val($("#"+prefix+"_ref"+idx).text()); populateCountryList(document.forms[0].elements[prefix+"_country["+idx+"]"], $("#"+prefix+"_country"+idx).text()); if(prefix.substring(0,3) == "cla") { populateLanguageList(document.forms[0].elements[prefix+"_language["+idx+"]"], $("#"+prefix+"_language"+idx).text()); } document.forms[0].elements[prefix+"_name["+idx+"]"].focus() }); ++edits; } function cancelEditParty(el, spanClass) { var lnk=$(el).children("a.dataAction"); var span=$(el).children("span."+spanClass); var form=$(el).children("span.form"); var ref=$(el).children("span.reference"); // Restore label class if(undoHistory[el]) { $(undoHistory[el][0]).attr("class", undoHistory[el][1]); undoHistory[el]=null; } // undo -> edit if(spanClass=="coordinates") lnk.attr("href", "javascript:editParty('"+el+"');"); else if(spanClass=="reference") lnk.attr("href", "javascript:editRef('"+el+"');"); lnk.attr("title", "edit"); lnk.children("img").attr("src", "../img/pencil.gif"); // Toggle between coordinates and form view form.toggle(); span.toggle(); ref.toggle(); // Remove form form.empty(); if(!--edits) { $(".saveButton").hide(); } } /* PROCEDURE/RESULT/... */ function edit() { var focused=""; var arglist="'"+arguments[0]+"'"; for(var i=1; i=0; i--) { undoHistory[arguments[i]]=new Memento( $(arguments[0]+"Lbl").attr("class"), $(arguments[0]+"Lnk").attr("title"), $(arguments[i]+"Val").html()); var className = $(arguments[i]+"Val").attr("class"); if(className == "dateField") { focused=editDate(arguments[i], -1); } else if(className == "textField") { focused=editTextField(arguments[i]); } else if(className == "textArea") { focused=editTextArea(arguments[i], -1); } else if(className == "msgDate") { focused=editMsgDate(arguments[i]); } else if(className == "msgArea") { focused=editMsgArea(arguments[i]); } $(arguments[i]+"Lbl").removeClass("labelLo"); $(arguments[i]+"Lbl").addClass("labelHi"); $(arguments[i]+"Lnk").attr("href", "javascript:cancelEdit("+arglist+");"); $(arguments[i]+"Lnk").attr("title", "undo"); $(arguments[i]+"Lnk > img").attr("src", "../img/undo.gif"); } $(".saveButton").show(); // focus last enabled field // note: IE need some time to dyn. construct the input field $(document.forms[0]).ready( function() { if(focused) { document.forms[0].elements[focused].focus(); } }); } function cancelEdit() { var arglist="'"+arguments[0]+"'"; for(var i=1; i img").attr("src", "../img/pencil.gif"); $(arguments[0]+"Lnk").attr("title", undoHistory[arguments[0]].linkText); $(arguments[0]+"Lnk").attr("href", "javascript:edit("+arglist+");"); for(var i=0; i < arguments.length; i++) { edits--; $(arguments[i]+"Val").empty(); $(arguments[i]+"Val").append(undoHistory[arguments[i]].oldValue); undoHistory[arguments[i]]=null; } if(!edits) { $(".saveButton").hide(); } } function editDate(el, idx) { edits++; var val=$(el+"Val").text(); var name_d=(idx!=-1 ? el.substring(1)+"_d["+idx+"]" : el.substring(1)+"_d"); var name_m=(idx!=-1 ? el.substring(1)+"_m["+idx+"]" : el.substring(1)+"_m"); var name_y=(idx!=-1 ? el.substring(1)+"_y["+idx+"]" : el.substring(1)+"_y"); if(val) { dd=val.substring(0,2); mm=val.substring(3,5); yy=val.substring(6,8); } else dd=mm=yy=""; $(el+"Lbl").removeClass("labelLo"); $(el+"Lbl").addClass("labelHi"); $(el+"Val").empty(); $(el+"Val").append("/"); $(el+"Val").append("/"); $(el+"Val").append(" "); $(el+"Val").append("(dd/mm/yy)"); return name_d; } function editTextField(el) { edits++; var val=$(el+"Val").text(); $(el+"Val").empty(); $(el+"Val").append(""); return el.substring(1); } function editTextArea(el, idx) { edits++; var val=$(el+"Val").html().replace(//gi,"\n"); var name=(idx!=-1 ? el.substring(1)+"["+idx+"]" : el.substring(1)); $(el+"Val").empty(); $(el+"Val").append(""); return name; } function editMsgDate(el) { // determine new msg index var last=$(el+"Val").parent("li").siblings("li").length; var focused=editDate(el, last); $(el+"Val > input:eq(0)").css("margin-top", "10px"); return focused; } function editMsgArea(el) { // determine new msg index var last=$(el+"Val").parent("li").siblings("li").length; var fieldName=el.substring(1); // strip leading # var focused=editTextArea(el, last); var theTextArea = $(el+"Val > textarea"); theTextArea.css("width", "295px").css("height", "100px").css("margin-top", "10px"); theTextArea.keyup(function () { updateRemaining(theTextArea, el+"Rem"); }); theTextArea.change(function () { updateRemaining(theTextArea, el+"Rem"); }); $(el+"Val").append("
text cannot be changed after you've clicked Save."); $(el+"Val").append("
characters remaining: 1000"); return focused; } function updateRemaining(jqTextArea, remSpan) { var maxlen=1000; var remaining=maxlen-jqTextArea.val().length; if(remaining < 0) // clip { jqTextArea.val(jqTextArea.val().substring(0, maxlen)); remaining=0; } $(remSpan).empty(); $(remSpan).append(""+remaining); } function readMessage(el) { $(el).children("span:eq(0)").remove(); $(el).children("span:eq(0)").show(); // 1 becomes 0 because of removal } /* COUNTRIIES */ function populateCountryList(list, sel) { $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).ready( function() { $(list).val(sel); }); } /* LANGUAGES */ function populateLanguageList(list, sel) { $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).append(""); $(list).ready( function() { $(list).val(sel); }); }