// Adminer specific functions
+/** Load syntax highlighting
+* @param string first three characters of MySQL version
+*/
function bodyLoad(version) {
var jushRoot = '../externals/jush/';
var script = document.createElement('script');
+/** Get value of select
+* @param HTMLSelectElement
+* @return string
+*/
function selectValue(select) {
return select.value || select.options[select.selectedIndex].text;
}
+/** Get value of dynamically created form field
+* @param HTMLFormElement
+* @param string
+* @return HTMLElement
+*/
function formField(form, name) {
for (var i=0; i < form.length; i++) {
if (form[i].name == name) {
}
}
+/** Try to change input type to password or to text
+* @param HTMLInputElement
+* @param boolean
+*/
function typePassword(el, disable) {
try {
el.type = (disable ? 'text' : 'password');
var added = '.', rowCount;
+/** Escape string to use in regular expression
+* @param string
+* @return string
+*/
function reEscape(s) {
return s.replace(/[\[\]\\^$*+?.(){|}]/, '\\$&');
}
+/** Escape string to use as identifier
+* @param string
+* @return string
+*/
function idfEscape(s) {
return '`' + s.replace(/`/, '``') + '`';
}
+/** Detect foreign key
+* @param HTMLInputElement
+*/
function editingNameChange(field) {
var name = field.name.substr(0, field.name.length - 7);
var type = formField(field.form, name + '[type]');
}
}
+/** Add table row for next field
+* @param HTMLInputElement
+* @param boolean
+* @param boolean
+* @return boolean
+*/
function editingAddRow(button, allowed, focus) {
if (allowed && rowCount >= allowed) {
return false;
return true;
}
+/** Remove table row for field
+* @param HTMLInputElement
+* @return boolean
+*/
function editingRemoveRow(button) {
var field = formField(button.form, button.name.replace(/drop_col(.+)/, 'fields$1[field]'));
field.parentNode.removeChild(field);
}
var lastType = '';
+
+/** Clear length and hide collation or unsigned
+* @param HTMLSelectElement
+*/
function editingTypeChange(type) {
var name = type.name.substr(0, type.name.length - 6);
var text = selectValue(type);
}
}
+/** Edit enum or set
+* @param HTMLInputElement
+*/
function editingLengthFocus(field) {
var td = field.parentNode;
if (/(enum|set)$/.test(selectValue(td.previousSibling.firstChild))) {
}
}
+/** Finish editing of enum or set
+* @param HTMLTextAreaElement
+*/
function editingLengthBlur(edit) {
var field = edit.parentNode.firstChild;
var val = edit.value;
edit.style.display = 'none';
}
+/** Show or hide selected table column
+* @param boolean
+* @param number
+*/
function columnShow(checked, column) {
var trs = document.getElementById('edit-fields').getElementsByTagName('tr');
for (var i=0; i < trs.length; i++) {
}
}
+/** Display partition options
+* @param HTMLSelectElement
+*/
function partitionByChange(el) {
var partitionTable = /RANGE|LIST/.test(selectValue(el));
el.form['partitions'].className = (partitionTable || !el.selectedIndex ? 'hidden' : '');
document.getElementById('partition-table').className = (partitionTable ? '' : 'hidden');
}
+/** Add next partition row
+* @param HTMLInputElement
+*/
function partitionNameChange(el) {
var row = el.parentNode.parentNode.cloneNode(true);
row.firstChild.firstChild.value = '';
+/** Add row for foreign key
+* @param HTMLSelectElement
+*/
function foreignAddRow(field) {
var row = field.parentNode.parentNode.cloneNode(true);
var selects = row.getElementsByTagName('select');
+/** Add row for indexes
+* @param HTMLSelectElement
+*/
function indexesAddRow(field) {
var row = field.parentNode.parentNode.cloneNode(true);
var spans = row.getElementsByTagName('span');
field.onchange = function () { };
}
+/** Add column for index
+* @param HTMLSelectElement
+*/
function indexesAddColumn(field) {
var column = field.parentNode.cloneNode(true);
var select = column.getElementsByTagName('select')[0];
var that, x, y, em, tablePos;
+/** Get mouse position
+* @param HTMLElement
+* @param MouseEvent
+*/
function schemaMousedown(el, event) {
that = el;
x = event.clientX - el.offsetLeft;
y = event.clientY - el.offsetTop;
}
+/** Move object
+* @param MouseEvent
+*/
function schemaMousemove(ev) {
if (that !== undefined) {
ev = ev || event;
}
}
+/** Finish move
+* @param MouseEvent
+*/
function schemaMouseup(ev) {
if (that !== undefined) {
ev = ev || event;
+// to hide elements displayed by JavaScript
document.body.className = 'js';
+/** Toggle visibility
+* @param string
+* @return boolean
+*/
function toggle(id) {
var el = document.getElementById(id);
el.className = (el.className == 'hidden' ? '' : 'hidden');
return true;
}
+/** Verify current Adminer version
+*/
function verifyVersion() {
document.cookie = 'adminer_version=0';
var script = document.createElement('script');
document.body.appendChild(script);
}
+/** Check all elements matching given name
+* @param HTMLInputElement
+* @param RegExp
+*/
function formCheck(el, name) {
var elems = el.form.elements;
for (var i=0; i < elems.length; i++) {
}
}
+/** Uncheck single element
+* @param string
+*/
function formUncheck(id) {
document.getElementById(id).checked = false;
}
+/** Get number of checked elements matching given name
+* @param HTMLInputElement
+* @param RegExp
+* @return number
+*/
function formChecked(el, name) {
var checked = 0;
var elems = el.form.elements;
return checked;
}
+/** Select clicked row
+* @param MouseEvent
+*/
function tableClick(event) {
var el = event.target || event.srcElement;
while (!/^tr$/i.test(el.tagName)) {
+/** Add row in select fieldset
+* @param HTMLSelectElement
+*/
function selectAddRow(field) {
var row = field.parentNode.cloneNode(true);
var selects = row.getElementsByTagName('select');