if (window.gecko && window.Node && window.XMLSerializer)
{
Node.prototype.__defineGetter__('outerHTML', function()
{
return new XMLSerializer().serializeToString(this);
});
}
if (window.gecko && window.Node)
{
Node.prototype.__defineGetter__('innerText', function()
{
if (this.nodeType == 3) return this.nodeValue;
else
{
var result = '';
for (var child = this.firstChild; child; child = child.nextSibling) result += child.innerText;
return result;
}
});
}
Element.implement(
{
replaceHTML: function()
{
var el = new Element('span');
el.innerHTML = $A(arguments).join('');
if ($type(el.childNodes[0]) == 'element') $(el.childNodes[0]).replaces(this);
else el.replaces(this);
},
injectHTML: function(html, where)
{
var el = new Element('span');
el.innerHTML = $A(arguments).join('');
if ($type(el.childNodes[0]) == 'element') eval('$(el.childNodes[0]).inject' + where + '(this)');
else eval('el.inject' + where + '(this)');
},
display: function(disp)
{
if (disp != undefined) this.style.display = disp;
else
{
if (this.style.display == 'none') this.style.display = '';
else this.style.display = 'none';
}
},
checkAll: function(checked, pref)
{
var elements = $$(this.getElementsByTagName('input'));
for (var i = 0; i < elements.length; i++)
{
if (elements[i].type == 'checkbox' && (!pref || elements[i].name.substr(0, pref.length) == pref))
{
elements[i].checked = checked;
}
}
},
getFormElements: function()
{
return this.getElements('input,select,textarea,checkbox,radio');
},
getFormValues: function(pref)
{
var values = new Array();
var elements = this.getFormElements();
for (var i = 0; i < elements.length; i++)
{
if (elements[i].type && (elements[i].type == 'radio' || elements[i].type == 'checkbox') && elements[i].checked == false) continue;
var name = elements[i].name || elements[i].id;
if (pref)
{
var k = name.indexOf(pref);
if (k != -1) name = name.substr(0, k);
}
if (name)
{
if (elements[i].type == 'select-multiple')
{
for (var j = 0; j < elements[i].length; j++)
{
if (elements[i].options[j].selected == true)
if (name.substr(name.length - 2) == '[]')
{
name = name.substr(0, name.length - 2);
if (typeof(values[name]) == 'undefined') values[name] = new Array();
values[name][values[name].length] = elements[i].options[j].value;
}
else values[name][j] = elements[i].options[j].value;
}
}
else
{
if (name.substr(name.length - 2) == '[]')
{
name = name.substr(0, name.length - 2);
if (typeof(values[name]) == 'undefined') values[name] = new Array();
values[name][values[name].length] = elements[i].value;
}
else
{
if (elements[i].type == 'textarea')
{
if (typeof(easyEditor) != 'undefined' && easyEditor.isExists(elements[i].id)) values[name] = easyEditor.getContent(elements[i].id);
else if (typeof(tinyMCE) != 'undefined' && tinyMCE.get(elements[i].id)) values[name] = tinyMCE.get(elements[i].id).getContent();
else values[name] = elements[i].value;
}
else
{
var k = name.indexOf('_');
var subname = ''; if (k != -1) subname = name.substr(k + 1);
if (subname == 'countryid' || subname == 'stateid' || subname == 'cityid' || subname == 'year' || subname == 'month' || subname == 'day' || subname == 'date')
{
name = name.substr(0, k);
if (typeof(values[name]) == 'undefined') values[name] = new Array();
values[name][subname] = elements[i].value;
}
else values[name] = elements[i].value;
}
}
}
}
}
if (arguments.length > 1 && typeof(arguments[1]) == 'object') for (i in arguments[1]) values[i] = arguments[1][i];
return values;
},
cleanFormValues: function(pref, group)
{
var els = this.getFormElements(pref);
for (var i=0; i < els.length; i++)
{
switch (els[i].type)
{
case 'text':
case 'hidden':
els[i].value = '';
break;
case 'select-one':
els[i].value = '';
break;
case 'textarea':
if (typeof(easyEditor) != 'undefined' && easyEditor.isExists(els[i].id)) easyEditor.setContent('', els[i].id);
else if (typeof(tinyMCE) != 'undefined' && tinyMCE.get(els[i].id)) tinyMCE.get(els[i].id).setContent('');
else els[i].value = '';
break;
case 'checkbox':
els[i].checked = false;
break;
}
}
if (typeof(validators) != 'undefined') validators.clean(group);
},
joinUpload: function(upload)
{
upload = $(upload);
this.getParent().onmousemove = function(e)
{
e = e || event;
var coor = this.getCoordinates();
var scroll = $(document.body).getScroll();
upload.style.left = e.clientX + scroll.x - 50 + 'px';
if (e.clientX < coor.left - scroll.x || e.clientX > coor.right - scroll.x || e.clientY < coor.top - scroll.y || e.clientY > coor.bottom - scroll.y) upload.style.top = '-5000px';
else upload.style.top = e.clientY + scroll.y - 10 + 'px';
}.bind(this);
},
joinBlock: function(el, display, x, y)
{
var el = $(el); if (!el) return;
var scrollsize = {'x': (window.getScroll()['x'] == 0) ? window.getSize()['x'] : window.getScrollSize()['x'], 'y': (window.getScroll()['y'] == 0) ? window.getSize()['y'] : window.getScrollSize()['y']};
if (display) el.display(display);
else if (el.style.display != 'none') {el.display('none'); return;}
else el.display();
el.style.position = 'absolute';
var coor = this.getCoordinates();
var size = el.getSize();
var y = coor.top - 1 + ((y) ? y : 0);
var x = coor.left + 26 + ((x) ? x : 0);
if (x > scrollsize['x'] - size['x']) x = scrollsize['x'] - size['x'];
if (x < 0) x = 0;
if (y > scrollsize['y'] - size['y']) y = scrollsize['y'] - size['y'];
if (y < 0) y = 0;
el.style.top = y + 'px';
el.style.left = x + 'px';
},
centre: function()
{
var wsize = window.getSize();
var size = this.getSize();
var dx = wsize['x'] - size['x'];
var dy = wsize['y'] - size['y'];
if (dx < 0) dx = 0;
if (dy < 0) dy = 0;
var left = dx / 2 + window.getScroll()['x'];
var top = dy / 2 + window.getScroll()['y'];
this.style.top = top + 'px';
this.style.left = left + 'px';
},
fade: function(flag, opacity)
{
if (!flag) this.display('none');
else
{
if (!opacity) opacity = 0.5;
this.style.position = 'absolute';
this.style.top = 0;
this.style.left = 0;
this.style.width = window.getScrollSize()['x'] + 'px';
this.style.height = window.getScrollSize()['y'] + 'px';
this.setOpacity(opacity);
this.display('');
}
},
megaFormStart: function(fade, opacity)
{
if (typeof(hideBadElement) == 'function') hideBadElement();
if ($(fade)) $(fade).fade(true, opacity);
this.style.position = 'absolute';
this.centre();
},
megaFormFinish: function(fadeid)
{
if ($(fadeid)) $(fadeid).fade(false);
this.style.top = -1000000 + 'px';
if (typeof(showBadElement) == 'function') showBadElement();
}
});