﻿function frmOrderPlanBCE_validate() {
	var cError = '';
	var iCnt = 0;
	var iPlanPackage_id = 17;

	// Check if a foundation has been selected
	if (document.frmOrderPlanBCE.opgPlanFoundation) {
		for (iCnt = 0; iCnt < document.frmOrderPlanBCE.opgPlanFoundation.length; iCnt++) {
			if (document.frmOrderPlanBCE.opgPlanFoundation[iCnt].checked == true)
				break;
		}

		if (iCnt >= document.frmOrderPlanBCE.opgPlanFoundation.length) {
			cError += 'Please select a foundation for the plan\n';
		}
	}

	// Check if RS Means Zip Code is required
	if (document.frmOrderPlanBCE.opgPlanOption) {
		for (iCnt = 0; iCnt < document.frmOrderPlanBCE.opgPlanOption.length; iCnt++) {
			if (document.frmOrderPlanBCE.opgPlanOption[iCnt].checked == true)
				if ((document.frmOrderPlanBCE.opgPlanOption[iCnt].value == '31' || document.frmOrderPlanBCE.opgPlanOption[iCnt].value == '32' || document.frmOrderPlanBCE.opgPlanOption[iCnt].value == '33' || document.frmOrderPlanBCE.opgPlanOption[iCnt].value == '34')) {
				if (document.frmOrderPlanBCE.BuildingSitePostalCode.value.length == 0)
					cError += 'Zip code of the construction site is required for Building-Cost Estimate\n';
				else if (document.frmOrderPlanBCE.BuildingSitePostalCode.value.length < 5)
					cError += 'Zip code must be exactly 5 digits\n';
				break;
			}
		}
	}

	if (cError.length)
		alert(cError);
	else {
		document.frmOrderPlanBCE.submit();
	}
	return (cError.length == 0);
}

function frmOrderPlan_validate() {
	var cError = '';
	var iCnt = 0;
	var iPackageCount = 0;
	var iFoundationCount = 0;
	var iBaseQty = 0;
	var iExtraSets = 0
	var iMirrored = 0
	var iPlanPackage_id = 0;

	if (document.frmOrderPlan.opgPlanPackage) {
		iPackageCount = document.frmOrderPlan.opgPlanPackage.length;

		if (iPackageCount == undefined) {
			iPlanPackage_id = document.frmOrderPlan.opgPlanPackage.value;
		}
		else {
			// Check if a package has been selected
			for (iCnt = 0; iCnt < iPackageCount; iCnt++) {
				if ((document.frmOrderPlan.opgPlanPackage[iCnt]) && (document.frmOrderPlan.opgPlanPackage[iCnt].checked == true)) {
					iPlanPackage_id = document.frmOrderPlan.opgPlanPackage[iCnt].value;
					break;
				}
			}

			if (iCnt >= iPackageCount) {
				cError += 'Please select a package to order\n';
			}
		}

		if ((iPlanPackage_id) && iPlanPackage_id > 0) {
			iExtraSets = parseInt(document.frmOrderPlan['cExtraSets_' + iPlanPackage_id].value);
			iMirrored = parseInt(document.frmOrderPlan['cMirrored_' + iPlanPackage_id].value);
			iBaseQty = parseInt(document.frmOrderPlan['cBaseQty_' + iPlanPackage_id].value);
		}

		if (iMirrored >= iBaseQty + iExtraSets) {
			cError += 'The number of mirrored sets can not be more\nthan the total number of sets ordered.\n';
			document.frmOrderPlan['cMirrored_' + iPlanPackage_id].selectedIndex = iBaseQty + iExtraSets - 1;
		}
	}

	// Check if a foundation has been selected
	if (document.frmOrderPlan.opgPlanFoundation) {
		iFoundationCount = document.frmOrderPlan.opgPlanFoundation.length;

		for (iCnt = 0; iCnt < iFoundationCount; iCnt++) {
			if ((document.frmOrderPlan.opgPlanFoundation[iCnt]) && (document.frmOrderPlan.opgPlanFoundation[iCnt].checked == true))
				break;
		}

		if (iCnt >= iFoundationCount) {
			cError += 'Please select a foundation for the plan\n';
		}
	}

	if (cError.length)
		alert(cError);
	else {
		document.frmOrderPlan.submit();
	}

	return (cError.length == 0);
}

function setupPlanOptions(iFoundation_id) {
	var iCnt, jCnt;
	var objText;
	var objPrice;

	for (iCnt = 0; iCnt < document.frmOrderPlan.chkPlanOption.length; iCnt++) {
		document.frmOrderPlan.chkPlanOption[iCnt].checked = false;
		document.frmOrderPlan.chkPlanOption[iCnt].disabled = true;
		objText = document.getElementById('textPlanOption_' + document.frmOrderPlan.chkPlanOption[iCnt].value);
		objText.style.color = '#999';
		objPrice = document.getElementById('pricePlanOption_' + document.frmOrderPlan.chkPlanOption[iCnt].value);
		objPrice.style.color = '#999';
	}

	for (jCnt = 0; jCnt < document.frmOrderPlan.chkPlanOption.length; jCnt++) {
		for (iCnt = 0; iCnt < planOptionFoundation[iFoundation_id].length; iCnt++) {
			objText = document.getElementById('textPlanOption_' + document.frmOrderPlan.chkPlanOption[jCnt].value);
			objPrice = document.getElementById('pricePlanOption_' + document.frmOrderPlan.chkPlanOption[jCnt].value);
			if (document.frmOrderPlan.chkPlanOption[jCnt].value == planOptionFoundation[iFoundation_id][iCnt]) {
				document.frmOrderPlan.chkPlanOption[jCnt].disabled = false;
				objText.style.color = '';
				objPrice.style.color = '';
			}
		}
	}
}

function frmOrderProject_validate() {
	document.frmOrderProject.submit();
	return (true);
}

function frmOrderProduct_validate() {
	document.frmOrderProduct.submit();
	return (true);
}

function frmCart_validateCreditCard() {
	var retVal = true;
	var grandTotal = 0;
	//	var ccn = document.getElementById(ccnObjectID);
	//	var ccem = document.getElementById('ddlCreditCartExpirationMonth');
	//	var ccey = document.getElementById('ddlCreditCartExpirationYear');
	var ccn = findControl('txtCreditCardNumber');
	var cartCell = findControl('hidGrandTotal');

	if (cartCell) {
		grandTotal = parseFloat(removeCurrency(cartCell.value));
	}

	if (grandTotal != 0) {
		if (formatCardNumber(ccn) || luhnCheck(ccn)) {
			alert('Invalid Credit Card Number');
			retVal = false;
		}

		//		if !(IsNumeric(ccem.value)) || !(IsNumeric(ccey.value))
		//		{
		//			alert('Invalid Expiration Date');
		//			retVal = false;
		//		}
	}

	//	if (retVal)
	//	{
	//		document.frmCart.submit()
	//	}

	return retVal;
}

function removeCurrency(strValue) {
	var objRegExp = /\(/;
	var strMinus = '';

	//check if negative
	if (objRegExp.test(strValue)) {
		strMinus = '-';
	}

	objRegExp = /\)|\(|[,]/g;
	strValue = strValue.replace(objRegExp, '');
	if (strValue.indexOf('$') >= 0) {
		strValue = strValue.substring(1, strValue.length);
	}
	return strMinus + strValue;
}

// Credit Card Functions

function formatCardNumber(objNumber) {
	var numbersOnly = /[0-9]/g;
	var aNumber = objNumber.value.match(numbersOnly);
	var cNumber;
	if (aNumber == null) {
		return true;
	}
	else {
		cNumber = aNumber.join("");
		if (cNumber.length < 15 || cNumber.length > 16) {
			return true;
		}
	}
	switch (cNumber.length) {
		case 15:
			var insertHypen = /^([0-9]{4})([0-9]{6})([0-9]{5})$/;
			objNumber.value = cNumber.replace(insertHypen, "$1-$2-$3");
			break;
		case 16:
			var insertHypen = /^([0-9]{4})([0-9]{4})([0-9]{4})([0-9]{4})$/;
			objNumber.value = cNumber.replace(insertHypen, "$1-$2-$3-$4");
			break;
	}
	return false;
}

function luhnCheck(objNumber) {
	var numbersOnly = /[0-9]/g;
	var aNumber = objNumber.value.match(numbersOnly);
	var cNumber;

	if (aNumber == null) {
		return true;
	}
	else {
		cNumber = aNumber.join("");
		switch (cNumber.length) {
			case 15:
				if (aNumber[0] != '3')
					return true;
				break;
			case 16:
				if (!(aNumber[0] == '4' || aNumber[0] == '5' || aNumber[0] == '6'))
					return true;
				break;
			default:
				return true;
		}
	}

	var CardNumber = cNumber;
	var no_digit = CardNumber.length;
	var oddoeven = no_digit & 1;
	var sum = 0;

	for (var count = 0; count < no_digit; count++) {
		var digit = parseInt(CardNumber.charAt(count));
		if (!((count & 1) ^ oddoeven)) {
			digit *= 2;
			if (digit > 9)
				digit -= 9;
		}
		sum += digit;
	}
	if (sum % 10 == 0)
		return false;
	else
		return true;
}



// xp_progressbar
// Copyright 2004 Brian Gosselin of ScriptAsylum.com
//
// v1.0 - Initial release
// v1.1 - Added ability to pause the scrolling action (requires you to assign
//        the bar to a unique arbitrary variable).
//      - Added ability to specify an action to perform after a x amount of
//      - bar scrolls. This requires two added arguments.
// v1.2 - Added ability to hide/show each bar (requires you to assign the bar
//        to a unique arbitrary variable).

// var xyz = createBar(
// total_width,
// total_height,
// background_color,
// border_width,
// border_color,
// block_color,
// scroll_speed,
// block_count,
// scroll_count,
// action_to_perform_after_scrolled_n_times
// )

var w3c = (document.getElementById) ? true : false;
var ie = (document.all) ? true : false;
var N = -1;

//function createBar(w, h, bgc, brdW, brdC, blkC, speed, blocks, count, action) {

function createProgressBar(divCss, blockCss, cellCss, width, height, speed, blocks, count, action) {
	if (ie || w3c) {
		//		var t = '<div id="_xpbar' + (++N) + '" style="background-color: #ffffff; border-color: #000000; border-style:solid; border-width:1px; font-size:1px; overflow:hidden; position:relative; visibility:visible; width:' + width + 'px; height:' + height + 'px;">';
		//		t += '<span id="blocks' + N + '" style="font-size:1px; position:absolute; left:-' + (height * 2 + 1) + 'px;">';
		//		t += '<span class="' + cellCss + '" style="font-size:1px; position:absolute; left:-' + ((height * i) + i) + 'px; width:' + height + 'px; height:' + height + 'px; '

		var t = '<div class="' + divCss + '" id="_xpbar' + (++N) + '" style="width:' + width + 'px; height:' + height + 'px;">';
		t += '<span class="' + blockCss + '" id="blocks' + N + '" style="left:-' + (height * 2 + 1) + 'px;">';
		for (i = 0; i < blocks; i++) {
			t += '<span class="' + cellCss + '" style="left:-' + ((height * i) + i) + 'px; width:' + height + 'px; height:' + height + 'px; '
			t += (ie) ? 'filter:alpha(opacity=' + (100 - i * (100 / blocks)) + ')' : '-Moz-opacity:' + ((100 - i * (100 / blocks)) / 100);
			t += '"></span>';
		}
		t += '</span></div>';
		document.write(t);
		var bA = (ie) ? document.all['blocks' + N] : document.getElementById('blocks' + N);
		bA.bar = (ie) ? document.all['_xpbar' + N] : document.getElementById('_xpbar' + N);
		bA.blocks = blocks;
		bA.N = N;
		bA.w = width;
		bA.h = height;
		bA.speed = speed;
		bA.ctr = 0;
		bA.count = count;
		bA.action = action;
		bA.togglePause = togglePause;
		bA.showBar = function() {
			this.bar.style.visibility = "visible";
		}
		bA.hideBar = function() {
			this.bar.style.visibility = "hidden";
		}
		bA.tid = setInterval('startBar(' + N + ')', speed);
		return bA;
	}
}

function startBar(bn) {
	var t = (ie) ? document.all['blocks' + bn] : document.getElementById('blocks' + bn);
	if (parseInt(t.style.left) + t.h + 1 - (t.blocks * t.h + t.blocks) > t.w) {
		t.style.left = -(t.h * 2 + 1) + 'px';
		t.ctr++;
		if (t.ctr >= t.count) {
			eval(t.action);
			t.ctr = 0;
		}
	} else t.style.left = (parseInt(t.style.left) + t.h + 1) + 'px';
}

function togglePause() {
	if (this.tid == 0) {
		this.tid = setInterval('startBar(' + this.N + ')', this.speed);
	} else {
		clearInterval(this.tid);
		this.tid = 0;
	}
}