
var SCAN_TIMEOUT = 4;
var scanTimeout = SCAN_TIMEOUT;
var PAGE_TIMEOUT = 230; //230
var WARN_TIME = 30;
var WARN_MESSAGE = 'No recent activity detected.  Touch anywhere to prevent restart in [SECONDS] second[SECONDS_PLURAL].';
var MAX_PROGRESS_DOTS = 50;
var PROCESSING_MESSAGE = "Processing Badge Data ";
var ProcessingMessage = "";
var pageTimer = 0;
var ProgressDots = 0;
var pageTimerRestart = 0;
var strInput = "";
var discardedStrInput = "";
var BadgeStartCharCode = 94;
var BadgeEndCharCode = 13;
var BadgeSepCharCode = 9;

var BadgeStartChar = String.fromCharCode(BadgeStartCharCode);
var BadgeSepChar = String.fromCharCode(BadgeSepCharCode);

var RedirPage = "Contact-Information.aspx";
var MinFieldsToCapture = 5;
var AllowMultipleEndChars = false;
var AlwaysCapture = false;
var WaitForHowManyEndChars = 1;

var PreReplaceStrings = new Array();

var ScanDivElementId = "";
var BodyDivElementId = "";
var CaptureInProgress = false;
var EndCharCount = 0;
function setVisibleElement(ElementId,DisplayType) {
    if (ElementId && document.getElementById(ElementId)) {
        document.getElementById(ElementId).style.display = DisplayType;
    }
}
function setInnerHTML (ElementId,text,additive) {
    if (ElementId && document.getElementById(ElementId)) {
        if (additive)
            document.getElementById(ElementId).innerHTML += text;
        else
            document.getElementById(ElementId).innerHTML = text;
    }
}
function checkScanTimeout () {
	scanTimeout -= 1;
	if (scanTimeout == 0) {
		discardedStrInput = strInput;
		if (document.activeElement && document.activeElement.type) {
		    var el = document.activeElement;
		    if (el.type == "text" || el.type == "password")
		        el.value += discardedStrInput;
		    if (el.type == "textarea")
		        el.innerHTML += discardedStrInput;
		}
		strInput = "";
		setVisibleElement(BodyDivElementId,"block");
		setVisibleElement(ScanDivElementId,"none");
		CaptureInProgress = false;
		EndCharCount = 0;
		scanTimeout = SCAN_TIMEOUT;
	} else {
		setTimeout ("checkScanTimeout()",500);
	}
}
function filterKeys(event) {
    event = (event) ? event : ((window.event) ? event : null);
    var keyCode = (event.charCode) ? event.charCode : ((event.which) ? event.which : event.keyCode);
    var keyChar = String.fromCharCode(keyCode);
    if (CaptureInProgress) {
        if (keyCode == 13 && BadgeEndCharCode == 13) {
            captureKeys(event);
            return false;
        }
        if (keyCode == 8 || keyCode == 31 || keyCode == 10) {
    		strInput += keyChar;
           if(event.preventDefault) {
                event.preventDefault();
            }
           if(event.stopPropagation) {
                event.stopPropagation();
            }
            return false;
        }
    } 
    return true;
}
function captureKeys(event) {
  pageTimer = 0;
  pageTimerRestart = 0;
  event = (event) ? event : ((window.event) ? event : null);
  var SendKeyToPage = true;
  var keyCode = (event.charCode) ? event.charCode : ((event.which) ? event.which : event.keyCode);
	var keyChar = String.fromCharCode(keyCode);
	//alert (keyChar);
	scanTimeout = SCAN_TIMEOUT;
	if (keyChar == BadgeStartChar && !CaptureInProgress) {
		setVisibleElement(BodyDivElementId,"none");
		ProcessingMessage = PROCESSING_MESSAGE;
		setInnerHTML(ScanDivElementId,ProcessingMessage,false);
		ProgressDots = 0;
		setVisibleElement(ScanDivElementId,"block");
		strInput = keyChar;
		CaptureInProgress = true;
		EndCharCount = 0;
		SendKeyToPage = false;
		setTimeout ("checkScanTimeout()",500);
	} else if(CaptureInProgress || AlwaysCapture) {
		strInput += keyChar;
		SendKeyToPage = false;
		if ((strInput.length % 5) == 0) {
		    if (ProgressDots > MAX_PROGRESS_DOTS) {
		        ProcessingMessage += ". ";
        		setInnerHTML(ScanDivElementId,ProcessingMessage,false);
        		ProgressDots = 0;
		    }
		    setInnerHTML(ScanDivElementId,". ",true);
		    ProgressDots++;
		}
	}
	if (keyCode == BadgeEndCharCode && (CaptureInProgress || AlwaysCapture)) {
		EndCharCount++;
		// check for valid input
		var strInputReplaced = strInput;
		// replace the pre-replace strings
		for (var i = 0; i < PreReplaceStrings.length; i++) 
		    while (strInputReplaced.indexOf(PreReplaceStrings[i][0]) > -1)
    		    strInputReplaced = strInputReplaced.replace(PreReplaceStrings[i][0],PreReplaceStrings[i][1]);
		var a = (strInputReplaced+BadgeSepChar).split(BadgeSepChar);
		//alert (a.length);
		if (a.length > MinFieldsToCapture && EndCharCount >= WaitForHowManyEndChars) {
		    window.location.href = RedirPage + "?cardscan=wedge&carddata=" + escape(strInputReplaced);
//			document.all.cardform.carddata.value = strInput;
//			document.all.cardform.submit();
            SendKeyToPage = false;
		} else {
			if (!AllowMultipleEndChars) {
			    strInput = "";
		        setVisibleElement(BodyDivElementId,"block");
		        setVisibleElement(ScanDivElementId,"none");
		    }
		}
		//alert (strInput);
	}
    return SendKeyToPage;
}
function resetTimer() {
    pageTimerRestart = 0;
    if (document.getElementById("TimerWarning"))
        document.getElementById("TimerWarning").style.display = 'none';
}
function checkPageTimer(PageTimeOutUrl,PageTimeout,WarnTime,WarnMessage) {
    if (!PageTimeOutUrl) {
        PageTimeOutUrl = "/";
    }
    if (!PageTimeout || PageTimeout == 0) {
        PageTimeout = PAGE_TIMEOUT;
    }
    if (!WarnTime)
        WarnTime = WARN_TIME;
    if (!WarnMessage)
        WarnMessage = WARN_MESSAGE;
    if (pageTimerRestart > PageTimeout) {
        window.location.href = PageTimeOutUrl;
    } else {
        pageTimerRestart += 1;
        var warningdiv = document.getElementById("TimerWarning");
        if (((pageTimerRestart + WarnTime) > PageTimeout) && warningdiv) {
            var secondsRemaining = ((PageTimeout - pageTimerRestart) + 1);
            var secondsPlural = "s";
            if (secondsRemaining == 1)
              secondsPlural = "";
            warningdiv.innerHTML = WarnMessage.replace("[SECONDS]",secondsRemaining).replace("[SECONDS_PLURAL]",secondsPlural);
            warningdiv.style.display = 'block';
        } else if (warningdiv) {
            warningdiv.style.display = 'none';
        }
        setTimeout("checkPageTimer('" + PageTimeOutUrl + "'," + PageTimeout + "," + WarnTime + ",'" + WarnMessage.replace("'","\\'") + "')", 1000);
    }
}
