// FOR NOTES BOX

function setUpNotesBox(noteType, hoverText) {
	var frm = document.getElementById(noteType + "NotesForm");
	var pre = frm.getElementsByTagName("pre")[0];
	if(document.location.toString().indexOf("printmode") == -1)
	{
		pre.style.cursor = "pointer";
		pre.style.cursor = "hand";
		pre.title = hoverText;
	}
}

function editNotes(noteType) {
	if(document.location.toString().indexOf("printmode") != -1) return false;

	var frm = document.getElementById(noteType + "NotesForm");
	var pre = frm.getElementsByTagName("pre")[0];
	var ta = frm.ta;
	var text = pre.firstChild.nodeValue;
	var leader = frm.leader.value;
	text = text.replace(leader,"")  // remove leader
	var pos = 0;
	while(pos < text.length && "\n\r".indexOf(text.charAt(pos)) != -1) { pos++; }
	if (pos > 0) {text = text.substr(pos); }

	pre.className = "hidden";
	ta.className = "";
	frm.cancelBtn[0].className = "button";
	frm.saveBtn.className = "button";
	ta.focus();
	if(text.length > 0 ) {
	  ta.value = text + "\n";
        } else {
          ta.value = '';
        }
}

function saveNotes(noteType) {
	var frm = document.getElementById(noteType + "NotesForm");
	var ta = frm.ta;
	var pre = frm.getElementsByTagName("pre")[0];
	var text = breaklines(ta.value, 52);
	frm.style.cursor = "wait"
	saveSelections(frm);
	ta.value = text;
	frm.submit();
}

function cancelNotesEdit(noteType) {
	var frm = document.getElementById(noteType + "NotesForm");
	var pre = frm.getElementsByTagName("pre")[0];
	pre.className = "";
	frm.ta.className = "hidden";
	frm.cancelBtn[0].className = "hidden";
	frm.saveBtn.className = "hidden";
}
	

function breaklines(text, len) {
	var j, sub, output;
	output = '';
	var ll = text.length;

	while(text.length > len) {
		sub = text.substr(0, len);
		j = sub.indexOf('\n');
		if ( j > -1 ) {
			output = output.concat(sub.substr(0, j + 1));
			text = text.substr(j + 1, text.length);
		} else {
			j = sub.lastIndexOf(' ');
			if ( j == -1 ) { 
				ll = len;
				if (ll > text.length) { ll = text.length; }
				output = output.concat(sub.substr(0, ll) + '\r\n');

				text = text.substr(ll + 1, text.length);
			} else {
				output = output.concat(sub.substr(0, j) + '\r\n');
				text = text.substr(j + 1, text.length);
			}
		}
	}
	output = output.concat(text);

	return( output );
}

// Save the state of checkboxes into a hidden field in the notesForm form
function saveSelections(frm) {
	var cb,inp,f;
        var cbString = '';
	for(var i = 0; i < document.forms.length; i++) {
	  f = document.forms[i];
          inp = f.getElementsByTagName('input');
          for(var j = 0; j < inp.length; j++) {
             cb = inp[j];
             if(cb.type != 'checkbox') { continue; }
             if(cb.className.indexOf('hidden') != -1) { continue; }
             cbString += cb.checked + '|';
          }
        }
	frm.savedCheckboxes.value = cbString;
}

// Restore state of checkboxes, using hidden field in notesForm 
function restoreSelections(frmId) {
	var f = document.getElementById(frmId);
        if (!f) { return; }
	if (!f.savedCheckboxes) { return; }
	var arr = f.savedCheckboxes.value.split("|");	
	var cb,inp,f;
        var k = 0;
	for(var i = 0; i < document.forms.length; i++) {
	  f = document.forms[i];
          inp = f.getElementsByTagName('input');
          for(var j = 0; j < inp.length; j++) {
             cb = inp[j];
             if(cb.type != 'checkbox') { continue; }
             if(cb.className.indexOf('hidden') != -1) { continue; }
             cb.checked = (arr[k] == 'true');
             k++;
          }
        }
}