/*
ARIAwork.com, Professional Script creating Group

ARIAdom.js 2007/11/21

desc    : Document DEfault Class / UTF-8

history : 2007/10/15, squall, 최초작성
          2007/11/21, squall, 주석문 삽입
          2008/05/02, squall, 날짜선택 도구 업그레이드 년,월 지정가능

Copyright (c) 2000-2007 NAMUsoft, Inc. All Rights Reserved.

This software is the proprietary information of NAMUsoft, Inc.
Use is subject to license terms.
*/

/* defined var */
var isIE, isFF, isSF, isOP, isCR
var suserAgent = navigator.userAgent;

isIE = (suserAgent.indexOf("MSIE") != -1) ? true : false
isFF = (suserAgent.indexOf("Firefox") != -1) ? true : false
isSF = (suserAgent.indexOf("Safari") != -1) ? true : false
isOP = (suserAgent.indexOf("Opera") != -1) ? true : false
isCR = (suserAgent.indexOf("Chrome") != -1) ? true : false
if(isIE){
  try{
    var ieAt = /MSIE (\d+\.\d+)/i;
    ieAt.test(suserAgent);
    ieVer = parseFloat(RegExp.$1);
  }catch(e){
    ieVer = 6;
  }
}

var ARIArePt = /[\{\}#]/g;

/* defined prototype */
String.prototype.decode = function(){
  return decodeURIComponent(this).replace(/\+/g, " ");
};

String.prototype.encode = function(){
  return encodeURIComponent(this);
};

String.prototype.left = function(strLen){
	return this.substr(0, strLen);
};

String.prototype.getFileName = function(){
  var sToMatch = this;
  var reAt = /\/([^\/\\]+\.?[^\/\\]+)$/;
  var reArr = sToMatch.match(reAt);
	return RegExp.$1;
};

String.prototype.prtMoney = function(){
  var txtNumber = '' + this;
	if (isNaN(txtNumber) || txtNumber == "") {
	}
	else {
		var rxSplit = new RegExp('([0-9])([0-9][0-9][0-9][,.])');
		var arrNumber = txtNumber.split('.');
		arrNumber[0] += '.';
    do {
		arrNumber[0] = arrNumber[0].replace(rxSplit, '$1,$2');
	  } while (rxSplit.test(arrNumber[0]));
		if (arrNumber.length > 1) {
			return arrNumber.join('');
		} else {
			return arrNumber[0].split('.')[0];
		}
	}
};

String.prototype.prtPercent = function(){
  var txtNumber = '' + this;
	if (isNaN(txtNumber) || txtNumber == "") {
	}
	else {
		txtNumber = txtNumber+'%';
		return txtNumber;
	}
};


String.prototype.ConvertColorType = function(){
  if(isIE){
    return this.replace("#", "");
  }else{
    var reAt = /rgb\((.+)\)/;
    this.match(reAt);
    var ColorValue = RegExp.$1.split(", ");
    var nColorValue = ColorValue.collect(function(n){
      return parseInt(n).toColorPart();
    });
    return nColorValue.join('');
  }
}

Error.prototype.print = function(){
  return "EN:"+(this.number&0xFFFF)+" : "+this+"\n"+this.description;
}

Array.prototype.getIndex = function(sValue){
  var myIndex = -1;
  for(var a=0;a<this.length;a++){
    if(this[a] == sValue){
    myIndex = a;
    break;
    }
  }
  return myIndex;
}

String.prototype.toNumber = function(){
  return parseInt(this.replace(/\D/gi, "")); 
}

Number.prototype.toNumber = function(){
  return this;
}

/* defined method */
var ARIA = {
	/* 시작일과 종료일을 넘겨주면 두 날짜사이의 간격은 밀리세컨드로 리턴한다. */
	datediff: function(stDate, edDate){
	  if(typeof(stDate) == "string"){
  		try{
  			var PSDate = new Date();
  			var mPSDate = stDate.replace(/-/g, ",");
  		  eval("PSDate.setTime(Date.UTC("+mPSDate+"));");

  			var PEDate = new Date();
  			var mPEDate = edDate.replace(/-/g, ",");
  		  eval("PEDate.setTime(Date.UTC("+mPEDate+"));");

  			return PEDate.getTime() - PSDate.getTime();
  		}catch(E){
  			return NaN;
  		}
	  }else if(typeof(stDate) == "object"){
  		try{
  			return edDate.getTime() - stDate.getTime();
  		}catch(E){
  			return NaN;
  		}
	  }else{
	    return NaN;
	  }
	},
	dayDiff: function(stDate, edDate){
	  var MinMilli = 1000 * 60;
	  var HrMilli = MinMilli * 60;
	  var DyMilli = HrMilli * 24;

	  eval("var startDate = new Date("+ARIA.dateParse(stDate)+")");
	  eval("var endDate = new Date("+ARIA.dateParse(edDate)+")");
	  return (endDate - startDate)/DyMilli;
	},
	dateAdd: function(sTerm, dDate, iDateAdd){
		try{
			var MyDate = dDate;

			var MinMilli = 1000 * 60;
		  var HrMilli = MinMilli * 60;
		  var DyMilli = HrMilli * 24;

			var rMyDate = new Date();
			if(sTerm == "D"){
			  rMyDate.setTime(MyDate.getTime() + (iDateAdd*DyMilli));
			}
			if(sTerm == "M"){
				//이동해야할 일수가 몇 일인지 판단하는 계산이 필요함.
				var mmm = function(mm){
				  if((mm - 1) > -1)
				  return mm-1;
				  else
				  return 11;
				}
				
				if(iDateAdd > 0)
				var AddDayLenth = ARIA.MonthDayLength(MyDate.getFullYear()+"-"+MyDate.getMonth()+"-"+MyDate.getDate());
				else
				var AddDayLenth = ARIA.MonthDayLength(MyDate.getFullYear()+"-"+mmm(MyDate.getMonth())+"-"+MyDate.getDate());

				rMyDate.setTime(MyDate.getTime() + ((iDateAdd*AddDayLenth)*DyMilli));
			}
			if(sTerm == "Y"){
			  rMyDate.setTime(MyDate.getTime() + ((iDateAdd*365)*DyMilli));
			}
			return rMyDate;

		}catch(E){
		  alert("error"+E.description);
			return;
		}
	},
	dateParse: function(dDate){
		var aDate = dDate.split("-");
		return aDate[0]+","+(aDate[1]-1)+","+aDate[2];
	},
	dateDParse: function(sDate, sSeper){
		if(sSeper == undefined){
			sSeper = "-"
		}
    if(sDate.getMonth() == 0 && sDate.getDate() == 1){
		  return (sDate.getUTCFullYear()+1) +sSeper+(sDate.getMonth()+1).toPaddedString(2)+sSeper+sDate.getDate().toPaddedString(2);
		}else{
		  return sDate.getUTCFullYear() +sSeper+(sDate.getMonth()+1).toPaddedString(2)+sSeper+sDate.getDate().toPaddedString(2);
		}
	},
	convertDate: function(sDate){
		eval("var newDate = new Date("+ARIA.dateParse(sDate)+")");
		return newDate;
	},
	getYearA: function(dDate){
		if(isIE){
		 return dDate.getYear();
		}else{
		 return dDate.getYear()+1900;
		}
	},
	MonthDayLength: function(dDate){
		var aDate = dDate.split("-");
		//Day Length for Month
		if([3,5,8,10].include(aDate[1])){
			return 30;
		}else if(aDate[1] == 1){
			if (((aDate[0] % 4 == 0) && (aDate[0] % 100 !=0)) || (aDate[0] % 400 == 0)) {
				return 29;
			}else{
				return 28;
			}
		}else{
			return 31;
		}
	},
	/* 오브젝트의 속성을 리턴합니다. */
	printAll: function(mObject){
		var p_out = "";
    for(i in mObject){
      p_out += i+" : "+mObject[i]+"\n";
    }
    return p_out;
	},
	formCheck: function(mObj, sMsg, oOpt){
		if(mObj.value.strip() == ""){
			alert(sMsg);
			try{
				if(oOpt.focused != false)	mObj.focus();
			}catch(E){
				mObj.focus();
			}
			return true;
		}
		return false;
	},
	objectCheck: function(bObj, sMsg){
		if(bObj){
			alert(sMsg);
			return true;
		}
		return false;
	},
	objectCheckT: function(bObj, sMsg){
		if(!bObj){
			alert(sMsg);
			return true;
		}
		return false;
	},
	encode: function(sStr){
		return encodeURIComponent(sStr);
	},
	decode: function(sStr){
		return decodeURIComponent(sStr).replace(/\+/g, " ")
	},
	nTime: function(){
   var d, s = "UTC:";
   var c = ":";
   d = new Date();
   s += d.getUTCHours() + c;
   s += d.getUTCMinutes() + c;
   s += d.getUTCSeconds() + c;
   s += d.getUTCMilliseconds();
   return(s);
	},
	findID: function(sStr, sID){
		var sToMatch = sStr;
		var reAt = eval("/#"+sID+"\{([0-9a-zA-Z가-힣\-]+)\}/");
		if(reAt.test(sToMatch)){
		  var reArr = sToMatch.match(reAt);
			return RegExp.$1;
		}else{
			return undefined;
		}
	},
	ConvertName: function(sStr, sType, sNames){
      if(sType == ""){
        return sStr;
      }else if(sType == "WorksType"){
      	return "<img src=\"/inc/img/com/Works"+sStr+".gif\" align=\"absmiddle\">";
      }else if(sType == "during"){
      	if(isNaN(sStr)){
      		return sStr;
      	}else{
      		return duringCVT(sStr);
      	}
      }else if(sType == "role"){
      	if(isNaN(sStr)){
      		return sStr;
      	}else{
      		return roleCVT(sStr);
      	}
      }else if(sType == "characterCD"){
      	if(isNaN(sStr)){
      		return sStr;
      	}else{
      		return CodeCVT(sStr);
      	}
      }else if(sType == "pj_stat"){
      	if(isNaN(sStr)){
      		return sStr;
      	}else{
     		 	return pj_stat(sStr);
      	}
      }else if(sType == "billType"){
      	if(isNaN(sStr)){
      		return sStr;
      	}else{
      		return billType(sStr);
      	}
      }else if(sType == "billSendType"){
      	if(isNaN(sStr)){
      		return sStr;
      	}else{
      		return billSendType(sStr);
      	}
      }else if(sType == "checkbox"){
      	return "<input type=\"checkbox\" name=\""+sNames+":NO\" id=\""+sNames+":CHK("+sStr+")\" value=\""+sStr+"\">"
      }else if(sType == "pattern"){
        return "<img src=\"/inc/img/com/grid"+sStr+".gif\" align=\"absmiddle\">";
      }else if(sType == "Byte"){
        if(sStr != ""){
          var n_unit = "KB"
          sStr = sStr/1024;
          if(sStr/1024 > 1){
            n_unit = "MB"
            sStr = sStr/1024;
          }
          if(sStr/1024 > 1){
            n_unit = "GB"
            sStr = sStr/1024;
          }
          return ARIA.SH_round(sStr, 2)+n_unit;
        }else{
          return "";
        }
      }else if(sType == "money"){
        if(!isNaN(sStr))
          return sStr.toString().prtMoney();
        else
          return sStr;
      }else if(sType == "percent"){
        if(!isNaN(sStr))
          return sStr.toString().prtPercent();
        else
          return sStr;
      }else{
        if(Object.isFunction(sType))
          return sType(sStr);
        else
          return sStr;
      }
  },
	collectMax: function(DataSeq){
    return function(arg){
      // sorted words
      var sToMatch = arg[DataSeq].toString();
      var reAt = /[0-9]/gi;
      var reAt2 = /[a-z]/gi;
      var reAt3 = /[\.\,\:\;\'\"`!@#$%\^\&\*\(\+\-\=\\]/gi;
      var numLength = 0, engLength = 0, etcLengh = 0;
      if(reAt.test(sToMatch)){var numLength = sToMatch.match(reAt).length;}
      if(reAt2.test(sToMatch)){var engLength = sToMatch.match(reAt2).length;}
      if(reAt3.test(sToMatch)){var etcLengh = sToMatch.match(reAt3).length;}
      var allEtcLen = numLength+engLength+etcLengh;
      return ((sToMatch.length-allEtcLen)*12+(numLength+engLength)*6+etcLengh*1)+10;
    }
  },
  getMaxWidth: function(DataSeq, DataType){
    return function(arg){
      // sorted words
      if(DataType == "String"){
      var sToMatch = arg[DataSeq].decode().toString();
      }else{
      var sToMatch = arg[DataSeq].toString();
      }
      var reAt = /[0-9]/gi;
      var reAt2 = /[a-z]/gi;
      var reAt3 = /[\.\,\:\;\'\"`!@#$%\^\&\*\(\+\-\=\\]/gi;
      var numLength = 0, engLength = 0, etcLengh = 0;
      if(reAt.test(sToMatch)){var numLength = sToMatch.match(reAt).length;}
      if(reAt2.test(sToMatch)){var engLength = sToMatch.match(reAt2).length;}
      if(reAt3.test(sToMatch)){var etcLengh = sToMatch.match(reAt3).length;}
      var allEtcLen = numLength+engLength+etcLengh;
      return ((sToMatch.length-allEtcLen)*12+(numLength+engLength)*6+etcLengh*1)+10;
    }
  },
  convertType: function(sValue, sDataType){
    switch( sDataType.toLowerCase() ) {
      case "int" : return parseInt(sValue); 
      case "float" : return parseFloat(sValue); 
      case "adate" : return new Date(Date.parse(sValue)); 
      default : return sValue.toString();
      }
  },
  generateCompareObject: function(IDX, sDataType){
    return function compareDatas(obj1, obj2){
      if(sDataType == "int" || sDataType == "float"){
      var val1 = ARIA.convertType(obj1[IDX], sDataType);
      var val2 = ARIA.convertType(obj2[IDX], sDataType);
      }else{
      var val1 = ARIA.convertType(obj1[IDX], sDataType);
      var val2 = ARIA.convertType(obj2[IDX], sDataType);
      }

      if(val1 < val2){return -1;}else if(val1 > val2){return 1;}else{return 0;}

    };
  },
  generateCompareObjectDesc: function(IDX, sDataType){
    return function compareDatas(obj1, obj2){
      if(sDataType == "int" || sDataType == "float"){
      var val1 = ARIA.convertType(obj1[IDX], sDataType);
      var val2 = ARIA.convertType(obj2[IDX], sDataType);
      }else{
      var val1 = ARIA.convertType(obj1[IDX], sDataType);
      var val2 = ARIA.convertType(obj2[IDX], sDataType);
      }

      if(val1 < val2){return 1;}else if(val1 > val2){return -1;}else{return 0;}
    };
  },
  roundNumber: function(iNum, iCnt){
    return parseInt(iNum * Math.pow(10, iCnt)) / Math.pow(10, iCnt);
  },
  ArrayQueryString: function(aObj){
    var myquery = "";
    aObj.each(function(n){
      if(myquery == ""){
        myquery = Object.toQueryString(n);
      }else{
        myquery += "&"+Object.toQueryString(n);
      }
    });
    return myquery;
  },
  SH_round: function(vv, vf){
  	var n_txt =  vv.toString();
  	var n_ar = n_txt.split(".");
  	if(n_ar.length > 1){
  	var nn_s = n_ar[0]+"."+n_ar[1].substring(0, vf);
  	}else{
  	var nn_s = n_ar[0];
  	}
  	return(nn_s);
  },
  select: function(selectName, selectDatas){
    document.write("<select name=\""+selectName+"\">"); 
    selectDatas.each(function(n){
    document.write("  <option value=\""+n[0]+"\" "+n[2]+"> "+n[1]); 
    });
    document.write("</select>");
  },
  decodeWBS: function(sWBS){
    var myValue = "";
    for(var a=0;a<sWBS.length;a=a+3){
       if(myValue == "")
         myValue = parseInt(sWBS.substr(a, 3), 16);
       else
         myValue += "."+parseInt(sWBS.substr(a, 3), 16);
    }
    return myValue;
  }
}

/* defined Basic Class */


var NAMUbuttonMaker = Class.create();
NAMUbuttonMaker.prototype = {
  initialize: function(btv){
   this.btv = btv;
   this.pageStart = this.aligned.bindAsEventListener(this);
   Event.observe(window, 'load', this.pageStart);
  },
  aligned: function(){
    for(var o in this.btv){
      try{
      var myBT = $(this.btv[o]).innerHTML;
      var nyBT = "<TABLE class=\"S-btn-wrap S-btn\" cellSpacing=0 cellPadding=0 border=0 onMouseOver=\"this.className='S-btn-over S-btn';\" onMouseout=\"this.className='S-btn-wrap S-btn';\" onclick=\"this.className='S-btn-click S-btn';\">"
    +"        <TR valign=bottom>"
    +"          <TD class=S-btn-left><I>&nbsp;</I></TD>"
    +"          <TD class=S-btn-center style=padding:0px;><button class=\"S-btn-text\" style=padding-top:3px;>"+myBT+"</button></TD>"
    +"          <TD class=S-btn-right><I>&nbsp;</I></TD>"
    +"        </TR>"
    +"       </TABLE>";
      $(this.btv[o]).innerHTML = nyBT;
      }catch(E){

      }
    }
  }
} // NAMUbuttonMaker end

var NAMUBodyMask = Class.create();
NAMUBodyMask.prototype = {
  initialize: function(){
    this.showed = false;
    this.MaskerTG = document.body;
    this.locked = false;
    var MyMask = document.createElement("div");
    MyMask.id = "BodyMaskUnit";
    MyMask.className = "AriaBody-mask";
    
    Element.insert(this.MaskerTG, {top:MyMask});
    this.Masker = $("BodyMaskUnit");

    //this.Masker.hide();
    /* Event Observe */
    this.pageResize = this.Resizers.bindAsEventListener(this);
    Event.observe(window, 'resize', this.pageResize);
  },
  setMSG: function(sStr){
    this.Masker.update(sStr);
  },
  ShowMask: function(){

    this.Masker.setStyle({
      display:"",
      width:document.documentElement.scrollWidth+"px",
      height:document.documentElement.scrollHeight+"px"
    });
    this.showed = true;
  },
  HideMask: function(){
    if(!this.locked){
    this.Masker.hide();
    this.showed = false;
    }
  },
  Resizers: function(){
    if(this.showed){
    this.Masker.setStyle({
      width:document.documentElement.scrollWidth+"px",
      height:document.documentElement.scrollHeight+"px"
    });
    }
  },
  MaskLock: function(locked){
   this.locked = locked;
  }
} // NAMUBodyMask

var ARIADateSelectors = Class.create({
  initialize: function(oDates, options) {
    this.Dates = oDates;
    this.OPT = options;
    this.calenderOpened = false;
    this.Icon = undefined;

		Event.observe(this.Dates.TG, "mouseover", this.mMouseOver.bindAsEventListener(this), this.Dates.id);
		Event.observe(this.Dates.TG, "mouseout", this.mMouseOut.bindAsEventListener(this), this.Dates.id);
		Event.observe(this.Dates.TG, "mousedown", this.mMouseDown.bindAsEventListener(this), this.Dates.id);
		Event.observe(this.Dates.TG, "click", this.mMouseClick.bindAsEventListener(this), this.Dates.id);
		Event.observe(this.Dates.TG, 'keydown', this.onKeyPress.bindAsEventListener(this));

    this.OTG = new Element("div", {id:this.Dates.TG.id+"Dates"});
    if(this.OPT.ScrollTG){
      Element.insert(this.OPT.ScrollTG, {top:this.OTG});
    }else{
      Element.insert(document.body, {top:this.OTG});
    }
    Element.absolutize(this.OTG);
    this.OTG.className = "CalendarWin";
    this.OTG.setStyle({width:180,zIndex:1000});
    this.OTG.hide();
    this.mCalenderInit();
  },
  onKeyPress: function(event){
    switch(event.keyCode){
      case Event.KEY_TAB:
      case Event.KEY_RETURN:
      case Event.KEY_ESC:
        this.mSelectorClose();
        Event.stop(event);
      return;
      case Event.KEY_LEFT:
      case Event.KEY_RIGHT:
      case Event.KEY_UP:
      case Event.KEY_DOWN:
    }
  },
  mSelectorCloseEvent: function(event){
    if(this.calenderOpened){
      var myEle = Event.element(event);
      if(myEle.id.search(this.Dates.TG.id) == -1 && myEle.id != this.Icon){

        if(myEle.id != this.Dates.TG.id){
        this.mSelectorClose();
        }
      }
    }
  },
  mSelectorClose: function(){
    this.OTG.hide();
    this.calenderOpened = false;
    if(this.OPT.ScrollTG)
    Event.stopObserving(this.OPT.ScrollTG, "click", this.mSelectorCloseEvent.bindAsEventListener(this));
    else
    Event.stopObserving(document.body, "click", this.mSelectorCloseEvent.bindAsEventListener(this));
    this.Dates.TG.className = "ARIADateSelector";
  },
  mMouseOver: function(event, id){
    if(!this.calenderOpened){
		var myEle = Event.findElement(event, this.OPT.BoxTagName);
		myEle.className = "ARIADateSelectorOVER";
	  }
  },
  mMouseOut: function(event, id){
    if(!this.calenderOpened){
  		var myEle = Event.findElement(event, this.OPT.BoxTagName);
  		myEle.className = "ARIADateSelector";
		}
  },
  mMouseDown: function(event, id){
		var myEle = Event.findElement(event, this.OPT.BoxTagName);
		myEle.className = "ARIADateSelectorDOWN";
  },
  mMouseClick: function(event, id){
    if(this.OPT.ScrollTG)
    Event.observe(this.OPT.ScrollTG, "click", this.mSelectorCloseEvent.bindAsEventListener(this));
    else
    Event.observe(document.body, "click", this.mSelectorCloseEvent.bindAsEventListener(this));
		this.calenderOpened = true;
		this.mCalendarOpen();
  },
  mCalenderInit: function(){
    var DateClicks = this.mDateClick.bind(this);
    this.MyCalendar = new ARIAcalendar(this.OTG,
    this.OPT.WeekNames,
    {
    	DatePanelT:this.OPT.DatePanelT,
     	prevIcon:this.OPT.prevIcon, nextIcon:this.OPT.nextIcon,
     	DateChangeFn:"",
     	DateClickFn:DateClicks,
     	ThisMonthBG:"FFFFFF", OtherMonthBG:"F0F0F0"
    }
    );
    var nDate = new Date();
  },
  mDateClick: function(Dates){
    if(this.OPT.ChangeFn)
    this.OPT.ChangeFn(Dates, this.Dates.id);
  },
  mCalendarOpen: function(Options){
    this.OTG.show();

    if(this.OPT.ScrollTG){
      var ScrollPos = Element.cumulativeOffset(this.OPT.ScrollTG);
      var ScrollBox = Element.getDimensions(this.OPT.ScrollTG);
      var TGpos = Element.cumulativeOffset(this.Dates.TG);
      var TGBox = Element.getDimensions(this.Dates.TG);

      var CBox = {width:180,height:162};
      var objSY = eval(TGpos[1]+TGBox.height-ScrollPos[1]);
      var docHeight = ScrollBox.height + this.OPT.ScrollTG.scrollHeight;
      var objEY = eval(TGpos[1]+TGBox.height+CBox.height-ScrollPos[1]);

      //var myStr = " objSY : "+objSY+", objEY : "+(objEY)+", docHeight "+(docHeight) +", = "+(objEY > docHeight) +"/ TGpos[1] ="+TGpos[1];
      //$("testShow").update(myStr);

      if(objEY > docHeight){
        objSY = docHeight - (TGBox.height+CBox.height-ScrollPos[1]) - 10;
      }


      if(this.OPT.printup){
        objSY = TGpos[1] - CBox.height;
      }

      this.OTG.setStyle({
        top:objSY, left:TGpos[0]-ScrollPos[0]
      });
    }else{
      var TGpos = Element.cumulativeOffset(this.Dates.TG);
      var TGBox = Element.getDimensions(this.Dates.TG);
      var ScrollTop = document.body.scrollTop;
      var ScrollLeft = document.body.scrollLeft;
      var CBox = {width:180,height:162};
      var objSY = eval(TGpos[1]+TGBox.height);
      var docHeight = window.document.body.scrollHeight;
      var objEY = eval(TGpos[1]+TGBox.height+CBox.height);

      //var myStr = "objEY : "+(objEY)+" docHeight "+(docHeight) +" = "+(objEY > docHeight);
      //$("testShow").update(myStr);

      if(objEY > docHeight){
        objSY = objSY-(objEY-docHeight)-10;
      }
      this.OTG.setStyle({
        top:objSY, left:TGpos[0]
      });
    }
    
  	if(this.Dates.TG.innerHTML != ""){
  	  var newDate = new Date();
  	  var myDate = this.Dates.TG.innerHTML.stripTags().strip().replace("&nbsp;", "");
  	  
  	  if(myDate == "") myDate = ARIA.dateDParse(newDate);
      this.MyCalendar.setDate(myDate);
    }
    this.MyCalendar.PrtOut();
  },
  selectorOpen: function(Icon){
    this.Icon = Icon.id;
    if(this.OPT.ScrollTG)
    Event.observe(this.OPT.ScrollTG, "click", this.mSelectorCloseEvent.bindAsEventListener(this));
    else
    Event.observe(document.body, "click", this.mSelectorCloseEvent.bindAsEventListener(this));
    this.calenderOpened = true;
    this.mCalendarOpen();
  }
}); // ARIADateSelectors End

var ARIAcalendar = Class.create();
ARIAcalendar.prototype = {
	initialize: function(oTG, aWeekDays, oOpt){
  	this.oTG = oTG;
  	this.aWeekDays = aWeekDays;
  	this.BasicDate = new Date();
  	this.toDay = new Date();
  	this.oOpt = oOpt;

   	this.MouseDowns = this.mMouseDown.bindAsEventListener(this);
  	Event.observe(this.oTG, "mousedown", this.MouseDowns);
  },
  setDate: function(dDate){
		eval("this.BasicDate.setTime(Date.UTC("+ARIA.dateParse(dDate)+"))");
		if(this.oOpt.DateChangeFn)
		this.oOpt.DateChangeFn(ARIA.dateDParse(this.BasicDate));
  },
  setDateDate: function(dDate){
		this.BasicDate.setTime(dDate);
		if(this.oOpt.DateChangeFn)
		this.oOpt.DateChangeFn(ARIA.dateDParse(this.BasicDate));
  },
  PrtOut: function(){
  	var TGid = this.oTG.id;
		var Bdate = this.BasicDate;
		var Tdate = this.toDay;
		var options = this.oOpt;
		var mFirstDate = new Date(ARIA.getYearA(Bdate), Bdate.getMonth(), 1);
		var mLastDate = new Date(ARIA.getYearA(Bdate), Bdate.getMonth(), ARIA.MonthDayLength(ARIA.getYearA(Bdate)+"-"+Bdate.getMonth()));
		var mFirstWeekDay = mFirstDate.getDay();
		var mLastWeekDay = mLastDate.getDay();
		var gStartDate = ARIA.dateAdd("D", mFirstDate, -mFirstWeekDay);

		var myWeekDays = this.aWeekDays;
		var T = new Template(this.oOpt.DatePanelT);

		var yearTag = "<input type=\"text\" value=\""+ARIA.getYearA(Bdate)+"\" id=\""+TGid+"_Years\" style=\"width:35;\">";
		
		
		
		var yearTag = "<select id=\""+TGid+"_Years\" style=\"width:55px;\">";
		$A($R(Bdate.getFullYear()-50, Bdate.getFullYear()+50)).each(function(m){
		  if(m == Bdate.getFullYear())
		  yearTag += "<option value=\""+(m)+"\" selected>"+(m);
		  else
		  yearTag += "<option value=\""+(m)+"\">"+(m);
		});
		  yearTag += "</select>";
		
		
		var monthTag = "<select id=\""+TGid+"_Months\" style=\"width:40px;\">";
		(12).times(function(m){
		  if(m+1 == (Bdate.getMonth()+1))
		  monthTag += "<option value=\""+(m+1)+"\" selected>"+(m+1);
		  else
		  monthTag += "<option value=\""+(m+1)+"\">"+(m+1);
		});
		  monthTag += "</select>";

		var datas = {year:yearTag, month:monthTag};
    var NowDate = gStartDate;
		var p_out = ""
			+"<table width=100% height=100% cellpadding=0 cellspacing=0 class=\"CalendarTableS\">"
			+"	<tr height=1>"
				myWeekDays.each(function(WD, index){
p_out+="		<td bgcolor=\""+options.ThisMonthBG+"\"></td>"
				})
p_out+="	</tr>"
			+"	<tr height=25>"
			+"		<td bgcolor=\""+options.ThisMonthBG+"\" colspan=\""+myWeekDays.length+"\" align=center style=\"padding:0 10 0 10;\">"
			+"		<table width=100% cellpadding=0 cellspacing=0 class=\"CalendarTableS\" bgcolor=\"#FFFFFF\">"
			+"			<tr>"
			+"				<td width=10 bgcolor=\"#FFFFFF\"><img src=\""+this.oOpt.prevIcon+"\" align=absmiddle id=\""+TGid+"_Icon:Prev\" style=\"cursor:pointer;\"></td>"
			+"				<td align=center id=\""+TGid+"_Title\" bgcolor=\"#FFFFFF\">"+T.evaluate(datas)+"</td>"
			+"				<td width=10 align=right bgcolor=\"#FFFFFF\"><img src=\""+this.oOpt.nextIcon+"\" align=absmiddle id=\""+TGid+"_Icon:Next\" style=\"cursor:pointer;\"></td>"
			+"			</tr>"
			+"		</table>"
			+"</td>"
			+"	</tr>"
			+"	<tr height=20>"
				myWeekDays.each(function(WD, index){
p_out+="		<td class=\"header\" id=\""+TGid+"_Header\">"+WD+"</td>"
				})
p_out+="	</tr>"

				$A($R(0,5)).each(function(n){
p_out+="	<tr>"
					myWeekDays.each(function(WD, index){
					var DayCnt = eval((n*7)+index);
					var myDate = NowDate;
					/*
					if(myDate.getMonth() == 0 && myDate.getDate() == 1){
					  eval("myDate = new Date("+(myDate.getUTCFullYear()+2)+", 0, 1)");
					}
					*/
					
					var sMYclass = ""
					var bgColorValue = options.ThisMonthBG;

					if(Bdate.getMonth() != myDate.getMonth()){
							sMYclass = "iBody"
							bgColorValue = options.OtherMonthBG;
					}else{
							sMYclass = "body"
					}

					if(ARIA.dateDParse(Bdate) == ARIA.dateDParse(myDate)){
						sMYclass += " CalendarBasicday"
					}
					if(ARIA.dateDParse(Tdate) == ARIA.dateDParse(myDate)){
						sMYclass += " CalendarToday"
					}

p_out+="		<td bgcolor=\""+bgColorValue+"\" class=\""+sMYclass+"\" title=\""+ARIA.dateDParse(myDate, "/")+"\" id=\""+TGid+"#SCHDAY{"+ARIA.dateDParse(myDate)+"}\" style=\"cursor:pointer;\">"+myDate.getDate()+"</td>"
            
            
            NowDate = ARIA.dateAdd("D", NowDate, 1);
					});
p_out+="	</tr>"
				});
p_out+="</table>";

		this.oTG.update(p_out);

		this.dataChanges = this.onchange.bindAsEventListener(this);
  	Event.observe($(TGid+"_Years"), "change", this.dataChanges);
  	Event.observe($(TGid+"_Months"), "change", this.dataChanges);

  },
  mMouseDown: function(event){
  	var myEle = Event.element(event);
  	if(myEle.id == this.oTG.id+"_Icon:Prev"){
  		//Goto Prev Month
  		this.BasicDate = ARIA.dateAdd("M", this.BasicDate, -1)
  		//this.setDate(ARIA.dateDParse(this.BasicDate));
  		this.PrtOut();
  	}else if(myEle.id == this.oTG.id+"_Icon:Next"){
  		//Goto Next Month
  		this.BasicDate = ARIA.dateAdd("M", this.BasicDate, 1)
  		//this.setDate(ARIA.dateDParse(this.BasicDate));
  		this.PrtOut();
  	}else{
			var DateID = ARIA.findID(myEle.id, "SCHDAY");
			if(DateID != undefined){
			  if(this.oOpt.DateClickFn){
				this.oOpt.DateClickFn(DateID);
			  }
			}
  	}
  },
  onchange: function(event){
    var TGid = this.oTG.id;
    var eventSelect = Event.findElement(event, "SELECT");
    if(eventSelect){
      var nyear = $(TGid+"_Years").value;
      var nmonth = $(TGid+"_Months").value;
      this.setDate(nyear+"-"+nmonth+"-01");
      this.PrtOut();
    }
    var eventInput = Event.findElement(event, "INPUT");
    if(eventInput){
      var nyear = $(TGid+"_Years").value;
      var nmonth = $(TGid+"_Months").value;
      if(nyear.toString().length == 4){
      this.setDate(nyear+"-"+nmonth+"-01");
      this.PrtOut();
      }else{
        $(TGid+"_Years").value = ARIA.getYearA(this.BasicDate);
      }
    }
  }
} // ARIAcalendar End

var ARIASelect = Class.create();
ARIASelect.prototype = {
  initialize: function(oTG, oOpt){
    this.TG = oTG;
    this.OPT = oOpt;

    this.MouseClicks = this.mouseclick.bindAsEventListener(this);
  	Event.observe(this.TG, "click", this.MouseClicks);
  	this.MouseOvers = this.mouseover.bindAsEventListener(this);
  	Event.observe(this.TG, "mouseover", this.MouseOvers);
  	this.MouseOuts = this.mouseout.bindAsEventListener(this);
  	Event.observe(this.TG, "mouseout", this.MouseOuts);

  	if(this.OPT.Datas.length > 9){
      this.TG.setStyle({
        height:204, overflow:"auto"
      });
    }

  	this.listLoad();
  },
  /* event */
  mouseclick: function(event){
    var TGID = this.TG.id;
    var eventTD = Event.findElement(event, "TD");
    if(eventTD){
      var Ri = ARIA.findID(eventTD.id, "option");
      if(Ri){
        if(this.OPT.onclick){
          if(Ri == "nan")
          this.OPT.onclick(null);
          else{
          this.OPT.onclick(this.OPT.Datas[Ri]);
          }
        }
      }
    }
  },
  mouseover: function(event){
    var TGID = this.TG.id;
    var eventTD = Event.findElement(event, "TD");
    if(eventTD){
      var Ri = ARIA.findID(eventTD.id, "option");
      if(Ri){
        $(TGID+"#option{"+Ri+"}").setStyle({
          background:this.OPT.bgColors.over
        });
      }
    }
  },
  mouseout: function(event){
    var TGID = this.TG.id;
    var eventTD = Event.findElement(event, "TD");
    if(eventTD){
      var Ri = ARIA.findID(eventTD.id, "option");
      if(Ri){
        $(TGID+"#option{"+Ri+"}").setStyle({
          background:this.OPT.bgColors.off
        });
      }
    }
  },
  /* event */
  listLoad: function(){
    var TGID = this.TG.id;

    var p_out = [];
      p_out.push("<table width=\"100%\" cellpadding=0 cellspacing=0 bgcolor=\"ffffff\" style=\"table-layout:fixed;\">");
      if(this.OPT.allowNan)
      p_out.push("<tr height=20><td style=\"padding-left:5px;cursor:pointer;\" id=\""+TGID+"#option{nan}\">"+this.OPT.nanName+"</td></tr>");
    this.OPT.Datas.each(function(n, index){
      p_out.push("<tr height=20><td style=\"padding-left:5px;cursor:pointer;\" id=\""+TGID+"#option{"+index+"}\" class=\"ellips\"><nobr>"+n.text+"</nobr></td></tr>");
    });
      p_out.push("</table>");
    this.TG.update(p_out.join(''));
  },
  setDatas: function(Datas){
    this.OPT.Datas = Datas;
    if(this.OPT.Datas.length > 9){
      this.TG.setStyle({
        height:204, overflow:"auto"
      });
    }

  	this.listLoad();
  }

} // ARIASelect End


var ARIAQuickMenu = Class.create({
  initialize: function(oTG, Menus, Options){

    this.TG    = oTG;
    this.Menus  = Menus;
    this.OPT    = Options;
   
    if(!this.OPT.setWidth) this.OPT.setWidth = 150;

    var TGID    = this.TG.id;
    var MyMenu = new Element("div", {id:TGID+"#ARIAQuickMenu"});
    Element.insert(document.body, {top:MyMenu});
    Element.absolutize(MyMenu);
    MyMenu.className = "fbw_box_menu";
    MyMenu.setStyle({width:this.OPT.setWidth, zIndex:1000});
    MyMenu.hide();

    var p_out = [];
        p_out.push("<table width=\"100%\" height=100% class=\"fbw_box_menuTB\" cellpadding=\"0\" cellspacing=\"0\">");
        p_out.push("  <tr><td valign=top>");
        p_out.push("  <table width=100% class=\"fbw_box_menuTBin\" cellpadding=0 cellspacing=0>");
    this.Menus.each(function(n, index){
      if(n.tit == ""){
        p_out.push("    <tr id=\"split1\">"
                  +"      <td id=\"icon\"></td>"
                  +"      <td></td>"
                  +"    </tr>"
                  +"    <tr id=\"split2\">"
                  +"      <td id=\"icon\"></td>"
                  +"      <td></td>"
                  +"    </tr>");
      }else{
        p_out.push("    <tr id=\"#"+TGID+"Mmenus{"+index+"}\">"
                  +"      <td class=\"fbw_box_menuTBinIcon\" id=\"#"+TGID+"MmenusIcon{"+index+"}\">");
        if(n.ico == "")
        p_out.push("      &nbsp;</td>");
        else
        p_out.push("      <img src=\""+n.ico+"\" align=\"absmiddle\"></td>");
        p_out.push("      <td id=\"#"+TGID+"MmenusText{"+index+"}\">"
                  +"        "+n.tit+""
                  +"        </td>"
                  +"      </tr>");
      }
    });
        p_out.push("  </table>");
        p_out.push("  </td></tr>");
        p_out.push("</table>");
        
    $(TGID+"#ARIAQuickMenu").update(p_out.join(''));
    this.MenusObj = $(TGID+"#ARIAQuickMenu");
    this.MenusObj.hide();
    
    /* menus Observe */
    var MenuOvers  = this.mMenuOver.bindAsEventListener(this);
    var MenuOuts   = this.mMenuOut.bindAsEventListener(this);
    Event.observe(this.MenusObj, 'mouseover', MenuOvers);
    Event.observe(this.MenusObj, 'mouseout', MenuOuts); 
  
  },
  /* Event            ************************************************************** S */
  mOpen: function(event, seq){
    
    var TGID    = this.TG.id;
    
    this.Menus.each(function(n, index){
      if(n.tit != ""){
        if(seq){
         $("#"+TGID+"Mmenus{"+index+"}").show();
        }else{
         if(n.ObjNeed){
          $("#"+TGID+"Mmenus{"+index+"}").hide();
         }else{
          $("#"+TGID+"Mmenus{"+index+"}").show();
         }
        }
      }
    });
      
    var objSize = this.Menus.find(function(k){return k.ObjNeed == false;});
    if(objSize == undefined && seq == undefined){
      return;
    }
    
    ContainBox = this.MenusObj.getDimensions();
    
    var scrollTG = document.body;
    var scrollBox = {};
    var startPos = [0,0];
    
    if(this.OPT.scrollTG){
      scrollTG = this.OPT.scrollTG;
      
      startPos = Element.cumulativeOffset(scrollTG);
      scrollBox = scrollTG.getDimensions();
    }else{
      scrollBox.width = window.document.body.clientWidth;
      scrollBox.height = window.document.body.clientHeight;
    }

    var scrollTop = scrollTG.scrollTop;
    var scrollLeft = scrollTG.scrollLeft;
    
    var myPos = [0,0]; //x,y
    myPos[0] = Event.pointerX(event)+scrollLeft;
    //alert(eval(myPos[0]+ContainBox.width)+">"+eval(scrollBox.width));
    if(eval(myPos[0]+ContainBox.width) > eval(scrollBox.width+startPos[0])){
      myPos[0] = myPos[0]-ContainBox.width;
    }
    myPos[1] = Event.pointerY(event)+scrollTop;
    if(eval(Event.pointerY(event)+ContainBox.height) > eval(startPos[1]+scrollBox.height)){
      myPos[1] -= eval(Event.pointerY(event)+ContainBox.height) - eval(startPos[1]+scrollBox.height) + 15;
    }
    
    myPos[0] -= startPos[0];
    myPos[1] -= startPos[1];

    //alert(myPos[0]+"/"+myPos[1]);

    if(this.OPT.setWidth)
    this.MenusObj.setStyle({left:myPos[0], top:myPos[1], width:this.OPT.setWidth+"px"});
    else
    this.MenusObj.setStyle({left:myPos[0], top:myPos[1]});
    
    this.MenusObj.show();
    this.MenuOpened = true;



    this.menuClickObs = this.mMenuclick.bindAsEventListener(this);
    this.keydownObs = this.onKeydown.bindAsEventListener(this);
    Event.observe(document.body, "mouseup", this.menuClickObs);
    Event.observe(this.TG, "keydown", this.keydownObs);

    if(this.OPT.openFn)
    this.OPT.openFn(seq);
    this.seq = seq;
    

    
  },
  mClose: function(){
    this.MenusObj.hide();
    if(this.OPT.closeFn)
    this.OPT.closeFn();
    Event.stopObserving(document.body, "mouseup", this.menuClickObs);
    Event.stopObserving(this.TG, "keydown", this.keydownObs);
  },
  mMenuOver: function(event){
    var TGID    = this.TG.id;
    var eltTD = Event.findElement(event, "TR");
    if(eltTD){
      var seq = ARIA.findID(eltTD.id, TGID+"Mmenus");
      if(seq)
      $("#"+TGID+"Mmenus{"+seq+"}").addClassName("fbw_box_menuTBinOver");
    }
  },
  mMenuOut: function(event){
    var TGID    = this.TG.id;
    var eltTD = Event.findElement(event, "TR");
    if(eltTD){
      var seq = ARIA.findID(eltTD.id, TGID+"Mmenus");
      if(seq)
      $("#"+TGID+"Mmenus{"+seq+"}").removeClassName("fbw_box_menuTBinOver");
    }
  },
  mMenuclick: function(event){
    Event.stopObserving(document.body, "mouseup", this.menuClickObs);
    Event.stopObserving(this.TG, "keydown", this.keydownObs);
    
    var TGID = this.TG.id;
    if(this.MenuOpened){
      var myEle = Event.findElement(event, "TR");
      if(myEle){
        var seq = ARIA.findID(myEle.id, TGID+"Mmenus");
        if(seq){
          this.Menus[seq].Fn(this.seq);
          this.mClose();
        }else{
          this.mClose();
        }
      }else{
       this.mClose();
      }
    }
  },
  onKeydown: function(event){
    Event.stopObserving(document.body, "mouseup", this.menuClickObs);
    Event.stopObserving(this.TG, "keydown", this.keydownObs);
    if(this.MenuOpened){
      if(event.keyCode == Event.KEY_ESC){
        this.mClose();
      }
    }
  }
  /* Event            ************************************************************** E */
}); // ARIAQuickMenu End

var ARIAProcessing = Class.create({
  initialize: function(TGid, oOpt) {
    this.TGID = TGid;
    this.OPT  = oOpt;
    this.parentTG = document.body;
    this.totalCount = 0;

    var newElement = new Element("div", {id:this.TGID});
    Element.insert(this.parentTG, {top:newElement});
    newElement.className = "ARIAprocessing";
    newElement.setStyle({
      position:"absolute",
      display:"none"
    });
    this.TG = newElement;

    this.makeHead();

    Event.observe(window, 'resize', this.onresize.bindAsEventListener(this));
  },
  /* event */
  onresize: function(){
    if(this.resizeObserver) clearTimeout(this.resizeObserver);
      this.resizeObserver = setTimeout(this.setPosition.bind(this), 100);
  },
  /* event */
  makeHead: function(){
    var box = this.OPT.box;
    var color = this.OPT.color;
    var TGID = this.TGID;

    var p_out = [];
    p_out.push("<table width=100% height=100% cellpadding=0 cellspacing=0 style=\"table-layout:fixed;\">");
    p_out.push("<col width="+color.thick+"><col width="+color.thick+"><col><col width="+color.thick+"><col width="+color.thick+">");
    p_out.push("<tr height="+color.thick+">");
    p_out.push("  <td></td><td></td><td bgcolor=\""+color.line+"\"></td><td></td><td></td>");
    p_out.push("</tr>");
    p_out.push("<tr height="+color.thick+">");
    p_out.push("  <td></td><td bgcolor=\""+color.line+"\"></td><td bgcolor=\""+color.inBG+"\"></td><td bgcolor=\""+color.line+"\"></td><td></td>");
    p_out.push("</tr>");
    p_out.push("<tr>");
    p_out.push("  <td bgcolor=\""+color.line+"\"></td><td bgcolor=\""+color.inBG+"\"></td><td bgcolor=\""+color.inBG+"\" id=\""+TGID+"#contentBody\" style=\"padding:10px;\" valign=top></td><td bgcolor=\""+color.inBG+"\"></td><td bgcolor=\""+color.line+"\"></td>");
    p_out.push("</tr>");
    p_out.push("<tr height="+color.thick+">");
    p_out.push("  <td></td><td bgcolor=\""+color.line+"\"></td><td bgcolor=\""+color.inBG+"\"></td><td bgcolor=\""+color.line+"\"></td><td></td>");
    p_out.push("</tr>");
    p_out.push("<tr height="+color.thick+">");
    p_out.push("  <td></td><td></td><td bgcolor=\""+color.line+"\"></td><td></td><td></td>");
    p_out.push("</tr>");
    p_out.push("</table>");
    this.TG.update(p_out.join(''));

    var c_out = [];
    c_out.push("<table width=100% cellpadding=3 cellspacing=0>");
    c_out.push("  <tr>");
    c_out.push("    <td class=\"ARIAprocessingTitle\" colspan=2>"+this.OPT.title+"</td>");
    c_out.push("  </tr>");
    c_out.push("  <tr>");
    c_out.push("    <td colspan=2 style=\"padding-top:5px;\">");

    c_out.push("    <table width=100% height=18 cellpadding=0 cellspacing=0 style=\"table-layout:fixed;border:1px solid #888888;\">");
    c_out.push("      <tr>");
    c_out.push("        <td class=\"fbw_box_ON\" id=\""+TGID+"#progress\" width=1></td>");
    c_out.push("        <td>&nbsp;</td>");
    c_out.push("      </tr>");
    c_out.push("    </table>");

    c_out.push("    </td>");
    c_out.push("  </tr>");
    c_out.push("  <tr>");
    c_out.push("    <td id=\""+TGID+"#message\"></td><td id=\""+TGID+"#status\" align=\"right\">0/0</td>");
    c_out.push("  </tr>");
    c_out.push("</table>");
    $(TGID+"#contentBody").update(c_out.join(''));

  },
  /* method */
  boxOpen: function(topPos){
    this.setPosition(topPos);
    $(this.TGID).show();
  },
  boxClose: function(){
    $(this.TGID).hide();
  },
  setPosition: function(topPos){
    var box = this.OPT.box;
    var PTGbox = this.parentTG.getDimensions();
    var myLeft, myTop;
    myLeft = PTGbox.width/2 - box.width/2;
    myTop  = PTGbox.height/2 - box.height/2;
    if(topPos)
    myTop = topPos;

    this.TG.setStyle({
      left:myLeft, top:myTop, width:box.width, height:box.height
    });
  },
  setProgress: function(totalCount){
    this.totalCount = totalCount;
    $(this.TGID+"#status").update("0/"+this.totalCount);
  },
  setMessage: function(sStr){
    $(this.TGID+"#message").update(sStr);
  },
  setStep: function(step){
    $(this.TGID+"#status").update(ARIA.roundNumber(step/this.totalCount * 100, 1)+"% "+step+"/"+this.totalCount);
    $(this.TGID+"#progress").style.width = ARIA.roundNumber(step/this.totalCount * 100, 2)+"%";
  }
  /* method */
}); // ARIAProcessing End


var ARIAslider = Class.create({
  initialize: function(TG, Options){
    this.TG     = TG;
    this.OPT    = Options;
    
    this.rePos();
    
    Event.observe(window, 'scroll', this.rePos.bindAsEventListener(this));
  },
  rePos: function(event){
    var TGpos = this.TGPos;
    
    if(isIE && ieVer < 6)
    var scrollTop = document.body.scrollTop;
    else
    var scrollTop = document.documentElement.scrollTop;
    
    var myTop = this.OPT.top.y + scrollTop;
    
    if(this.OPT.pElement){
      var pOffset = this.OPT.pElement.cumulativeOffset();
      if(myTop - pOffset.top > 0){
        myTop = myTop - pOffset.top;
      }else{
        myTop = this.OPT.top.min;
      }
      if((this.OPT.box.height + myTop + this.OPT.top.margin_bottom + pOffset.top) > document.body.scrollHeight){
        myTop = document.body.scrollHeight - this.OPT.box.height - this.OPT.top.y - this.OPT.top.margin_bottom - pOffset.top;
      }
    }else{
      if((this.OPT.box.height + myTop + this.OPT.top.margin_bottom) > document.body.scrollHeight){
        myTop = document.body.scrollHeight - this.OPT.box.height - this.OPT.top.y - this.OPT.top.margin_bottom;
      }
    }
    
    if(this.OPT.posTest)
      this.TG.update(document.body.scrollHeight + "px, "+(this.OPT.box.height + myTop)+"px, "+myTop+"px, "+this.OPT.box.height+"px");  
    
    if(this.OPT.top.min){
      if(myTop < this.OPT.top.min) myTop = this.OPT.top.min;
    }
    
    this.TG.setStyle({top : myTop + "px"});
    /*
    if(this.OPT.posTest)
    this.TG.update(myTop + "px");
    */
    
  }
}); // ARIAslider End
