var axResult;

function validateForm(){
	var f = document.form1;
	var bValid = true;
	
	document.getElementById("loading").innerHTML = "";
	document.getElementById("smsg").innerHTML = "";
	if(f.BonusNo3.value == ""){
		document.getElementById("loading").innerHTML = "<strong><font color='#FF0000'>Please fill in your BonusLink Card Number</font></strong>";
		f.BonusNo3.focus();
		bValid = false;
	}
	else if(f.BonusNo3.value.length < 4){
		document.getElementById("loading").innerHTML = "<strong><font color='#FF0000'>Please complete your BonusLink Card Number</font></strong>";
		f.BonusNo3.focus();
		bValid = false;
	}
	else if(f.BonusNo4.value == ""){
		document.getElementById("loading").innerHTML = "<strong><font color='#FF0000'>Please fill in your BonusLink Card Number</font></strong>";
		f.BonusNo4.focus();
		bValid = false;
	}
	else if(f.BonusNo4.value.length < 4){
		document.getElementById("loading").innerHTML = "<strong><font color='#FF0000'>Please complete your BonusLink Card Number</font></strong>";
		f.BonusNo4.focus();
		bValid = false;
	}
	else if(f.BonusNo3.value.length == 4 && f.BonusNo4.value.length == 4){
		bValid = validateBNo("60188400"+f.BonusNo3.value+f.BonusNo4.value);
		if(!bValid){
			document.getElementById("smsg").innerHTML = "<strong><font color='#FF0000'>Sorry, this is not a winning card number.</font></strong>";
		}
	}

	if(bValid) {
		var sBonusID = f.BonusNo3.value + f.BonusNo4.value;
		document.getElementById("smsg").innerHTML = "";
		document.getElementById("loading").innerHTML = "Searching...";
		loadXMLDoc(sBonusID);
	}
}

function validateBNo(sBno){
	var result = true;
	if(sBno.length > 0){
		if(isNaN(sBno)) {
			result = false;
		}
		if(result){
			if(!luhnCheck(sBno)) {
				result = false;
			}
		}
	}
	return result;
}

function luhnCheck(sBno){
	var result = true;
	var sum = 0;
	var mul = 1;
	var strLen = sBno.length;
	for(var i=0;i<strLen;i++){
		var digit = sBno.substring(strLen-i-1,strLen-i);
		var tproduct = parseInt(digit,10)*mul;
		if(tproduct >= 10) {
			sum += (tproduct % 10) + 1;
		}
		else{
			sum += tproduct;
		}
		
		if(mul == 1){
			mul++;
		}
		else{
			mul--;
		}
	}
	if((sum%10) != 0){
		result = false;
	}
	return result;
}

function MoveNext(obj,txtlength,nextId){
	var sCurrValue = obj.value;
	if (sCurrValue.length  > txtlength - 1 ) document.getElementById(nextId).focus();
}

function loadXMLDoc(sBonusID){
	if (window.XMLHttpRequest) { // Mozilla, Safari,...
		axResult = new XMLHttpRequest();
		if (axResult.overrideMimeType) {
			axResult.overrideMimeType('text/xml');
		}
	} else if (window.ActiveXObject) { // IE
		try {
			axResult = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				axResult = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!axResult) {
		alert('Cannot create XMLHTTP instance');
		return false;
	}
	var sResultXML = "scripts/winnerlist.asp?sBonusID="+sBonusID;	
	//var sResultXML = "scripts/winnerlist.xml";
	axResult.onreadystatechange = parseResultList;
	axResult.open("GET",sResultXML,true);
	axResult.send(null);
}

function parseResultList() {
	if (axResult.readyState == 4) {
		switch (axResult.status) {
			case 200:
				//alert("200");
				var xmldoc = axResult.responseXML;
				var root = xmldoc.getElementsByTagName("status")[0];
				if(root.getAttribute("code") == 100){
					for (var i=0; i<root.childNodes.length; i++) {
						var nItem = root.childNodes.item(i);
						if (nItem.nodeName == "winner") {
							item_name = nItem.firstChild.nodeValue;
							document.getElementById("loading").innerHTML = "";
							document.getElementById("smsg").innerHTML = "<strong>Congratulations "+ item_name+"!</strong><br>"+"You have won 100 BonusLink Points.";
						}
					}
				}
				else{
					document.getElementById("loading").innerHTML = "";
					document.getElementById("smsg").innerHTML = "<strong><font color='#FF0000'>Sorry, this is not a winning card number.</font></strong>";
				}
				break;
			default:
				alert("Error "+axResult.status + " in loading data source.");
				break;
		}
	}
}
function checkInteger(textbox) {
	var v = textbox.value;
	var a = "";
	for (var i=0; i<v.length; i++) {
		if (!isNaN(v.charAt(i))) a += v.charAt(i);
	}
	textbox.value = a;
}