Index: branches/unlabeled/unlabeled-1.1.2/core/install/english.lang =================================================================== diff -u -r6734 -r7727 --- branches/unlabeled/unlabeled-1.1.2/core/install/english.lang (.../english.lang) (revision 6734) +++ branches/unlabeled/unlabeled-1.1.2/core/install/english.lang (.../english.lang) (revision 7727) @@ -1572,6 +1572,7 @@ Vm90ZSBzdWJtaXR0ZWQgc3VjY2Vzc2Z1bGx5 V2FybmluZzogRW5hYmxpbmcgSFRNTCBpcyBhIHNlY3VyaXR5IHJpc2sgYW5kIGNvdWxkIGRhbWFnZSB0aGUgc3lzdGVtIGlmIHVzZWQgaW1wcm9wZXJseSE= QSBzZWFyY2ggb3IgYSBmaWx0ZXIgaXMgaW4gZWZmZWN0LiBZb3UgbWF5IG5vdCBiZSBzZWVpbmcgYWxsIG9mIHRoZSBkYXRhLg== + T25lIG9yIG1vcmUgZmllbGRzIG9uIHRoaXMgZm9ybSBoYXMgYW4gZXJyb3IuPGJyLz4NCjxzbWFsbD5QbGVhc2UgbW92ZSB5b3VyIG1vdXNlIG92ZXIgdGhlIGZpZWxkcyBtYXJrZWQgd2l0aCByZWQgdG8gc2VlIHRoZSBlcnJvciBkZXRhaWxzLjwvc21hbGw+ WW91IGFyZSBhYm91dCB0byBkZWxldGUgdGhlIHByaW1hcnkgdGhlbWUuIENvbnRpbnVlPw== TW9kaWZpY2F0aW9ucyB3aWxsIG5vdCB0YWtlIGVmZmVjdCB1bnRpbCB5b3UgY2xpY2sgdGhlIFNhdmUgYnV0dG9uIQ== d2Vlaw== Index: branches/unlabeled/unlabeled-1.1.2/core/admin_templates/js/forms.js =================================================================== diff -u --- branches/unlabeled/unlabeled-1.1.2/core/admin_templates/js/forms.js (revision 0) +++ branches/unlabeled/unlabeled-1.1.2/core/admin_templates/js/forms.js (revision 7727) @@ -0,0 +1,132 @@ +var last_shown_error = false; +var errors = new Object(); +var first_error = new Object(); +var fields = new Object(); +var textareas100 = new Array(); +function show_form_error(prefix, field, sticky) +{ + if (isset(errors[prefix]) && isset(errors[prefix][field])) { + span = document.getElementById('error_msg_'+prefix); + span.innerHTML = fields[prefix][field] + ' - ' + errors[prefix][field]; + if (sticky) last_shown_error = field; + } +} +function hide_form_error(prefix) +{ + span = document.getElementById('error_msg_'+prefix); + if (!span) return; + span.innerHTML = '
'; + if (typeof(last_shown_error) != 'undefined' && last_shown_error) { + show_form_error(prefix, last_shown_error); + } +} +function add_form_error(prefix, field, element, error_msg) { + if (error_msg != '') { + if (typeof(errors[prefix]) == 'undefined') { + errors[prefix] = new Object(); + } + errors[prefix][field] = error_msg; + addEvent(document.getElementById(element), 'focus', function() { + show_form_error(prefix, field, true) + } ); + addEvent(document.getElementById(element), 'blur', function() {last_shown_error = false} ) + if (typeof(first_error[prefix]) == 'undefined' || first_error[prefix] == false) { + first_error[prefix] = [field, element]; + } + } +} + +function Form() {} + +Form = new Form(); + +Form.Textareas = new Array(); +Form.Div = false; +Form.MinTextareasHeight = 0; +Form.Coeffs = new Object(); + +Form.ScrollerW = 17; +Form.ScrollerH = 17; + +Form.Init = function(id) +{ + this.Div = document.getElementById(id); + + document.body.style.height = '100%'; + document.body.style.overflow = 'hidden'; + document.body.scroll = 'no' + + o += '
'; + o += this.Div.innerHTML + '
'; + el.innerHTML = o; + + this.Table = this.Div.getElementsByTagName('table')[0]; + this.Table.style.height = 'auto'; + this.MinHeight = this.Table.offsetHeight; + this.MinWidth = this.Table.offsetWidth; + + //we need to init form BEFORE executing JS, becasue JS adds textareas to Form object + execJS(el) + + addEvent(window, 'resize', function() {Form.Resize()}) + + if (is.ie) { + this.Resize() + }; + + if (isset(first_error)) { + for (var i in first_error) { + if (first_error[i] != false) { + document.getElementById(first_error[i][1]).focus(); + show_form_error(i, first_error[i][0], true); +// alert('focused on '+first_error[i][1]) + } + } + } +} + +Form.addTextarea = function(id, coeff) { + if (!this.Div) return; + + this.Textareas.push(id); + this.Coeffs[id] = coeff ? coeff : 1; + dim = getDimensions(document.getElementById(id)); + this.MinTextareasHeight += dim.innerHeight; +// alert('adding textarea '+id+' height: '+dim.innerHeight+' total: '+this.MinTextareasHeight) +} + +Form.Resize = function() +{ + var h = (document.all ? window.document.body.offsetHeight : window.innerHeight); + var pos = findPos(el); + var dim = getDimensions(this.Div); + h -= pos[1] + dim.padding[0] + dim.padding[2] + dim.borders[0] + dim.borders[2]; + + var w = (document.all ? window.document.body.offsetWidth : window.innerWidth); + w -= pos[0] + dim.padding[1] + dim.padding[3] + dim.borders[1] + dim.borders[3]; + + scroller_height = this.MinWidth >= w ? this.ScrollerH : 0; + scroller_width = this.MinHeight >= h - scroller_height ? this.ScrollerW : 0; + scroller_height = this.MinWidth >= w - scroller_width ? this.ScrollerH : 0; + + this.Table.style.width = (w-scroller_width) + 'px'; + + this.Div.style.width = (w)+'px'; + this.Div.style.height = (h)+'px'; + + var count = this.Textareas.length; + + // -count here is adjustment - 1px for each textarea + var split = h - count - this.MinHeight + this.MinTextareasHeight; + if (split < this.MinTextareasHeight) split = this.MinTextareasHeight; + var new_height = Math.round(split / count) -2; + +// alert('h is: '+h+' min height is '+this.MinHeight+' MinTextareasHeight is '+this.MinTextareasHeight+' -> '+split+' to split between '+count+' new height is '+new_height); +// print_pre(this.Textareas) + + for (var i in this.Textareas) { + document.getElementById(this.Textareas[i]).style.height = new_height + 'px'; + } + + +}