Bug 70605 - Event fixes for IE
git-svn-id: svn://svn.office.custis.ru/3rdparty/bugzilla.org/trunk@1308 6955db30-a419-402b-8a0d-67ecbb4d7f56master
parent
14ff6bb804
commit
fa82659c5a
418
js/charts.js
418
js/charts.js
|
@ -72,421 +72,9 @@ function chart_copy_select(cp_id, new_id)
|
|||
{
|
||||
var s = document.createElement('select');
|
||||
s.id = s.name = new_id;
|
||||
s.innerHTML = document.getElementById(cp_id).innerHTML;
|
||||
s.selectedIndex = 0;
|
||||
return s;
|
||||
}
|
||||
|
||||
// Add another term into chart when clicked on button with id=btnid
|
||||
function chart_add(btnid)
|
||||
{
|
||||
var d, i, add_and, add_or, n;
|
||||
d = document.getElementById(btnid.substr(0, btnid.length-4)); // chartN-btn
|
||||
if (d.id == 'chartR')
|
||||
add_and = d = chart_add_div(d, 'chart');
|
||||
if (d.id.indexOf('-') < 0)
|
||||
add_or = d = chart_add_div(d, d.id+'-');
|
||||
var cn = d.id.substr(5);
|
||||
for (i = 0; document.getElementById('field'+cn+'-'+i); i++);
|
||||
cn = cn+'-'+i;
|
||||
if (!add_or)
|
||||
d.appendChild(document.createElement('br'));
|
||||
// Append field-type-value inputs
|
||||
d.appendChild(chart_copy_select('field0-0-0', 'field'+cn));
|
||||
d.appendChild(chart_copy_select('type0-0-0', 'type'+cn));
|
||||
s = document.createElement('input');
|
||||
s.id = s.name = "value"+cn;
|
||||
s.size = 40;
|
||||
d.appendChild(s);
|
||||
if (add_and)
|
||||
{
|
||||
chart_add_btn(add_and, 'AND');
|
||||
// Add negate button
|
||||
var n = add_and.id.substr(5);
|
||||
var i = document.createElement('input');
|
||||
i.type = 'button';
|
||||
i.className = 'chart_not_u';
|
||||
i.id = 'negate'+n+'-btn';
|
||||
i.onclick = chart_neg_event;
|
||||
i.value = 'NOT';
|
||||
add_and.appendChild(i);
|
||||
// Add hidden input for negate button
|
||||
i = document.createElement('input');
|
||||
i.type = 'hidden';
|
||||
i.name = i.id = 'negate'+n;
|
||||
document.getElementById('chartR').appendChild(i);
|
||||
}
|
||||
if (add_or)
|
||||
chart_add_btn(add_or, 'OR');
|
||||
}
|
||||
|
||||
function chart_neg(btn)
|
||||
{
|
||||
var n = btn.id.substr(6, btn.id.length-10); // negateN
|
||||
var i = document.getElementById('negate'+n);
|
||||
i.value = i.value ? '' : '1';
|
||||
btn.className = 'chart_not_' + (i.value ? 'c' : 'u');
|
||||
var c = document.getElementById('chart'+n);
|
||||
if (i.value)
|
||||
c.className += ' _neg';
|
||||
else
|
||||
c.className = c.className.replace(/ _neg/, '');
|
||||
}
|
||||
|
||||
function chart_add_second_event()
|
||||
{
|
||||
chart_add_second(this);
|
||||
}
|
||||
|
||||
function chart_neg_event()
|
||||
{
|
||||
chart_neg(this);
|
||||
}
|
||||
function chart_add_second(btn)
|
||||
{
|
||||
var n = btn.id.substr(5, btn.id.length-9);
|
||||
// Transform <div> to <fieldset>
|
||||
var d = document.getElementById('chart'+n);
|
||||
d.id = 'divchart'+n; // prevent id collisions
|
||||
btn.id = 'btnchart'+n; // prevent id collisions
|
||||
var op = (n != 'R' && n.indexOf('-') < 0 ? 'and' : 'or');
|
||||
// Create <fieldset>
|
||||
var f = document.createElement('fieldset');
|
||||
f.id = 'chart'+n;
|
||||
f.className = 'chart _'+op;
|
||||
var legend_html = op.toUpperCase()+' '+
|
||||
'<input type="button" value="+" class="chart_add_button" id="chart'+n+'-btn" onclick="chart_add(this.id)" />';
|
||||
if (op == 'and')
|
||||
{
|
||||
// Move [NOT] to the legend for 'AND' charts
|
||||
var neg = document.getElementById('negate'+n);
|
||||
legend_html +=
|
||||
'<input type="button" value="NOT" class="chart_not_'+(neg.value ? 'c' : 'u')+'"'+
|
||||
' style="font-size: 85%" id="negate'+n+'-btn" onclick="chart_neg(this)" />';
|
||||
if (neg.value)
|
||||
f.className += ' _neg';
|
||||
neg = document.getElementById('negate'+n+'-btn');
|
||||
neg.parentNode.removeChild(neg);
|
||||
}
|
||||
// Create <legend>
|
||||
var l = document.createElement('legend');
|
||||
l.className = '_'+op;
|
||||
l.innerHTML = legend_html;
|
||||
f.appendChild(l);
|
||||
d.parentNode.insertBefore(f, d);
|
||||
btn.parentNode.removeChild(btn);
|
||||
d.parentNode.removeChild(d);
|
||||
while (d.childNodes.length)
|
||||
f.appendChild(d.childNodes[0]);
|
||||
// Add an operand
|
||||
chart_add('chart'+n+'-btn');
|
||||
}
|
||||
|
||||
function chart_add_btn(d, s)
|
||||
{
|
||||
var i = document.createElement('input');
|
||||
i.type = 'button';
|
||||
i.id = d.id+'-btn';
|
||||
i.onclick = chart_add_second_event;
|
||||
i.value = s;
|
||||
d.appendChild(document.createTextNode(' '));
|
||||
d.appendChild(i);
|
||||
}
|
||||
|
||||
// Find next available number for div with prefix 'n'
|
||||
function chart_add_div(d, n)
|
||||
{
|
||||
var i, nd;
|
||||
for (i = 0; document.getElementById(n+i); i++);
|
||||
nd = document.createElement('div');
|
||||
nd.id = n+i;
|
||||
nd.className = 'chart';
|
||||
d.appendChild(nd);
|
||||
return nd;
|
||||
}
|
||||
|
||||
// Copy 'fieldx-x-x' or 'typex-x-x' selectbox
|
||||
function chart_copy_select(cp_id, new_id)
|
||||
{
|
||||
var s = document.createElement('select');
|
||||
s.id = s.name = new_id;
|
||||
s.innerHTML = document.getElementById(cp_id).innerHTML;
|
||||
s.selectedIndex = 0;
|
||||
return s;
|
||||
}
|
||||
|
||||
// Add another term into chart when clicked on button with id=btnid
|
||||
function chart_add(btnid)
|
||||
{
|
||||
var d, i, add_and, add_or, n;
|
||||
d = document.getElementById(btnid.substr(0, btnid.length-4)); // chartN-btn
|
||||
if (d.id == 'chartR')
|
||||
add_and = d = chart_add_div(d, 'chart');
|
||||
if (d.id.indexOf('-') < 0)
|
||||
add_or = d = chart_add_div(d, d.id+'-');
|
||||
var cn = d.id.substr(5);
|
||||
for (i = 0; document.getElementById('field'+cn+'-'+i); i++);
|
||||
cn = cn+'-'+i;
|
||||
if (!add_or)
|
||||
d.appendChild(document.createElement('br'));
|
||||
// Append field-type-value inputs
|
||||
d.appendChild(chart_copy_select('field0-0-0', 'field'+cn));
|
||||
d.appendChild(chart_copy_select('type0-0-0', 'type'+cn));
|
||||
s = document.createElement('input');
|
||||
s.id = s.name = "value"+cn;
|
||||
s.size = 40;
|
||||
d.appendChild(s);
|
||||
if (add_and)
|
||||
{
|
||||
chart_add_btn(add_and, 'AND');
|
||||
// Add negate button
|
||||
var n = add_and.id.substr(5);
|
||||
var i = document.createElement('input');
|
||||
i.type = 'button';
|
||||
i.className = 'chart_not_u';
|
||||
i.id = 'negate'+n+'-btn';
|
||||
i.onclick = chart_neg_event;
|
||||
i.value = 'NOT';
|
||||
add_and.appendChild(i);
|
||||
// Add hidden input for negate button
|
||||
i = document.createElement('input');
|
||||
i.type = 'hidden';
|
||||
i.name = i.id = 'negate'+n;
|
||||
document.getElementById('chartR').appendChild(i);
|
||||
}
|
||||
if (add_or)
|
||||
chart_add_btn(add_or, 'OR');
|
||||
}
|
||||
|
||||
function chart_neg(btn)
|
||||
{
|
||||
var n = btn.id.substr(6, btn.id.length-10); // negateN
|
||||
var i = document.getElementById('negate'+n);
|
||||
i.value = i.value ? '' : '1';
|
||||
btn.className = 'chart_not_' + (i.value ? 'c' : 'u');
|
||||
var c = document.getElementById('chart'+n);
|
||||
if (i.value)
|
||||
c.className += ' _neg';
|
||||
else
|
||||
c.className = c.className.replace(/ _neg/, '');
|
||||
}
|
||||
|
||||
function chart_add_second_event()
|
||||
{
|
||||
chart_add_second(this);
|
||||
}
|
||||
|
||||
function chart_neg_event()
|
||||
{
|
||||
chart_neg(this);
|
||||
}
|
||||
function chart_add_second(btn)
|
||||
{
|
||||
var n = btn.id.substr(5, btn.id.length-9);
|
||||
// Transform <div> to <fieldset>
|
||||
var d = document.getElementById('chart'+n);
|
||||
d.id = 'divchart'+n; // prevent id collisions
|
||||
btn.id = 'btnchart'+n; // prevent id collisions
|
||||
var op = (n != 'R' && n.indexOf('-') < 0 ? 'and' : 'or');
|
||||
// Create <fieldset>
|
||||
var f = document.createElement('fieldset');
|
||||
f.id = 'chart'+n;
|
||||
f.className = 'chart _'+op;
|
||||
var legend_html = op.toUpperCase()+' '+
|
||||
'<input type="button" value="+" class="chart_add_button" id="chart'+n+'-btn" onclick="chart_add(this.id)" />';
|
||||
if (op == 'and')
|
||||
{
|
||||
// Move [NOT] to the legend for 'AND' charts
|
||||
var neg = document.getElementById('negate'+n);
|
||||
legend_html +=
|
||||
'<input type="button" value="NOT" class="chart_not_'+(neg.value ? 'c' : 'u')+'"'+
|
||||
' style="font-size: 85%" id="negate'+n+'-btn" onclick="chart_neg(this)" />';
|
||||
if (neg.value)
|
||||
f.className += ' _neg';
|
||||
neg = document.getElementById('negate'+n+'-btn');
|
||||
neg.parentNode.removeChild(neg);
|
||||
}
|
||||
// Create <legend>
|
||||
var l = document.createElement('legend');
|
||||
l.className = '_'+op;
|
||||
l.innerHTML = legend_html;
|
||||
f.appendChild(l);
|
||||
d.parentNode.insertBefore(f, d);
|
||||
btn.parentNode.removeChild(btn);
|
||||
d.parentNode.removeChild(d);
|
||||
while (d.childNodes.length)
|
||||
f.appendChild(d.childNodes[0]);
|
||||
// Add an operand
|
||||
chart_add('chart'+n+'-btn');
|
||||
}
|
||||
|
||||
function chart_add_btn(d, s)
|
||||
{
|
||||
var i = document.createElement('input');
|
||||
i.type = 'button';
|
||||
i.id = d.id+'-btn';
|
||||
i.onclick = chart_add_second_event;
|
||||
i.value = s;
|
||||
d.appendChild(document.createTextNode(' '));
|
||||
d.appendChild(i);
|
||||
}
|
||||
|
||||
// Find next available number for div with prefix 'n'
|
||||
function chart_add_div(d, n)
|
||||
{
|
||||
var i, nd;
|
||||
for (i = 0; document.getElementById(n+i); i++);
|
||||
nd = document.createElement('div');
|
||||
nd.id = n+i;
|
||||
nd.className = 'chart';
|
||||
d.appendChild(nd);
|
||||
return nd;
|
||||
}
|
||||
|
||||
// Copy 'fieldx-x-x' or 'typex-x-x' selectbox
|
||||
function chart_copy_select(cp_id, new_id)
|
||||
{
|
||||
var s = document.createElement('select');
|
||||
s.id = s.name = new_id;
|
||||
s.innerHTML = document.getElementById(cp_id).innerHTML;
|
||||
s.selectedIndex = 0;
|
||||
return s;
|
||||
}
|
||||
|
||||
// Add another term into chart when clicked on button with id=btnid
|
||||
function chart_add(btnid)
|
||||
{
|
||||
var d, i, add_and, add_or, n;
|
||||
d = document.getElementById(btnid.substr(0, btnid.length-4)); // chartN-btn
|
||||
if (d.id == 'chartR')
|
||||
add_and = d = chart_add_div(d, 'chart');
|
||||
if (d.id.indexOf('-') < 0)
|
||||
add_or = d = chart_add_div(d, d.id+'-');
|
||||
var cn = d.id.substr(5);
|
||||
for (i = 0; document.getElementById('field'+cn+'-'+i); i++);
|
||||
cn = cn+'-'+i;
|
||||
if (!add_or)
|
||||
d.appendChild(document.createElement('br'));
|
||||
// Append field-type-value inputs
|
||||
d.appendChild(chart_copy_select('field0-0-0', 'field'+cn));
|
||||
d.appendChild(chart_copy_select('type0-0-0', 'type'+cn));
|
||||
s = document.createElement('input');
|
||||
s.id = s.name = "value"+cn;
|
||||
s.size = 40;
|
||||
d.appendChild(s);
|
||||
if (add_and)
|
||||
{
|
||||
chart_add_btn(add_and, 'AND');
|
||||
// Add negate button
|
||||
var n = add_and.id.substr(5);
|
||||
var i = document.createElement('input');
|
||||
i.type = 'button';
|
||||
i.className = 'chart_not_u';
|
||||
i.id = 'negate'+n+'-btn';
|
||||
i.onclick = chart_neg_event;
|
||||
i.value = 'NOT';
|
||||
add_and.appendChild(i);
|
||||
// Add hidden input for negate button
|
||||
i = document.createElement('input');
|
||||
i.type = 'hidden';
|
||||
i.name = i.id = 'negate'+n;
|
||||
document.getElementById('chartR').appendChild(i);
|
||||
}
|
||||
if (add_or)
|
||||
chart_add_btn(add_or, 'OR');
|
||||
}
|
||||
|
||||
function chart_neg(btn)
|
||||
{
|
||||
var n = btn.id.substr(6, btn.id.length-10); // negateN
|
||||
var i = document.getElementById('negate'+n);
|
||||
i.value = i.value ? '' : '1';
|
||||
btn.className = 'chart_not_' + (i.value ? 'c' : 'u');
|
||||
var c = document.getElementById('chart'+n);
|
||||
if (i.value)
|
||||
c.className += ' _neg';
|
||||
else
|
||||
c.className = c.className.replace(/ _neg/, '');
|
||||
}
|
||||
|
||||
function chart_add_second_event()
|
||||
{
|
||||
chart_add_second(this);
|
||||
}
|
||||
|
||||
function chart_neg_event()
|
||||
{
|
||||
chart_neg(this);
|
||||
}
|
||||
function chart_add_second(btn)
|
||||
{
|
||||
var n = btn.id.substr(5, btn.id.length-9);
|
||||
// Transform <div> to <fieldset>
|
||||
var d = document.getElementById('chart'+n);
|
||||
d.id = 'divchart'+n; // prevent id collisions
|
||||
btn.id = 'btnchart'+n; // prevent id collisions
|
||||
var op = (n != 'R' && n.indexOf('-') < 0 ? 'and' : 'or');
|
||||
// Create <fieldset>
|
||||
var f = document.createElement('fieldset');
|
||||
f.id = 'chart'+n;
|
||||
f.className = 'chart _'+op;
|
||||
var legend_html = op.toUpperCase()+' '+
|
||||
'<input type="button" value="+" class="chart_add_button" id="chart'+n+'-btn" onclick="chart_add(this.id)" />';
|
||||
if (op == 'and')
|
||||
{
|
||||
// Move [NOT] to the legend for 'AND' charts
|
||||
var neg = document.getElementById('negate'+n);
|
||||
legend_html +=
|
||||
'<input type="button" value="NOT" class="chart_not_'+(neg.value ? 'c' : 'u')+'"'+
|
||||
' style="font-size: 85%" id="negate'+n+'-btn" onclick="chart_neg(this)" />';
|
||||
if (neg.value)
|
||||
f.className += ' _neg';
|
||||
neg = document.getElementById('negate'+n+'-btn');
|
||||
neg.parentNode.removeChild(neg);
|
||||
}
|
||||
// Create <legend>
|
||||
var l = document.createElement('legend');
|
||||
l.className = '_'+op;
|
||||
l.innerHTML = legend_html;
|
||||
f.appendChild(l);
|
||||
d.parentNode.insertBefore(f, d);
|
||||
btn.parentNode.removeChild(btn);
|
||||
d.parentNode.removeChild(d);
|
||||
while (d.childNodes.length)
|
||||
f.appendChild(d.childNodes[0]);
|
||||
// Add an operand
|
||||
chart_add('chart'+n+'-btn');
|
||||
}
|
||||
|
||||
function chart_add_btn(d, s)
|
||||
{
|
||||
var i = document.createElement('input');
|
||||
i.type = 'button';
|
||||
i.id = d.id+'-btn';
|
||||
i.onclick = chart_add_second_event;
|
||||
i.value = s;
|
||||
d.appendChild(document.createTextNode(' '));
|
||||
d.appendChild(i);
|
||||
}
|
||||
|
||||
// Find next available number for div with prefix 'n'
|
||||
function chart_add_div(d, n)
|
||||
{
|
||||
var i, nd;
|
||||
for (i = 0; document.getElementById(n+i); i++);
|
||||
nd = document.createElement('div');
|
||||
nd.id = n+i;
|
||||
nd.className = 'chart';
|
||||
d.appendChild(nd);
|
||||
return nd;
|
||||
}
|
||||
|
||||
// Copy 'fieldx-x-x' or 'typex-x-x' selectbox
|
||||
function chart_copy_select(cp_id, new_id)
|
||||
{
|
||||
var s = document.createElement('select');
|
||||
s.id = s.name = new_id;
|
||||
s.innerHTML = document.getElementById(cp_id).innerHTML;
|
||||
var o = document.getElementById(cp_id).options;
|
||||
for (var i = 0; i < o.length; i++)
|
||||
bz_createOptionInSelect(s, o[i].text, o[i].value);
|
||||
s.selectedIndex = 0;
|
||||
return s;
|
||||
}
|
||||
|
|
13
js/util.js
13
js/util.js
|
@ -254,7 +254,11 @@ window.addListener = function(obj, event, handler)
|
|||
if (obj.addEventListener)
|
||||
obj.addEventListener(event, handler, false);
|
||||
else if (obj.attachEvent)
|
||||
obj.attachEvent('on'+event, handler);
|
||||
{
|
||||
obj._attached = obj._attached || {};
|
||||
obj._attached[handler] = function() { handler.call(obj, window.event) };
|
||||
obj.attachEvent('on'+event, obj._attached[handler]);
|
||||
}
|
||||
};
|
||||
window.removeListener = function(obj, event, handler)
|
||||
{
|
||||
|
@ -264,8 +268,11 @@ window.removeListener = function(obj, event, handler)
|
|||
return;
|
||||
if (obj.addEventListener)
|
||||
obj.removeEventListener(event, handler, false);
|
||||
else if (obj.attachEvent)
|
||||
obj.detachEvent('on'+event, handler);
|
||||
else if (obj.attachEvent && obj._attached && obj._attached[handler])
|
||||
{
|
||||
obj.detachEvent('on'+event, obj._attached[handler]);
|
||||
obj._attached[handler] = null;
|
||||
}
|
||||
};
|
||||
window.eventTarget = function(ev)
|
||||
{
|
||||
|
|
|
@ -592,7 +592,7 @@ filter:mask();
|
|||
/* query form */
|
||||
.chart_add_button { font-size: 85%; }
|
||||
.chart { float: left; clear: left; }
|
||||
fieldset.chart { margin-bottom: 8px; }
|
||||
fieldset.chart { margin-bottom: 8px; padding: 0 8px 4px; }
|
||||
.chart select { margin: 0 4px 4px 0; background-color: white; }
|
||||
.chart._and, legend._and { background-color: #e0e0ff; }
|
||||
.chart._or, legend._or { background-color: #ffffe0; }
|
||||
|
|
Loading…
Reference in New Issue