///   Start 
// Built By Alex Liverant (alexliv@gmail.com) 2007

/// <summary>
/// Spinner control Class constructor
/// </summary>
/// <param name="name">spinner name</param>
/// <param name="divID">the div's name where to create the spinner control</param>
/// <param name="value">initial value of the control</param>
/// <param name="toStringFunction">a function that returns a string to show in the control's textbox based on the value</param>
/// <param name="spinFunction">a function that spins the controls value -1 value for down +1 value for up and returns the new value</param>
function SpinnerControl(name,divID, value,toStringFunction,spinFunction,bgColor)
{
   this.name = name;
   this.divID = divID;
   this.value = value;
   this.toStringFunction = toStringFunction;
   this.spinFunction = spinFunction;
   this.onChange = null;
   this.htmlDiv = null;
   if (bgColor==null)
   {
        bgColor = '#fcfcfc';
   }
   this.bgColor = bgColor;
}

SpinnerControl.prototype.CreateSpinnerControl = function (width)
{
   width -= 2;
   if (this.htmlDiv==null)
   {
       var base=-2;
       var base2 = 0;
       if (isFirefox)
       {
         base = 1;
       }
       if(browser.isIE )
       {
         base = (browser.version == '7')?0:1;
         base2 = (browser.version == '6')?2:0;
       }
       var IE9adjustment = (browser.isIE && browser.version == "9") ? 'padding-top:2px;' : '';
       var locDiv = document.getElementById(this.divID);
       var inHTML = '<table style="width:100%;height:20px" cellpadding="0" cellspacing="0" border="0">\r\n';
       inHTML += '<tr>\r\n';
       inHTML += '<td valign="middle" style="height: 20px"><input readonly="readonly" onFocus="blur();" style="padding-left:2px; cursor:default; width:' + width + 'px;background-color:' + this.bgColor + '; border-top-width: 1px;border-right-width: 1px;border-bottom-width: 1px;	border-left-width: 1px;	border-top-style: solid;	border-right-style: solid;	border-bottom-style: solid;	border-left-style: solid;	border-top-color: #808080;	border-right-color: #d4d0c8;	border-bottom-color: #d4d0c8;	border-left-color: #d4d0c8;' + IE9adjustment + '" id="inpSelValue' + this.name + '" type="text" value=""/></td>\r\n';
       inHTML += '<td valign="middle" style="height: 20px;position:relative;">\r\n';
       inHTML += '<div style="height: 10px;position:relative;top:'+(-1+base+base2)+'px;cursor:pointer" onmousedown="'+this.name+'.StartSpin(-1);" >\r\n';
       inHTML += '<img alt="" border="0" width="14px" height="10px" src="' + STATIC_URL + '/Images/spinup.gif" />\r\n';
       inHTML += '</div>\r\n';
       inHTML += '\r\n';
       inHTML += '<div style="height: 10px;position:relative;top:'+(-1+base-base2)+'px;cursor:pointer" onmousedown="'+this.name+'.StartSpin(1);" >\r\n';
       inHTML += '<img alt="" border="0"  width="14px" height="10px" src="' + STATIC_URL + '/Images/spindown.gif" />\r\n';
       inHTML += '</div>\r\n';
       inHTML += '</td>\r\n';
       inHTML += '</tr>\r\n';
       inHTML += '</table>\r\n';
       locDiv.innerHTML = inHTML;
       this.htmlDiv = inHTML;
   }
}
SpinnerControl.prototype.CreateSlowSpinnerControl = function (width) {
    width -= 2;
    if (this.htmlDiv == null) {
        var base = -2;
        var base2 = 0;
        if (isFirefox) {
            base = 1;
        }
        if (browser.isIE) {
            base = (browser.version == '7') ? 0 : 1;
            base2 = (browser.version == '6') ? 2 : 0;
        }
        var IE9adjustment = (browser.isIE && browser.version == "9") ? 'padding-top:2px;' : '';
        var locDiv = document.getElementById(this.divID);
        var inHTML = '<table style="width:100%;height:20px" cellpadding="0" cellspacing="0" border="0">\r\n';
        inHTML += '<tr>\r\n';
        inHTML += '<td valign="middle" style="height: 20px"><input readonly="readonly" onFocus="blur();" style="padding-left:4px;cursor:default; width:' + width + 'px;background-color:' + this.bgColor + '; border-top-width: 1px;border-right-width: 1px;border-bottom-width: 1px;	border-left-width: 1px;	border-top-style: solid;	border-right-style: solid;	border-bottom-style: solid;	border-left-style: solid;	border-top-color: #808080;	border-right-color: #d4d0c8;	border-bottom-color: #d4d0c8;	border-left-color: #d4d0c8;' + IE9adjustment + '" id="inpSelValue' + this.name + '" type="text" value=""/></td>\r\n';
        inHTML += '<td valign="middle" style="height: 20px;position:relative;">\r\n';
        inHTML += '<div style="height: 10px;position:relative;top:' + (-1 + base + base2) + 'px;cursor:pointer" onmousedown="' + this.name + '.StartSlowSpin(-1);" >\r\n';
        inHTML += '<img alt="" border="0" width="14px" height="10px" src="' + STATIC_URL + '/Images/spinup.gif" />\r\n';
        inHTML += '</div>\r\n';
        inHTML += '\r\n';
        inHTML += '<div style="height: 10px;position:relative;top:' + (-1 + base - base2) + 'px;cursor:pointer" onmousedown="' + this.name + '.StartSlowSpin(1);" >\r\n';
        inHTML += '<img alt="" border="0"  width="14px" height="10px" src="' + STATIC_URL + '/Images/spindown.gif" />\r\n';
        inHTML += '</div>\r\n';
        inHTML += '</td>\r\n';
        inHTML += '</tr>\r\n';
        inHTML += '</table>\r\n';
        locDiv.innerHTML = inHTML;
        this.htmlDiv = inHTML;
    }
}

SpinnerControl.prototype.Create15MinSpinnerControl = function (width)
{
   width -=2;
   if (this.htmlDiv==null)
   {
       var base=-2;
       var base2 = 0;
       if (isFirefox)
       {
         base = 1;
       }
        if(browser.isIE )
       {
         base = (browser.version == '7')?0:1;
         base2 = (browser.version == '6')?2:0;
       }
       var IE9adjustment = (browser.isIE && browser.version == "9") ? 'padding-top:2px;' : '';
       var locDiv = document.getElementById(this.divID);
       var inHTML = '<table style="width:100%;height:20px" cellpadding="0" cellspacing="0" border="0">\r\n';
       inHTML += '<tr>\r\n';
       inHTML += '<td valign="middle" style="height: 20px"><input readonly="readonly" onFocus="blur();" style="cursor:default; width:'+width+'px;background-color:'+this.bgColor+'; border-top-width: 1px;border-right-width: 1px;border-bottom-width: 1px;	border-left-width: 1px;	border-top-style: solid;	border-right-style: solid;	border-bottom-style: solid;	border-left-style: solid;	border-top-color: #808080;	border-right-color: #d4d0c8;	border-bottom-color: #d4d0c8;	border-left-color: #d4d0c8; padding-left:2px;'+ IE9adjustment+'" id="inpSelValue'+ this.name + '" type="text" value=""/></td>\r\n';
       inHTML += '<td valign="middle" style="height: 20px;position:relative;">\r\n';
       inHTML += '<div style="height: 10px;position:relative;top:'+(-1+base+base2)+'px;cursor:pointer" onmousedown="'+this.name+'.StartSpin(-15);" >\r\n';
       inHTML += '<img alt="" border="0" width="14px" height="10px" src="' + STATIC_URL + '/Images/spinup.gif" />\r\n';
       inHTML += '</div>\r\n';
       inHTML += '\r\n';
       inHTML += '<div style="height: 10px;position:relative;top:'+(-1+base-base2)+'px;cursor:pointer" onmousedown="'+this.name+'.StartSpin(15);" >\r\n';
       inHTML += '<img alt="" border="0"  width="14px" height="10px" src="' + STATIC_URL + '/Images/spindown.gif" />\r\n';
       inHTML += '</div>\r\n';
       inHTML += '</td>\r\n';
       inHTML += '</tr>\r\n';
       inHTML += '</table>\r\n';
       locDiv.innerHTML = inHTML;
       this.htmlDiv = inHTML;
   }
}

SpinnerControl.prototype.SetValue = function (value)
{
   this.value = value;
   document.getElementById('inpSelValue'+ this.name).value = this.toStringFunction(this.value);   
}
 
SpinnerControl.prototype.GetValue = function ()
{
   return this.value;
}
var isInSpin = false;
SpinnerControl.prototype.StartSpin = function (dir)
{
   if (!isInSpin)
   {
      isInSpin = true;
      window.setTimeout(this.name + '.Spin(' + dir +');',200);
   }
   document.onmouseup = stopSpin;
   //document.onmousemove = stopSpin;
}
SpinnerControl.prototype.StartSlowSpin = function (dir)
{
   if (!isInSpin)
   {
      isInSpin = true;
      window.setTimeout(this.name + '.Spin(' + dir +');',200);
   }
   //document.onmouseup = stopSpin;
   document.onmousemove = stopSpin;
}
function stopSpin()
{
  isInSpin = false;
}
  
SpinnerControl.prototype.Spin = function (dir)
{
  this.SetValue(this.spinFunction (dir,this.value,this));
  if (this.onChange!=null)
  {
    this.onChange(this.value); 
    isInSpin = false;    
  }
  
  if (isInSpin)
  {
    window.setTimeout(this.name + '.Spin(' + dir +');',10);
  }
}

