﻿Date.prototype.get_year = function() {
	try {
		var x = this.getYear();
		var y = x % 100;
		y += (y < 38) ? 2000 : 1900;
		return y;
	} catch(exc) { return -1; }
}

function getObj(name) {
	if (document.getElementById) {
		return document.getElementById(name);
	} else if (document.all) {
		return document.all[name];
	} else if (document.layers) {
		return document.layers[name];
	}
}

function getWidth(obj) {
    return (obj.offsetWidth) ? obj.offsetWidth : (obj.clientWidth) ? obj.clientWidth : obj.scrollWidth;
}

function getHeight(obj) {
    return (obj.offsetHeight) ? obj.offsetHeight : (obj.clientHeight) ? obj.clientHeight : obj.scrollHeight;
}

function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x) curleft += obj.x;
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y) curtop += obj.y;
	return curtop;
}

function getPosX(e) { // Returns the page x position
	if (!e) var e = window.event;
	var posx = 0;
	if (e.pageX) posx = e.pageX;
	else {
		if (document.documentElement && document.documentElement.scrollLeft) posx = e.clientX + document.documentElement.scrollLeft;
		else posx = e.clientX + document.body.scrollLeft;
	}
	return posx;
}

function getPosY(e) { // Returns the page y position
	if (!e) var e = window.event;
	var posy = 0;
	if (e.pageY) posy = e.pageY;
	else {
		if (document.documentElement && document.documentElement.scrollTop) posy = e.clientY + document.documentElement.scrollTop;
		else posy = e.clientY + document.body.scrollTop;
	}
	return posy;
}

function calendarMove() {
    suspendFrames = true;
}

function calendarOut() {
    suspendFrames = false;
}

function pickDate(sender, domEvent, targetID) {
    suspendFrames = true;
    var target = getObj(targetID);
    var frame = getObj("CalendarFrame");
    
    if (target) {
        var height = getHeight(sender);
        var y = findPosY(sender);
        var x = findPosX(sender);
        
        frame.src = "Calendar.aspx?d=" + target.value;
        frame.style.top = (y + height) + "px";
        frame.style.left = (x) + "px";
        frame.style.display = "";
    }
}

function validate(sender, domEvent, dataType) {
	switch (dataType) {
		case "date" :
		    var dt = new Date();
			if (sender.value.length == 8 || sender.value.length == 4) {
				var num = "^[0-9]+$";
				var check = new RegExp(num);
				if (check.test(sender.value)) { // user entered numbers, convert to date
					if (sender.value.length == 8) sender.value = sender.value.substring(0,2) + "/" + sender.value.substring(2,4) + "/" + sender.value.substring(4,8);
					if (sender.value.length == 4) sender.value = sender.value.substring(0,2) + "/" + sender.value.substring(2,4) + "/" + (new Date().get_year());
				}
			}
		break;
	}
}

function handleKey(sender, domEvent, dataType, validChars) {
    var key = (domEvent.keyCode) ? domEvent.keyCode : domEvent.which;

    if (key == 13) {
        //if (Page) Page.moveFocusFrom(t, k.isShift());
	    if (domEvent.which) return false;
	    else domEvent.returnValue = false;
    } else if (key == 8 || key == 9) {
        if (domEvent.which) return true;
        else domEvent.returnValue = true;
    } else {
        switch(dataType) {
            case "date" :
                if (key < 47 || key > 57) {
                    if (domEvent.which) return false;
                    else domEvent.returnValue = false;
                }
            break;
            case "float" :
                if (key < 45 || key > 57) {
                    if (domEvent.which) return false;
                    else domEvent.returnValue = false;
                }
            break;
        }
    }
}

function hasAgreedToTerms() {
    var IAgree = getObj("IAgree");
    
    if (IAgree.checked) {
        return true;
    } else {
        alert("Please indicate your acceptance of the provisions for use, by clicking the indicated check box.\n\nCalculations are not performed until acceptance of the provisions has been indicated.");
        return false;
    }
}
