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(); } });