﻿<!--
// Items to change to suit your form 
//============================================
//The domain name you are on
var domain = "websrvc/validation.asmx"
//The number of form elements you are validating on the form
var numElements = 4;
// The width you want the bar to be.
// Should be evenly divisible by the number of elements above
var barWidth = 320;
//============================================

var counter = 0;

// The Web Service Methods
var txtURL = "/validateText";
var regURL = "/validateRegEx";
var xmlDoc, increment, maxLength;

function XMLClient() {}

// Set the incrementation of the bar and get the bar width minus 1 increment
function getDimensions() {
	increment = Math.floor(barWidth / numElements);
	maxLength = barWidth - increment;
	// Set the Bar Outline width
	document.getElementById("barLine").style.width = barWidth + "px";
	//Set the Percentage Bar width
	document.getElementById("perc").style.width = barWidth + "px";
}
getDimensions();

// Checks the form fields after submission to reset the messages
function startMe() {
	for (i=0; i < numElements; i++) {
		if (document.getElementById("F" + i + "").value == "1") {
			document.getElementById("ErrF" + i + "").className = "green bold";
			document.getElementById("ErrF" + i + "").innerHTML = "OK";
			GBarAdd();
		}
	}
}

// Text Validation
function valText(element1, min, max, element2) {
	var oXMLHTTP = XMLClient._getXmlHttp();
	oXMLHTTP.open("POST", domain + txtURL, false );
	oXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
	oXMLHTTP.send("txt=" + document.getElementById("" + element1 + "").value + "&minLen="+ min +"&maxLen=" + max);
	getData( oXMLHTTP.responseText);
	var x = xmlDoc.getElementsByTagName("msg")[0].firstChild.nodeValue
	if (x == "OK") {
		document.getElementById("Err" + element2 +"").className = "green bold"
		document.getElementById("Err" + element2 +"").innerHTML = x
		if (document.getElementById("" + element2 + "").value == "0") {
			document.getElementById("" + element2 + "").value = "1";
			GBarAdd();
			}
		}
	else {
		document.getElementById("Err" + element2 +"").className = "small red bold"
		document.getElementById("Err" + element2 +"").innerHTML = x
		if (document.getElementById("" + element2 + "").value == "1") {
			document.getElementById("" + element2 + "").value = "0";
			GBarMinus();
		}	
	}
}

// Regular Expression Validation
// 1 - Email Validation
// 2 - US Phone Validation
// 3 - Social Security Validation
// 4 - Credit Card Validation with Luhn's Algorythm
function valRegEx(element1, option, element2, valDB) {
	var oXMLHTTP = XMLClient._getXmlHttp();
	oXMLHTTP.open("POST", domain + regURL, false );
	oXMLHTTP.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
	oXMLHTTP.send("txt=" + document.getElementById("" + element1 + "").value +"&opt=" + option +"&valDB=" + valDB);
	getData( oXMLHTTP.responseText);
	var x = xmlDoc.getElementsByTagName('msg')[0].firstChild.nodeValue
	if (x == "OK") {
		document.getElementById("Err" + element2 +"").className = "green bold"
		document.getElementById("Err" + element2 +"").innerHTML = x
		if (document.getElementById("" + element2 + "").value == "0") {
			document.getElementById("" + element2 + "").value = "1";
			GBarAdd();
			}
		}
	else {
		document.getElementById("Err" + element2 +"").className = "small red bold"
		document.getElementById("Err" + element2 +"").innerHTML = x
		if (document.getElementById("" + element2 + "").value == "1") {
			document.getElementById("" + element2 + "").value = "0";
			GBarMinus();
		}
	}
}

// Creates an XML file from the Response text from the Web Service
function getData(response) {
	if (document.implementation && document.implementation.createDocument) {
		xmlDoc = new DOMParser().parseFromString(response, 'text/xml');
		}
	else if (window.ActiveXObject) {
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.loadXML(response);
		return xmlDoc;
		}
	else {
		return;
	}
}

// Adds an increment to the progress bar
function GBarAdd() {
	counter += increment;
	var perc = (counter / barWidth) * 100;
	var vc = Math.floor(perc);
	document.getElementById("perc").innerHTML = vc + "% Complete"
	if (counter <= maxLength) {
		document.getElementById("GaugeBar").style.width = counter + "px";
		}
	else {
		counter = barWidth;
		document.getElementById("GaugeBar").style.width = counter + "px";
		document.getElementById("btnSubmit").style.display=""
		}
}

// Subtracts an increment from the progress bar
function GBarMinus() {
	counter -= increment;
	var perc = (counter / barWidth) * 100;
	var vc = Math.floor(perc)
	document.getElementById("perc").innerHTML =  vc + "% Complete"
	if (counter >= increment) {
		document.getElementById("GaugeBar").style.width = counter + "px";
		document.getElementById("btnSubmit").style.display="none"
		}
	else {
		counter = 0;
		document.getElementById("GaugeBar").style.width = counter + "px";
		document.getElementById("btnSubmit").style.display="none"
	}
}

function hideForm() {
	document.getElementById("pnlForm").style.display = "none";
	document.getElementById("dvMsg").style.display = "";
}

function showForm() {
	if (document.getElementById("showForm").value == "1") {
		document.getElementById("pnlForm").style.display = "";
		document.getElementById("dvMsg").style.display = "none";
		}
	else {
		document.getElementById("pnlForm").style.display = "none";
		document.getElementById("dvMsg").style.display = "none";
		}
}

XMLClient._getXmlHttp = function() {
	try {
		if(window.XMLHttpRequest) {
			var req = new XMLHttpRequest();
			if(req.readyState == null) {
				req.readyState = 1;
				req.addEventListener("load", function() {req.readyState = 4; if(typeof req.onreadystatechange == "function") req.onreadystatechange();}, false);
				}
			return req;
			}
		if(window.ActiveXObject) 
			return new ActiveXObject(XMLClient._getXmlHttpProgID());
		}
	catch (ex) {}
	throw new Error("Your browser does not support XmlHttp.");
}
XMLClient._getXmlHttpProgID = function() {
	if(XMLClient._getXmlHttpProgID.progid)
		return XMLClient._getXmlHttpProgID.progid;
	var progids = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP", "Microsoft.XMLHTTP"];
	var o;
	for(var i = 0; i < progids.length; i++) {
		try {o = new ActiveXObject(progids[i]); return XMLClient._getXmlHttpProgID.progid = progids[i];}
		catch (ex) {};
		}
	throw new Error("Could not find an XML parser.");
}

startMe();
showForm();
//-->