function popUp(page,PWidth,PHeight,id) {
eval("designerwiz"+id+"=window.open('"+page+"','designerwiz1','toolbar=0,scrollbars=0,location=0,status=0,menubars=0,resizable=0,width="+PWidth+",height="+PHeight+"')")
}
function submitForm(f) {
var page = window.location.pathname.split(/\//).pop();
f.action = page;
if (f.onsubmit) f.onsubmit();
f.submit();
}
function clearDefaults(f, def) {
for (field in def) {
if (f.elements[field]) {
if (f.elements[field].length) {
for (var i = 0; i < f.elements[field].length; ++i)
if (f.elements[field][i].value == def[field])
f.elements[field][i].value = null;
} else if (f.elements[field].value == def[field]) {
f.elements[field].value = null;
}
}
}
}
function addSymbolCallback(containerid, name) {
var container = $(containerid);
return function(symbol, desc) {
if (!symbol.length || symbol == 'Symbol') return;
var symbols = typeof(symbol) == 'object' ? symbol : Array(symbol);
if (!desc) desc = symbol;
var descs = typeof(desc) == 'object' ? desc : Array(desc);
for (var i = 0; i < symbols.length; ++i) {
var id = 'symbolinput_' + container.childNodes.length;
var symcont = document.createElement('li');
symcont.id = id + '_cont';
if (JSTemplateName != 'responsive')
setSortableItemBehavior(symcont, null);
var input = document.createElement('input');
input.type = 'hidden';
input.name = name;
input.id = id;
input.value = symbols[i];
if (JSTemplateName == 'responsive') {
symcont.className = 'border';
var label = document.createElement('span');
label.htmlFor = id;
label.id = id + '_label';
label.innerHTML = ' ' + descs[i] + ' (' + symbols[i] + ')';
} else {
var label = document.createElement('label');
label.htmlFor = id;
label.id = id + '_label';
label.innerHTML = ' ' + descs[i] + ' (' + symbols[i] + ')';
}
symcont.appendChild(input);
symcont.appendChild(label);
symcont.appendChild(document.createElement('br'));
container.appendChild(symcont);
}
// Rebuild sortable
- messy
/* And apparently doesn't work.
var lastChanged = null;
Sortable.create(container, {
onChange: function(item) { lastChanged = item; },
onUpdate: highlightChildren
});
*/
}
}
function highlightChildren(elt) {
for (var i = 0; i < elt.childNodes.length; ++i)
new Effect.Highlight(elt.childNodes[i]);
}
function setSortableItemBehavior(elt, editPage) {
var objId = elt.id.substring(elt.id.indexOf('_') + 1);
Event.observe(elt, 'mousedown', function() {
elt.style.backgroundColor = '#FFFF99';
});
Event.observe(elt, 'mouseup', function() {
elt.style.backgroundColor = '#EEEEEE';
});
if (editPage)
Event.observe(elt, 'dblclick', function() {
window.location = editPage + '?id=' + objId;
});
}
// Set element behaviors
document.on('dom:loaded', function() {
$$('#menubar .menu').each(function(elt) {
elt.onmouseover = function() {
var items;
for (i = 0; i < elt.childNodes.length; ++i) {
if (elt.childNodes[i].nodeType == '1' && elt.childNodes[i].className.indexOf('menuitems') > -1) {
items = elt.childNodes[i];
break;
}
}
if (items)
items.style.display = 'block';
};
elt.onmouseout = function() {
var items;
for (i = 0; i < elt.childNodes.length; ++i) {
if (elt.childNodes[i].nodeType == '1' && elt.childNodes[i].className.indexOf('menuitems') > -1) {
items = elt.childNodes[i];
break;
}
}
if (items)
items.style.display = 'none';
};
});
$$('#menubar .menuitem a').each(function(elt) {
elt.onmouseover = function() {
addClass(elt, 'highlight_color');
};
elt.onmouseout = function() {
removeClass(elt, 'highlight_color');
};
});
$$('#sidebar li a').each(function(elt) {
elt.onmouseover = function() {
addClass(elt, 'sidehighlight_color');
};
elt.onmouseout = function() {
removeClass(elt, 'sidehighlight_color');
};
});
$$('ul.collapsible li a.selectable').each(function(elt) {
elt.onclick = function() {
var list = null;
for (var i = 0; i < elt.parentNode.childNodes.length; ++i) {
if (elt.parentNode.childNodes[i].nodeName == 'UL') {
list = elt.parentNode.childNodes[i];
break;
}
}
if (list) {
if (list.style.display) list.style.display = '';
else list.style.display = 'block';
return false;
}
};
});
$$('.symbolpicker').each(function(s) {
new SymbolPicker(s, '/data/symbol_autocomplete.php?type=Futures', {
autoSelect: true,
multiple: s.hasClassName('symbolpicker_multi')
});
});
$$('.symbolpicker_root').each(function(s) {
new SymbolPicker(s, '/data/symbol_autocomplete.php?type=Futures&root=1', {
autoSelect: true,
multiple: s.hasClassName('symbolpicker_multi')
});
});
$$('.submitnext').each(function(f) {
f.on('keydown', function(e) {
if (e.keyCode == Event.KEY_RETURN) {
var button = f.next('input[type=button],button,submit');
if (button) {
if (button.click) button.click();
else if (button.onclick) button.onclick();
else if (f.form) f.form.submit();
else return;
Event.stop(e);
}
}
}.bindAsEventListener(this));
});
$$('.expander').each(function(e) {
var hover = false;
var title = e.childElements()[0];
var content = title.next();
content.hide();
var arrow = new Element('img', {'src': '/images/right_arrow_outline.png',
'style': 'vertical-align: middle'});
title.insertBefore(arrow, title.firstChild);
var update = function() {
if (content.visible())
arrow.src = '/images/down_arrow_' + (hover ? 'filled' : 'outline') + '.png';
else
arrow.src = '/images/right_arrow_' + (hover ? 'filled' : 'outline') + '.png';
}
var toggle = function() {
if (content.visible())
content.hide();
else
content.show();
update();
}
title.style.cursor = 'pointer';
title.on('click', toggle);
title.on('mouseover', function() { hover = true; update(); });
title.on('mouseout', function() { hover = false; update(); });
});
$$('form.focusonload').each(function(elt) {
Form.focusFirstElement(elt);
});
$$('input.datepicker').each(function(elt) {
new Control.DatePicker(elt, { icon: '/images/calendar.png', locale: 'en_iso8601', template: JSTemplateName });
});
$$('input.colorpicker').each(function(elt) {
new Control.ColorPicker(elt, { icon: '/images/blank.gif' });
});
$$('ul.sortable').each(function(elt) {
Sortable.create(elt);
});
});
/* Backwards compatibility - Prototype wrappers */
function hasClass(elt, classname) {
elt = $(elt);
if (elt) return elt.hasClassName(classname);
return false;
}
function addClass(elt, classname) {
elt = $(elt);
if (elt) elt.addClassName(classname);
}
function removeClass(elt, classname) {
elt = $(elt);
if (elt) elt.removeClassName(classname);
}
function replaceClass(elt, oldClass, newClass) {
removeClass(elt, oldClass);
addClass(elt, newClass);
}
function hide(elId) {
elt = $(elId);
if (elt) elt.hide();
}
function removeElementById(id) {
var elt = $(id);
if (elt) elt.remove();
}
function isArray(obj) {
return Object.isArray(obj);
}
function sendHTTPRequest(url, callback, method) {
new Ajax.Request(url, {
method: method,
onComplete: callback
});
}
function sendJSONRequest(url, callback, method) {
sendHTTPRequest(url, function(request) {
callback(eval(request.responseText));
}, method);
}
function sendXMLRequest(url, callback, method) {
sendHTTPRequest(url, function(request) {
callback(request.responseXML);
}, method);
}
/* End backwords compatibility */
// Debug stuff
function replaceLink(link, text) {
var textNode = document.createTextNode(text);
link.parentNode.replaceChild(textNode, link);
}