window.addEvent('domready', function() { var LinkActions = (function() { var getFieldPair = function(el) { var p = el; while(p && !p.hasClass('fieldpair')) { p = p.getParent(); } return p; }; var moveUp = function(el) { var fp = getFieldPair(el); var prev = fp.getPrevious(); if(prev && prev.hasClass('fieldpair')) { fp.remove(); fp.injectBefore(prev); } }; var moveDown = function(el) { var fp = getFieldPair(el); var next = fp.getNext(); if(next && next.hasClass('fieldpair')) { fp.remove(); fp.injectAfter(next); } }; // remove fieldpair var remove = function(el) { var fp = getFieldPair(el); fp.remove(); }; var add = function(el) { var blank = $('blankLink'); if(blank) { var cloned = blank.getElement('div.fieldpair').clone(); cloned.injectBefore(blank); var inputs = cloned.getElements('input.withLabel'); var actions = cloned.getElements('ul.actions a'); inputs.each(function(item) { setLabelEvents(item); }); actions.each(function(item) { setActionEvents(item); }); } }; return { 'up':moveUp, 'down':moveDown, 'remove':remove, 'add':add }; })(); // remove labels from box when focused. var setLabelEvents = function(item) { if(item.value.length == 0) { item.value = item.getProperty('data-label'); } item.addEvents({ focus:function(e) { if(this.hasClass('new')) { this.value = ''; } }, blur:function(e) { if(this.value.length == 0) { this.addClass('new'); } if(this.hasClass('new')) { this.value = this.getProperty('data-label'); } }, change:function(e) { this.removeClass('new'); } }); }; var setActionEvents = function(item) { item.addEvent('click', function(e) { var matched = []; if(matched = item.getProperty('href').match(/#(\w+)/)) { var task = matched[1]; if(e) { e = new Event(e); e.stop(); } if(typeof LinkActions[task] == 'function') { return LinkActions[task](item); } else { return false; } } }); }; var withLabel = $$('input.withLabel'); if(withLabel) { withLabel.each(function(item) { setLabelEvents(item); }); } var form = $$('form'); // remove labels from form when submitted if(form) { form.addEvent('submit', function() { var withLabels = this.getElements('.withLabel'); if(withLabels) { withLabels.each(function(item) { if(item.getProperty('data-label') == item.value) { item.value = ''; } }); } }); } // moving up, etc var actions = $$('fieldset.links ul.actions a'); if(actions) { actions.each(function(item) { setActionEvents(item); }); } }); window.addEvent('domready', function() { var selects = $$('select.categories'); if(selects) { selects.each(function(item) { new CategorySelect(item); }); } }); var CategorySelect = new Class({ options: { remoteUrl: 'index.php?option=com_company&controller=category&task=select&format=raw' }, initialize: function(el) { this.element = el; this.attachEvents(); }, attachEvents: function() { var that = this; if(!this.element.hasClass('nochildren')) { this.element.addEvents({ change: function(e) { that.getRemote().request(); } }); } }, getRemote: function() { var that = this; var parsedName = this.element.getProperty('name').match(/([^\[]+)\[([^\]]+)/); var formName = parsedName[1]; var name = parsedName[2]; if(typeof Company != 'undefined' && Company.baseUrl) { this.options.remoteUrl = Company.baseUrl + this.options.remoteUrl; } var remote = new Ajax(this.options.remoteUrl, { data: { parentId: this.element.getValue(), name: name, formName: formName }, method: 'post', onComplete: function(response) { var e = new Element('div'); // clear everything after this element var next = that.element.getNext(); while(next) { Element.remove(next); next = that.element.getNext(); } e.setHTML(response); var select = e.getElement('select'); if(select) { select.injectAfter(that.element); new CategorySelect(select); } } }); return remote; } });