// HTML Input facilitated functions
// Nicola Zordan
// 30 June 2004
// www.NicolaZordan.com
// Nicola@Zordan.net


// Integer
function WriteIntegerInputIncrement2 (field, value, increment, increment2,min,max, extra) {
  WriteIntegerInputIncrement(field,value,increment2,increment,min,max, extra);
};
function WriteIntegerInputIncrement (field, value, increment, incrementSmall,min,max, extra) {
  document.write('<input type="button" value="<<" onClick="IntegerAdd(this.form.'+field+', '+(increment*-1)+','+min+','+max+')">');
  WriteIntegerInput(field,value,incrementSmall,min,max, extra);
  document.write('<input type="button" value=">>" onClick="IntegerAdd(this.form.'+field+', '+increment+','+min+','+max+')">');
};
function WriteIntegerInput (field, valueInput, incrementOptional, min, max, extra) {
  var value=parseInt(valueInput);
  var increment=incrementOptional;
  if (increment==null) increment=1;
  document.write('<input type="button" value="<" onClick="IntegerAdd(this.form.'+field+', '+(increment*-1)+','+min+','+max+')">');
  document.write('<input name="'+field+'" type="text" size="6" value="'+value+'" 0readonly');
  if (extra!=null) document.write(' '+extra+' '); 
  document.write('>');
  document.write('<input type="button" value=">" onClick="IntegerAdd(this.form.'+field+', '+increment+','+min+','+max+')">');
};
function IntegerAdd(field, number,min,max) {
  var i=parseInt(field.value);
  i=i+number;
  if (min!=null && i<min) i=min;
  if (max!=null && i>max) i=max;
  field.value=i;  
};


// Float
function WriteFloatInputIncrement2 (field, value, increment1,increment2,min,max,extra) {
  document.write('<input type="button" value="<<" onClick="FloatAdd(this.form.'+field+', '+(increment2*-1)+','+min+','+max+')">');
  WriteFloatInputIncrement(field,value,increment1,min,max,extra);
  document.write('<input type="button" value=">>" onClick="FloatAdd(this.form.'+field+', '+increment2+','+min+','+max+')">');
};
function WriteFloatInputIncrement (field, value,increment,min,max,extra) {
  //document.write('<input type="button" value="<" onClick="FloatAdd(this.form.'+field+', '+(increment*-1)+')">');
  WriteFloatInput(field,value,increment,min,max,extra);
  //document.write('<input type="button" value=">" onClick="FloatAdd(this.form.'+field+', '+increment+')">');
};
function WriteFloatInput (field, valueInput, incrementOptional,min,max,extra) {
  var value=parseFloat(valueInput);
  var increment=incrementOptional;
  if (increment==null) increment=1;
  document.write('<input type="button" value="<" onClick="FloatAdd(this.form.'+field+', '+(increment*-1)+','+min+','+max+')">');
  document.write('<input name="'+field+'" type="text" size="9" value="'+value+'" 0readonly');
  if (extra!=null) document.write(' '+extra+' '); 
  document.write('>');
  document.write('<input type="button" value=">" onClick="FloatAdd(this.form.'+field+', '+increment+','+min+','+max+')">');
};
function FloatAdd(field, number,min,max) {
  var f=parseFloat(field.value);
  f=Math.round((f+number)*10000000)/10000000;
  if (min!=null && f<min) f=min;
  if (max!=null && f>max) f=max;
  field.value=f;  
};


// TextAreaMaxLength
function WriteTextAreaMaxLength (field, value, maxLength, rows, cols,extra) {
  document.write('<textarea name="+field+" onKeyPress="return TextAreaMaxLengthAlert(this.value,'+maxLength+')" rows="'+rows+'" cols="'+cols+'" 0readonly');
  if (extra!=null) document.write(' '+extra+' '); 
  document.write('>');
  document.write(value);
  document.write('</textarea>');
};
function TextAreaMaxLengthAlert (txt, len) {
//var txt = escape(txtUE) ;
 if (txt.length >= len) {
   alert("You have reached the limit of " + len + " characters you can type." );
   return false;
 };
 return true;
};


// -- --

function WriteStringInput (fiel, value, len, maxLength) {
  document.write('<input name="+field+" type="text" size="'+len+'" value="'+value+'" maxLength="'+maxLength+'" 0readonly>');
};



//DateInput with Calendar prompt in DateTimeUtilities.js
// function WriteDateInputClient(field, value) {
// function WriteTimeInputClient(field, value) {
// function WriteDateSelector(field) {
// function WriteTimeSelector(field) {
//CalendarInput with NAZCalendarScript.js
// function CallNAZCalendarFocus(Field) {


// Date
function WriteDateInputIncrement (field, valueInput, extra) {
  var incrementOptional=1, min=null, max=null;
  var increment=incrementOptional;
  var value=NAZValidateDateInput(valueInput);
  var now=new Date;
  if (value==false) value=NAZValidateTimeInput(now.getMonth()+'/'+now.getDay()+'/'+now.getYear());
  if (increment==null) increment=1;
  document.write('<input type="button" value="<<<" onClick="DateAddYears(this.form.'+field+', '+(-1)+',\''+min+'\',\''+max+'\')">');
  document.write('<input type="button" value="<<" onClick="DateAddMonths(this.form.'+field+', '+(-1)+',\''+min+'\',\''+max+'\')">');
  document.write('<input type="button" value="<" onClick="DateAddDays(this.form.'+field+', '+(increment*-1)+',\''+min+'\',\''+max+'\')">');
  //document.write('<input type="button" value="<" onClick="TimeAdd(this.form.'+field+', '+(-60)+',\''+min+'\',\''+max+'\')">');
  //WriteDateInput(field, valueInput, incrementOptional,min,max,extra);
  WriteDateInput(field, valueInput, extra);
  //document.write('<input type="button" value=">" onClick="TimeAdd(this.form.'+field+', '+60+',\''+min+'\',\''+max+'\')">');
  document.write('<input type="button" value=">" onClick="DateAddDays(this.form.'+field+', '+1+',\''+min+'\',\''+max+'\')">');
  document.write('<input type="button" value=">>" onClick="DateAddMonths(this.form.'+field+', '+1+',\''+min+'\',\''+max+'\')">');
  document.write('<input type="button" value=">>>" onClick="DateAddYears(this.form.'+field+', '+1+',\''+min+'\',\''+max+'\')">');
};
function WriteDateInput (field, valueInput, extra) {
  var disabled=false;
  var value=NAZValidateDateInput(valueInput);  
  if (value==false) value=JavaDate2NAZDate(new Date);
  document.write('<input name="'+field+'" type="text" maxlength="10" size="10" value="'+value+'" 0readonly 0onDoubleClick="CallNAZCalendarFocus(this.form.'+field+')"');
  if (extra!=null) document.write(' '+extra+' '); 
  document.write('>');
  //document.write('<a href="javascript:CallNAZCalendarFocus(this.form.'+field+')">');
  document.write('<button onClick="CallNAZCalendarFocus(this.form.'+field+')">');
  document.write('<img src="CalendarDate.gif" alt="Pick a Date from the calendar" 0height="21" border="0" 0onClick="CallNAZCalendarFocus(this.form.'+field+')">');
  document.write('</button>');
  //document.write('</a>');
};
function DateAddDays(field, days,minInput,maxInput) {  
  if (field != null && field.disabled==true)  { alert('Disbaled input'); return; };
  var d=NAZDate2JavaDate(field.value);
  var newDay=d.getDate();
  var min=minInput;
  var max=maxInput;
  //if (min=='day' ) min='00:00:00';
  //if (max=='day' ) max='23:59:59';
  if (min!=null) min=NAZDate2JavaDate(min);
  if (max!=null) max=NAZDate2JavaDate(max);
  d.setDate(g.getDate()+days);
  //newDay=newDay+days;
  //d.setDate(newDay);
  if (min!=null && d<min) d=min;
  if (max!=null && d>max) d=max;
  field.value=JavaDate2NAZDate(d);
};
function DateAddMonths(field, months,minInput,maxInput) {  
  if (field != null && field.disabled==true)  { alert('Disbaled input'); return; };
  var d=NAZDate2JavaDate(field.value);
  var min=minInput;
  var max=maxInput;
  //if (min=='day' ) min='00:00:00';
  //if (max=='day' ) max='23:59:59';
  if (min!=null) min=NAZDate2JavaDate(min);
  if (max!=null) max=NAZDate2JavaDate(max);
  d.setMonth(d.getMonth()+months);
  if (min!=null && d<min) d=min;
  if (max!=null && d>max) d=max;
  field.value=JavaDate2NAZDate(d);
};
function DateAddYears(field, years,minInput,maxInput) {  
  if (field != null && field.disabled==true)  { alert('Disbaled input'); return; };
  var d=NAZDate2JavaDate(field.value);
  var min=minInput;
  var max=maxInput;
  //if (min=='day' ) min='00:00:00';
  //if (max=='day' ) max='23:59:59';
  if (min!=null) min=NAZDate2JavaDate(min);
  if (max!=null) max=NAZDate2JavaDate(max);
  d.setYear(d.getYear()+years);
  if (min!=null && d<min) d=min;
  if (max!=null && d>max) d=max;
  field.value=JavaDate2NAZDate(d);
};



// Time
function WriteTimeInputIncrement (field, valueInput, incrementOptional,min,max,extra) {
  var increment=incrementOptional;
  var value=NAZValidateTimeInput(valueInput);
  var now=new Date;
  if (value==false) value=NAZValidateTimeInput(now.getHours()+':'+now.getMinutes()+':'+now.getSeconds());
  if (increment==null) increment=1;
  document.write('<input type="button" value="<<" onClick="TimeAdd(this.form.'+field+', '+(-60)+',\''+min+'\',\''+max+'\')">');
  document.write('<input type="button" value="<" onClick="TimeAdd(this.form.'+field+', '+(increment*-1)+',\''+min+'\',\''+max+'\')">');
  //document.write('<input type="button" value="<" onClick="TimeAdd(this.form.'+field+', '+(-60)+',\''+min+'\',\''+max+'\')">');
  WriteTimeInput(field, valueInput, incrementOptional,min,max,extra);
  //document.write('<input type="button" value=">" onClick="TimeAdd(this.form.'+field+', '+60+',\''+min+'\',\''+max+'\')">');
  document.write('<input type="button" value=">" onClick="TimeAdd(this.form.'+field+', '+increment+',\''+min+'\',\''+max+'\')">');
  document.write('<input type="button" value=">>" onClick="TimeAdd(this.form.'+field+', '+60+',\''+min+'\',\''+max+'\')">');
};
function WriteTimeInput (field, valueInput, incrementOptional,min,max,extra) {
  var increment=incrementOptional;
  var value=NAZValidateTimeInput(valueInput);
  var now=new Date;
  if (value==false) value=NAZValidateTimeInput(now.getHours()+':'+now.getMinutes()+':'+now.getSeconds());
  if (increment==null) increment=1;
  ////document.write('<input type="button" value="<<" onClick="TimeAdd(this.form.'+field+', '+(-60)+',\''+min+'\',\''+max+'\')">');
  ////document.write('<input type="button" value="<" onClick="TimeAdd(this.form.'+field+', '+(increment*-1)+',\''+min+'\',\''+max+'\')">');
  //document.write('<input type="button" value="<" onClick="TimeAdd(this.form.'+field+', '+(-60)+',\''+min+'\',\''+max+'\')">');
  document.write('<input name="'+field+'" type="text" size="6" value="'+value+'" 0readonly');
  if (extra!=null) document.write(' '+extra+' '); 
  document.write('>');
  //document.write('<input type="button" value=">" onClick="TimeAdd(this.form.'+field+', '+60+',\''+min+'\',\''+max+'\')">');
  ////document.write('<input type="button" value=">" onClick="TimeAdd(this.form.'+field+', '+increment+',\''+min+'\',\''+max+'\')">');
  ////document.write('<input type="button" value=">>" onClick="TimeAdd(this.form.'+field+', '+60+',\''+min+'\',\''+max+'\')">');
  document.write('<button onClick="CallNAZTimeFocus(this.form.'+field+')">');
  document.write('<img src="Time.gif" alt="Pick a Time from the clock" 0height="21" border="0" 0onClick="CallNAZTimeFocus(this.form.'+field+')">');
  document.write('</button>');
};
function TimeAdd(field, minutes,minInput,maxInput) {  
  if (field != null && field.disabled==true)  { alert('Disbaled input'); return; };
  var t=NAZTimeHMS2JavaTime(field.value);
  var min=minInput;
  var max=maxInput;
  if (min=='day' ) min='00:00:00';
  if (max=='day' ) max='23:59:59';
  if (min!=null) min=NAZTimeHMS2JavaTime(min);
  if (max!=null) max=NAZTimeHMS2JavaTime(max);
  //alert(t);
  t.setMinutes(t.getMinutes()+minutes);
  if (min!=null && t<min) t=min;
  if (max!=null && t>max) t=max;
  //field.value=JavaTime2NAZTimeHM(t);  
  field.value=JavaTimeDuration2NAZTime(t);
};
function TimeAddSeconds(field, seconds,minInput,maxInput) {  
  var t=NAZTimeHMS2JavaTime(field.value);
  var min=minInput;
  var max=maxInput;
  if (min=='day' ) min='00:00:00';
  if (max=='day' ) max='23:59:59';
  if (min!=null) min=NAZTimeHMS2JavaTime(min);
  if (max!=null) max=NAZTimeHMS2JavaTime(max);
  //alert(t+'\n'+t.getSeconds()+'\n'+seconds+'\n'+(seconds+t.getSeconds()));
  t.setSeconds(t.getSeconds()+seconds);
  if (min!=null && t<min) t=min;
  if (max!=null && t>max) t=max;
  //field.value=JavaTime2NAZTimeHM(t);  
  field.value=JavaTimeDuration2NAZTime(t);
};



/*
// Time
function WriteTimeInput (field, value) {
// Decrement minutes -1
  document.write('<input type="button" value="<<" onClick=TimeAdd('+"'"field+"'"+',-60">');
  document.write('<input type="button" value="<" onClick=TimeAdd('+"'"field+"'"+',-1">');
  WriteTimeInputClient(field, value);
// Decrement minutes -1
  document.write('<input type="button" value=">" onClick=TimeAdd('+"'"field+"'"+',1">');
  document.write('<input type="button" value=">>" onClick=TimeAdd('+"'"field+"'"+',60">');
};
function TimeAdd(field, minutes) {
  var t=NAZTimeHMS2JavaTime(field.value);
  t.setMinutes(t.GetMinutes()+minutes);
//  return (JavaTime2NAZTimeHMS(field.value));
//  return (JavaTime2NAZTimeHM(t));
  field.value=JavaTime2NAZTimeHM(t);
};

*/


// Tree Input in List Box

// tree is an array (it can contain other arrays to create a tree)
var WriteTreeInputPrefix='&nbsp;&nbsp;';
var WriteTreeInputNamedValues=false;
var WriteTreeInputExtra='size="10"';
 WriteTreeInputNamedValues=true;

function WriteTreeInput(field,tree,extra) {
  document.write('<select name="'+field+'"');
  if (extra==null) {
    extra=WriteTreeInputExtra;
  }
  if (extra!=null) document.write(' '+extra+' '); 
  document.write('>');
  WriteTreeEntries(tree,'');
  document.write('</select>');
};
function WriteTreeEntries(tree,prefix) {
 var item,html; 
 if (tree==null) return;
 if (typeof(tree)!='object') {
   item=tree;
   html='<option value="'+item+'">'+prefix+item+'</option>';
   document.write(html);
   alert(' not a treee: ['+tree+']');
   return;
 };
 for(itemKey in tree) {
   item=tree[itemKey];
   if (typeof(item)=='object') {
     //WriteTreeEntries(item,'-'); 
     //WriteTreeEntries(item,WriteTreeInputPrefix);
     if (WriteTreeInputNamedValues) {
       html='<option value="'+itemKey+'" readonly>'+prefix+itemKey+'</option>';
       document.write(html);   
       //WriteTreeEntries(item,prefix+'+'+WriteTreeInputPrefix);
       //WriteTreeEntries(item,prefix+'`--');
       //WriteTreeEntries(item,prefix+'++'+WriteTreeInputPrefix);
       WriteTreeEntries(item,prefix+WriteTreeInputPrefix);
     } else {
       WriteTreeEntries(item,prefix+WriteTreeInputPrefix);
     };
   } else {
     html='<option value="'+item+'">'+prefix+item+'</option>';
     document.write(html);   
   };
 };
};






