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';
+ }
+
+
+}