function ParseJsonDate(date) {
    var dateNum = parseInt(date.toString().replace(/\/Date\((\d+)\)\//, '$1'));

    if (!isNaN(dateNum)) {
        date = new Date(dateNum);

        return (date.getMonth() + 1) + "/" + date.getDate() + "/" + date.getFullYear();
    } else {
        return "";
    }
}
function GetScrollOffset() {
    var offset = new Object();
    var scrOfX = 0, scrOfY = 0;
  
    if( typeof( window.pageYOffset ) == 'number' ) {
        //Netscape compliant
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;        
    } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
        //DOM compliant
        scrOfY = document.body.scrollTop;
        scrOfX = document.body.scrollLeft;        
    } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
        //IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
        scrOfX = document.documentElement.scrollLeft;
    }
    
    offset.x = scrOfX;
    offset.y = scrOfY;
    
    return offset;
}
String.prototype.trim = function() {
    return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,"");
}
function ValidateEmailAddress(emailAddress)
{
    var tmp = emailAddress.toString();
    tmp = tmp.replace("'", "");
    
    var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
    
	if (filter.test(tmp))
	{
		return true;
	}
	else
	{
		return false;
	}
}
function AddEmailAddress(textbox, listbox) {
    if (ValidateEmailAddress(textbox.value)) {
        var opt = document.createElement("option");
        opt.text = textbox.value;
        opt.value = textbox.value;
        try {
            listbox.add(opt, null);
        } catch(ex) {
            listbox.add(opt);
        }
    } else {
        try {
            DisplayExceptions("The email address you entered is not valid.");
        } catch (err) {
            alert("The email address you entered is not valid.");
        } finally {            
        }
    }
    
    textbox.value = "";
}
function RemoveSelectedItem(listbox) {
    if (listbox.selectedIndex >= 0) {
        listbox.remove(listbox.selectedIndex);
    }
}
function trim(string)
{
	return string.replace(/^\s*|\s*$/g,"");
}
function imgOver(imgId){
    var img = document.getElementById(imgId);
    if (document.images){
        img.src = eval(imgId + "ON.src");
    }
}
function imgOut(imgId){
    var img = document.getElementById(imgId);
	if (document.images){
		img.src = eval(imgId + "OFF.src");
	}
}
function openWin(page, width, height)
{
	var availWidth = window.screen.availWidth;
	var availHeight = window.screen.availHeight;
	
	var left = (availWidth / 2) - (width / 2);
	var top = (availHeight / 2) - (height / 2);
	
	var features = "toolbar=no,location=no,directories=no,status=yes,menubar=no,scrollbars=yes,resizable=no,width=" + width + ",height=" + height + ",top=" + top + ",left=" + top;
	window.open (page, "", features);
}


function TrapKeyDown(btn, event)
{
	if (document.all)
	{
	    // IE
		if (event.keyCode == 13)
		{
			event.returnValue = false;
			event.cancel = true;
			document.getElementById(btn).click();
			return false;
		}
		else
		{
			return true;
		}
	}
	else if (document.getElementById)
	{
	    // FireFox
		if (event.which == 13)  // Enter button
		{
		    document.getElementById(btn).click();
		    event.returnValue = false;
		    event.preventDefault();		    
		    return false;
		}
		else
		{
			return true;
		}
	}
	else if (document.layers)
	{
		if (event.which == 13)
		{
			event.returnValue = false;
			event.cancel = true;
			document.getElementById(btn).click();
			return false;
		}
		else
		{
			return true;
		}
	}
}
function isLeapYear(myyear) {
    myyear = parseInt(myyear);
    return (((myyear % 4 == 0) && (myyear % 100 != 0)) || (myyear % 400 == 0)) ? 1 : 0;
}

function CheckDate(mymonth,myday,myyear) {
    var datestatus;
    datestatus = true;
    mymonth = parseInt(mymonth);
    myday = parseInt(myday);

    if (isNaN(myyear) || myyear.length < 4 || isNaN(myday) || isNaN(mymonth)) {
        datestatus = false;
    }
    if (myyear > 2079 || myyear < 1900) {
        datestatus = false;
    } else if (myyear == 2079) {
        if (mymonth > 6) {
            datestatus = false;
        } else if (mymonth == 6) {
            if (myday > 6) {
                datestatus = false;
            }
        }
    } 
    if (datestatus) {
        switch (mymonth) {
            case 4:
                if (myday > 30) {
                    datestatus = false;
                }
                break;
            case 6:
                if (myday > 30) {
                    datestatus = false;
                }
                break;
            case 9:
                if (myday > 30) {
                    datestatus = false;
                }
                break;
            case 11:
                if (myday > 30) {
                    datestatus = false;
                }
                break;
            case 2:
                if (!isLeapYear(myyear)) {
                    if (myday > 28) {
                        datestatus = false;
                    }
                } else {
                    if (myday > 29) {
                        datestatus = false;
                    }
                }
                break;
        }
    }
    return datestatus;
}
function GetElementLocation(element) {
    var location = new Object(); 
    location.x = 0;
    location.y = 0;
    
    while(element != null)
    {
        location.x += element.offsetLeft;
        location.y += element.offsetTop;
        element = element.offsetParent;
    }
    return location;
}
function GetWindowSize() {
    var myWidth = 0, myHeight = 0;
    var windowsize = new Object();
    
    if ( typeof( window.innerWidth ) == 'number' ) {
        //Non-IE
        myWidth = window.innerWidth;
        myHeight = window.innerHeight;
    } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
        //IE 6+ in 'standards compliant mode'
        myWidth = document.documentElement.clientWidth;
        myHeight = document.documentElement.clientHeight;
    } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
        //IE 4 compatible
        myWidth = document.body.clientWidth;
        myHeight = document.body.clientHeight;
    }   
    
    windowsize.width = myWidth;
    windowsize.height = myHeight;
    
    return windowsize;
}
function Center(elementWidth, elementHeight) {
    var coords = new Object();
    var winsize = GetWindowSize();
    
    coords.top = 0;
    coords.left = 0;
    
    //var availWidth = window.screen.availWidth;
	//var availHeight = window.screen.availHeight;
	var availWidth = winsize.width;
	var availHeight = winsize.height;
	
	coords.left = (availWidth / 2) - (parseInt(elementWidth) / 2);
	coords.top = (availHeight / 2) - (parseInt(elementHeight) / 2);
		
	return coords;
}
function CenterWithScroll(elementWidth, elementHeight, offsetX, offsetY) {
    var coords = new Object();
    var winsize = GetWindowSize();
    
    coords.top = 0;
    coords.left = 0;
    
    var availWidth = winsize.width;
	var availHeight = winsize.height;
    //var availWidth = window.screen.availWidth;
	//var availHeight = window.screen.availHeight;
	
	coords.left = ((availWidth / 2) - (parseInt(elementWidth) / 2)) + offsetX;
	coords.top = ((availHeight / 2) - (parseInt(elementHeight) / 2)) + offsetY;
		
	return coords;
}
function FormatCurrency(num) {
    num = num.toString().replace(/\$|\,/g,'');

    if(isNaN(num))
        num = "0";

    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    cents = num % 100;
    num = Math.floor(num / 100).toString();

    if(cents < 10)
        cents = "0" + cents;
    
    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
        num = num.substring(0, num.length-(4*i+3)) + ',' + num.substring(num.length-(4*i+3));
        
    return (((sign)?'':'-') + '$' + num + '.' + cents);
}
function FormatTwoDigitDecimal(num) {
    num = num.toString().replace(/\$|\,/g,'');

    if(isNaN(num))
        num = "0";

    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    cents = num % 100;
    num = Math.floor(num / 100).toString();

    if(cents < 10)
        cents = "0" + cents;
    
    for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
        num = num.substring(0, num.length-(4*i+3)) + ',' + num.substring(num.length-(4*i+3));
        
    return (((sign)?'':'-') + num + '.' + cents);
}
function CloseDiv(div) {
    div.style.visibility = 'hidden';
}

function ShowServiceCenterInformation(sender, serviceCenterDiv, serviceCenterAbbr) {
    var loc = GetElementLocation(sender);
    
    serviceCenterDiv.style.left = (loc.x - (parseInt(serviceCenterDiv.style.width) / 2)) + "px";
    serviceCenterDiv.style.top = (loc.y - 140) + "px";
    
    GetServiceCenterInformation(serviceCenterAbbr, serviceCenterDiv);
}
function GetServiceCenterInformation(serviceCenterAbbr, serviceCenterDiv) {
    try {
        document.getElementById("dvLoading").style.visibility = 'visible';
    } catch (err) { } 
    DaytonFreight.Web.Services.ShippingServiceInterface.GetServiceCenterInformation(serviceCenterAbbr, GetServiceCenterInformation_OnComplete, OnError, serviceCenterDiv);
}
function GetServiceCenterInformation_OnComplete(result, userContext, methodName) {
    var tcTerminalInformation = document.getElementById("tcTerminalInformation");
    var tcTerminalName = document.getElementById("tcTerminalName");
    var innerhtml = "";
    
    tcTerminalName.innerHTML = "<b>" + result.Address.AddressName + "</b>"; 
    
    innerhtml = "<b>Abbreviation:</b>&nbsp;&nbsp;";
    innerhtml += result.Abbreviation + "<br />";
    innerhtml += "<b>Name:</b>&nbsp;&nbsp;" + result.Address.AddressName + "<br />";
    innerhtml += "<b>Address:</b><br />" + result.Address.Address1 + "<br />";
    innerhtml += result.Address.City + ", " + result.Address.State + " " + result.Address.ZipCode + "<br />";
    innerhtml += "<b>Phone:</b>&nbsp;&nbsp;" + PadLeft(result.RemotePhoneNumber.AreaCode, '0', 3) + "." + PadLeft(result.RemotePhoneNumber.Prefix, '0', 3) + "." + PadLeft(result.RemotePhoneNumber.Number, '0', 4) + "<br />";
    innerhtml += "<b>Fax:</b>&nbsp;&nbsp;" + PadLeft(result.FaxNumber.AreaCode, '0', 3) + "." + PadLeft(result.FaxNumber.Prefix, '0', 3) + "." + PadLeft(result.FaxNumber.Number, '0', 4);
    
    tcTerminalInformation.innerHTML = innerhtml;
    document.getElementById("dvLoading").style.visibility = 'hidden';
    userContext.style.visibility = 'visible';
}
function PadLeft(val, ch, num) {
    var re = new RegExp(".{" + num + "}$");
    var pad = "";

    if (!ch) {
        ch = " ";
    }
    
    do {
        pad += ch;
    } while (pad.length < num);
    
    return re.exec(pad + val);
}
function KeyCheck(e) {
    var KeyID = (window.event) ? event.keyCode : e.keyCode;
    	        
    if (KeyID == 13) {
        if (window.event) {
            window.event.cancel = true;
        } else if (event) {
            event.cancel = true;
        } else if (e) {
            e.cancel = true;
        }
    }
}
function GetQueryStringParm(name) {
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( window.location.href );
    
    if( results == null ) {
        return "";
    } else {
        return results[1];
    }        
}
function KeepAlive() {
    DaytonFreight.Web.Services.UtilityService.KeepAlive(KeepAlive_OnComplete, KeepAlive_OnError);
}
function KeepAlive_OnComplete(result) {
    var t = setTimeout("KeepAlive()", 300000);
}
function KeepAlive_OnError(err) {

}
