diff options
author | xzilla | 2006-06-27 02:41:38 +0000 |
---|---|---|
committer | xzilla | 2006-06-27 02:41:38 +0000 |
commit | 5e0e29c84f01bb08272f999ba89b981cdcc07971 (patch) | |
tree | a8e51a78cf7640c47f55b65e8a5cda8009116f89 /functions.js | |
parent | 0a7f94f4dd78eea95bcc367588c62f8f663340f0 (diff) |
Add's ability for in/out parameters as per 8.1. Allows for 0...n arguments for functions, dynamically
created. Patch from John Jay for SoC, cleaned up somewhat by me.
Diffstat (limited to 'functions.js')
-rw-r--r-- | functions.js | 205 |
1 files changed, 205 insertions, 0 deletions
diff --git a/functions.js b/functions.js new file mode 100644 index 00000000..8b53d292 --- /dev/null +++ b/functions.js @@ -0,0 +1,205 @@ +var g_args = 0; +var g_no_args = new Boolean(false); +/* +function for adding arguments +*/ + +function addArg() { + var baseTR = baseArgTR(); + if(document.getElementById("args_table").insertBefore(baseTR,document.getElementById("parent_add_tr"))) { + g_args++; + return baseTR; + } +} + +function buildArgImages(orig_td) { + var table = document.createElement("table"); + var tbody = document.createElement("tbody"); + var tr = document.createElement("tr"); + var td = document.createElement("td"); + var img = document.createElement("img"); + img.src="images/themes/default/RaiseArgument.png"; + td.onmouseover=function() { this.style.cursor='pointer';this.title=g_lang_strargraise; } + td.onclick=function() { swapArgTR(this.parentNode.parentNode.parentNode.parentNode.parentNode.previousSibling,this.parentNode.parentNode.parentNode.parentNode.parentNode); } + img.className='arg_icon'; + td.appendChild(img); + td.className="data1"; + tr.appendChild(td); + var img = document.createElement("img"); + var td = document.createElement("td"); + img.src="images/themes/default/LowerArgument.png"; + img.className='arg_icon'; + td.appendChild(img); + td.className="data1"; + td.onmouseover=function() { this.style.cursor='pointer';this.title=g_lang_strarglower; } + td.onclick=function() { swapArgTR(this.parentNode.parentNode.parentNode.parentNode.parentNode,this.parentNode.parentNode.parentNode.parentNode.parentNode.nextSibling); } + tr.appendChild(td); + var img = document.createElement("img"); + var td = document.createElement("td"); + img.src="images/themes/default/RemoveArgument.png"; + img.title=g_lang_strargremove; + img.className='arg_icon'; + td.appendChild(img); + td.className="data1"; + td.onmouseover=function() { this.style.cursor='pointer';this.title='Remove'; } + td.onclick=function() { if(g_args>1) { if(confirm(g_lang_strargremoveconfirm)) document.getElementById("args_table").removeChild(this.parentNode.parentNode.parentNode.parentNode.parentNode);g_args--; } else { + if(g_no_args==false) { + disableArgTR(this.parentNode.parentNode.parentNode.parentNode.parentNode); + this.childNodes[0].src='images/themes/default/EnableArgument.png'; + this.childNodes[0].title=g_lang_strargenableargs; + this.childNodes[0].id="1st_arg_iag"; + alert(g_lang_strargnoargs); + g_no_args = true; + g_args--; + } else { + enableArgTR(this.parentNode.parentNode.parentNode.parentNode.parentNode); + this.childNodes[0].src='images/themes/default/RemoveArgument.png'; + this.childNodes[0].title=g_lang_strargremove; + g_args++; + g_no_args = false; + document.getElementById("formEmptyArgs").value="0"; + } + } + } + td.onmouseout=function() { } + if(g_args==0) { + td.id="1st_arg_td"; + } + tr.className='arg_tr_pc'; + tr.appendChild(td); + tbody.appendChild(tr); + table.appendChild(tbody); + orig_td.appendChild(table); + return orig_td; +} + +function noArgsRebuild(tr) { + disableArgTR(tr); + var td = document.getElementById("1st_arg_td"); + td.childNodes[0].src='images/themes/default/EnableArgument.png'; + td.childNodes[0].title=g_lang_strargenableargs; + td.childNodes[0].id="1st_arg_iag"; + g_no_args = true; + g_args--; +} + +function swapArgTR(first,second) { + var tmp = null; + tmp = second; + second = first; + first = tmp; + if(first.className=='arg_tr_pc' && second.className=='arg_tr_pc') { + document.getElementById("args_table").insertBefore(first,second); + } else if(first.className=='arg_tr_pc' && second.className!='arg_tr_pc') { + alert(g_lang_strargnorowabove); + } else if(first.className!='arg_tr_pc' && second.className=='arg_tr_pc') { + alert(g_lang_strargnorowbelow); + } +} + +function disableArgTR(tr) { + var children = (tr.childNodes); + for(i in children) { + var secondary_children = children[i].childNodes; + for(i2 in secondary_children) { + secondary_children[i2].disabled=true; + } + } +} + +function enableArgTR(tr) { + var children = (tr.childNodes); + for(i in children) { + var secondary_children = children[i].childNodes; + for(i2 in secondary_children) { + secondary_children[i2].disabled=false; + } + } +} + +function RebuildArgTR(mode,arg_name,arg_type,arg_array) { + var tr = document.createElement("tr"); + var td = document.createElement("td"); + var modes_select = buildSelect("formArgModes[]",g_main_modes,mode); + modes_select.style.width='100%'; + td.appendChild(modes_select); + tr.appendChild(td); + var arg_txt = document.createElement("input"); + arg_txt.type='text'; + arg_txt.name='formArgName[]'; + arg_txt.style.width='100%'; + arg_txt.value=arg_name; + var td = document.createElement("td"); + td.appendChild(arg_txt); + tr.appendChild(td); + var td = document.createElement("td"); + td.appendChild(buildSelect("formArgType[]",g_main_types,arg_type)); + if(arg_array==true) { + var szArr = "[]"; + } else { + var szArr = ""; + } + td.appendChild(buildSelect("formArgArray[]",new Array("","[]"),szArr)); + tr.appendChild(td); + var td = document.createElement("td"); + td = buildArgImages(td); + td.className="data3"; + tr.className='arg_tr_pc'; + tr.appendChild(td); + if(document.getElementById("args_table").insertBefore(tr,document.getElementById("parent_add_tr"))) { + g_args++; + } +} + +function buildSelect(name,options,selected) { + var s = document.createElement('select'); + for(i=0;i<options.length;i++) { + var o = document.createElement('option'); + o.value=options[i]; + o.text=options[i]; + if(options[i].toLowerCase()==selected.toLowerCase()) { + o.selected="selected"; + } + s.appendChild(o); + } + s.name=name; + return s; +} + +function baseArgTR() { + if(g_no_args==false) { + var tr = document.createElement("tr"); + var td = document.createElement("td"); + var txt = document.createElement("input"); + tr.className='arg_tr_pc'; + td.className='data3'; + td.innerHTML = g_modes_select; + tr.appendChild(td); + txt.type='text'; + txt.name='formArgName[]'; + txt.style.width='100%'; + txt.value=g_name; + var td = document.createElement("td"); + td.className='data3'; + td.appendChild(txt); + tr.appendChild(td); + var td = document.createElement("td"); + td.className='data3'; + td.innerHTML = g_types_select; + tr.appendChild(td); + var td = document.createElement("td"); + td = buildArgImages(td); + td.className="data3"; + tr.appendChild(td); + if(g_args==0) { + tr.id="1st_arg_tr"; + } + return tr; + } else { + var p_tr = document.getElementById("1st_arg_tr"); + enableArgTR(p_tr.childNodes[4]); + document.getElementById("1st_arg_iag").src='images/themes/default/RemoveArgument.png'; + g_args++; + g_no_args = false; + } +} |