﻿var vchvr = false;
var dtpkColl = [];
function DtPicker(ctrl, calUrl, lowDateCtrl, highDateCtrl) {
    if (ctrl != null) {
        var tempSrc = -1;
        this.trgt = ctrl;
        for (var i = 0; i < dtpkColl.length; i++) {
            if (dtpkColl[i].id == this.trgt.id) {
                tempSrc = i;
            }
        }
        if (tempSrc == -1) {
            dtpkColl[dtpkColl.length] = ctrl;
            this.trgt.calsrc = calUrl + "?scrSuffix=" + parseInt(dtpkColl.length - 1);
        }
        else {
            dtpkColl[tempSrc] = ctrl;
            this.trgt.calsrc = calUrl + "?scrSuffix=" + tempSrc;
        }
        this.trgt.trgtctrl = this.trgt;
        this.trgt.lowDateCtrl = lowDateCtrl;
        this.trgt.highDateCtrl = highDateCtrl;

        if (this.trgt.DisableCalendarOnFocus == "0") {
            addEventcal(this.trgt, "click", addCal);
            addEventcal(this.trgt, "focus", addCal);

            this.trgt.onkeydown = vcal_checkkey;
            this.trgt.onkeyup = vcal_checkdate;
        }
        this.trgt.showonfocus = 1;

        this.calImg = $get(this.trgt.id + "_calimg");
        if (this.calImg != null) {
            this.calImg.style.cursor = "pointer";
            this.calImg.trgtctrl = this.trgt;
            addEventcal(this.calImg, "click", addCal);
        }
    }
}

function getDateValues(ele, attr) {
    if (typeof attr == "string") {
        return attr;
    } else if (typeof attr == "function") {
        return attr(ele);
    }
    return null;
}

function addCal() {
    if(this.trgtctrl.showonfocus == 1)
       {  
        this.trgtctrl.showonfocus = 0;
        var iframe = $get('DHTMLIFrame');
        if (iframe == null) { iframe = parent.$get('DHTMLIFrame'); }
        if ((iframe.style.display == "none") || (iframe.trgt != this.trgtctrl)) {
            var lowdate, highdate, dowmask;
            lowdate = getDateValues(this.trgtctrl, this.trgtctrl.LowDate)
            lowdate = ((lowdate != null) ? "&lowdates=" + datesConvert(lowdate, this.trgtctrl.DateFormat) : "");

            highdate = getDateValues(this.trgtctrl, this.trgtctrl.HighDate)
            highdate = ((highdate != null) ? "&highdates=" + datesConvert(highdate, this.trgtctrl.DateFormat) : "");

            dowmask = getDateValues(this.trgtctrl, this.trgtctrl.DowMask)
            dowmask = ((dowmask != null) ? "&dowmasks=" + this.trgtctrl.DowMask : "");

            var tempUrl = this.trgtctrl.calsrc + lowdate + highdate + dowmask;
            iframe.src = tempUrl + calsrcurl(this.trgtctrl);
            iframe.style.width = "412px"; 
            iframe.style.height = "171px"; 
            iframe.style.position = "absolute"; 
            calculatepos(this.trgtctrl,iframe);
            iframe.onmouseover = function() {vchvr = true;};
            iframe.onmouseout = function() {vchvr = false;};
            document.body.onmousedown = removeCal;
            iframe.trgt = this.trgtctrl;
            iframe.style.display = "block";
            iframe.style.zIndex=100005;
         }
       } 
    }

    function dateConvert(val, format) {
        var a = parseDateFormat(val, format);
        if (a != null) {
            return siteDateFormat(a, GlobalFormat.SiteDateFormat);
        }
    }

    //function handles pipe separated values of highdates,lowdates.
    function datesConvert(val, format) {
        var dt;
        if (typeof val == "string" && val != "") {
            var newval = "";
            var s = val.split('|');
            for (var i = 0; i < s.length; i++) {
                if (newval != "") newval = newval + "|";
                newval = newval + dateConvert(s[i], format);
            }
            return newval;
        }
        return dt;
    }

  function calsrcurl(trgtctrl)
  {
        var lowDateCtrl="";
        var highDateCtrl="";
        var defaultDate = "";
        var dt;
        if (trgtctrl.lowDateCtrl != null) {
            dt = dateConvert(trgtctrl.lowDateCtrl.value.trim(), trgtctrl.lowDateCtrl.DateFormat)
            if (dt != null){
                lowDateCtrl = "&DepartDate=" + dt;
            }
        }
        if (trgtctrl.highDateCtrl != null) {
            dt = dateConvert(trgtctrl.highDateCtrl.value.trim(), trgtctrl.highDateCtrl.DateFormat)
            if (dt != null) {
                highDateCtrl = "&ReturnDate=" + dt;
            }
        }
        if (trgtctrl.value != null) {
            dt = dateConvert(trgtctrl.value.trim(), trgtctrl.DateFormat)
            if (dt != null) {
                defaultDate = "&DefaultDate=" + dt;
            }
        }
       
      return lowDateCtrl + highDateCtrl + defaultDate;
  } 
    

function vcal_checkkey(evt){
		if (!evt) evt = event;
		a = evt.keyCode;
		switch (a){
			case 13: case 9:
                removeCal();
			    return true;
				break;
			default:
			  	break;
		}
}

function vcal_checkdate(evt){
		if (!evt) evt = event;
		a = evt.keyCode;
		switch (a){
			case 13: case 9: case 37: case 38: case 39: case 40:
           	    return true;
				break;
			default:
			    var iframe = $get('DHTMLIFrame');
			    if (iframe == null) { parent.$get('DHTMLIFrame'); }
			    if (iframe.style.display == "block") {
                        iframe.src=this.trgtctrl.calsrc + calsrcurl(this.trgtctrl);
                        }
				break;
		}
}

function onDateSelect(scrsuffix, value) {
   setTimeout(removeCal, 1);

   var frames = window.frames;
   var ele = null;
   for (var i = 0; i < frames.length; i++) {
       if ((frames[i].dtpkColl != undefined) && (frames[i].dtpkColl.length >= scrsuffix)) { ele = frames[i].dtpkColl[scrsuffix]; }        
   }
   if (ele == null) { ele = dtpkColl[scrsuffix]; }
         
   if (ele != null) {  
       if (ele.DateFormat != null) {
               var a = parseDateFormat(value, GlobalFormat.SiteDateFormat);
                if (a != null) {
                    ele.value = siteDateFormat(a, ele.DateFormat);
                    callValidator(ele);
                }
        }
        else{
            ele.value = value;
            callValidator(ele);
        }
        ele.focus();
        if (ele.setdatefunction != null) {
            eval(ele.setdatefunction + "(ele,value)");
        } 
    }
}

function callValidator(trgt) {
    if (trgt.Validators != null) {
        if (trgt.Validators.length > 0) {
            var val = trgt.Validators[0];
            val.innerHTML = '';
            val.evaluationfunction(val);
        }
    }
}


function removeCal(){
    var cal = $get('DHTMLIFrame');
    if (cal == null) { cal = parent.$get('DHTMLIFrame'); }
    if (cal != null) {
        if (cal.style.display == "block")
        // if (cal != null )
        {
            cal.style.display = "none";
            cal.trgt.showonfocus = 1;
            vchvr = false;
            document.body.onmousedown = null;
        }
    }
}

function FindWinW() {
return self.innerWidth ? self.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body ? document.body.clientWidth : 0;
}

function FindWinH() {
return self.innerHeight ? self.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body ? document.body.clientHeight : 0;
}


function FindWinScrX() {
return self.pageXOffset ? self.pageXOffset : document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body ? document.body.scrollLeft : 0;
}

function FindWinScrY() {
return self.pageYOffset ? self.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body ? document.body.scrollTop : 0;
}


function calculatepos(trgtctl, frame) {

var xsDiv = null;
var ysDiv = null; 

var oPos =  trgtctl; 
var oDiv =  frame; 

var iBottom = FindWinScrY() + FindWinH();
var iLeft = FindWinScrX() + FindWinW();

var ysDiv  = curTop(trgtctl) + trgtctl.offsetHeight;
var xsDiv = curLeft(trgtctl);

if (window.document.getElementById(frame.id) == null) {
    var frames = window.parent.frames;
    for (var i = 0; i < frames.length; i++) {
        calTarget = frames[i].document.getElementById(trgtctl.id);
        if (calTarget != undefined) {
            ysDiv = curTop(frames[i].frameElement) + ysDiv;
            xsDiv = curLeft(frames[i].frameElement) + xsDiv;
            iBottom = parent.FindWinScrY() + parent.FindWinH();
            iLeft = parent.FindWinScrX() + parent.FindWinW();
            break;
        }
    }
}

var iPopH = parseInt(oDiv.style.height,10);
var iPopW = parseInt(oDiv.style.width,10);

 if(ysDiv + iPopH > iBottom) {
     ysDiv = (ysDiv - trgtctl.offsetHeight - iPopH);
     oDiv.style.top = ysDiv + 'px';
  }
 else
  {
  oDiv.style.top = ysDiv + 'px'; 
  }
  
  
  if(xsDiv + iPopW > iLeft) {
     xsDiv = (iLeft - iPopW);
     oDiv.style.left = xsDiv + 'px';
  }
 else
  {
   oDiv.style.left = xsDiv + 'px';
  }
}

function onDateChange(ctrl) {
    var a = parseVaxDate(ctrl.value.trim());
    if (a != null) {
        var d = siteDateFormat(a, ctrl.DateFormat);
        ctrl.value = d;
        if (ctrl.setdatefunction != null) {
            eval(ctrl.setdatefunction + "(ctrl,d)");
        }
    }
}

function addEventcal( obj, type, fn )
{
	if (obj.addEventListener)
		obj.addEventListener( type, fn, false );
	else if (obj.attachEvent)
	{
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
	}
}

if(typeof(Sys)!=='undefined')Sys.Application.notifyScriptLoaded();