var globQuantity = 0;

function loadUrl_(url, mode) {
  if(window.XMLHttpRequest) {
    try { req = new XMLHttpRequest();
    } catch(e) { req = false; }
  } else if(window.ActiveXObject) {
    try { req = new ActiveXObject('Msxml2.XMLHTTP');
    } catch(e) {
    try { req = new ActiveXObject('Microsoft.XMLHTTP');
    } catch(e) { req = false; }
  } }
  if(req) {
 		switch (mode) {
 			case 1: req.onreadystatechange = dataLoaded_; break;
 		}
    req.open('GET', url, false);
    req.send('');
  }
}

function getData_(scriptname, searchFor, mode) {
	makeMessageVisible();
	var urlStr = window.location.toString();
	if (urlStr.substr(urlStr.length - 1, 1) == '/')
		urlStr = scriptname + 't=' + ((new Date()).valueOf());
	else {
		if (urlStr.indexOf('?') > 0) urlStr = urlStr.substr(0, urlStr.indexOf('?'));
		urlStr = urlStr.replace(searchFor , scriptname + 't=' + ((new Date()).valueOf()));
	}
	loadUrl_(urlStr, mode);
}

function dataLoaded_() {
  if (req.readyState == 4 && req.status == 200 ) {
    document.getElementById('additionalSashes').innerHTML = req.responseText;

		var quantity = getQuantity();
		var doubleSided = (document.getElementById('frontBack').options[document.getElementById('frontBack').selectedIndex].value == 'Both');
		adjustControls(quantity, doubleSided);
	}
}

function frontBackChange(elem) {
	var elemVal = elem.options[elem.selectedIndex].value;
	var quantity = getQuantity();
	if (elemVal == 'Both') {
		document.getElementById('sashTextHeading1').innerHTML = 'Text for Sash Front Side:';
		document.getElementById('sashSide2').style.display = 'block';
		
		if (quantity != false) {
			document.getElementById('stl1Sash2').disabled = (quantity == 1);
			document.getElementById('stl2Sash2').disabled = (quantity == 1);
			document.getElementById('backLine1').style.display = '';
			document.getElementById('backLine2').style.display = '';
		}
		if (document.getElementById('additionalSashes').innerHTML != '&nbsp;') {
			for (i = 2; i <= quantity; i++) {
				document.getElementById('sashTextHeading' + i).innerHTML = 'Text for Sash #' + i + ' Front Side:';
			}		
		}
	} else {
		document.getElementById('sashSide2').style.display = 'none';
		if ((elemVal == '') || (elemVal == 'Front')) {
			document.getElementById('sashTextHeading1').innerHTML = 'Text for Sash Front Side:';
		} else {
			document.getElementById('sashTextHeading1').innerHTML = 'Text for Sash Back Side:';
		}
		
		if (document.getElementById('additionalSashes').innerHTML != '&nbsp;') {
			for (i = 2; i <= quantity; i++) {
				if ((elemVal == '') || (elemVal == 'Front')) {
					document.getElementById('sashTextHeading' + i).innerHTML = 'Text for Sash #' + i + ' Front Side:';
				} else {
					document.getElementById('sashTextHeading' + i).innerHTML = 'Text for Sash #' + i + ' Back Side:';
				}
			}		
		}
		
		if (document.getElementById('backLine1') != null) document.getElementById('backLine1').style.display = 'none';
		if (document.getElementById('backLine2') != null) document.getElementById('backLine2').style.display = 'none';
	}

	handleDesignChanges();
}

function isNotEmpty(elem, showAlert) {
	if (elem == null) return false;
    var str = elem.value;
    var re = /.+/;
    if(!str.match(re)) {
        if (showAlert) alert('Please fill in the required field.');
        return false;
    } else {
        return true;
    }
}

function getQuantity() {
	var quantityElem = document.getElementById('quantity');
	if (isNotEmpty(quantityElem)) {
		if (isNaN(parseInt(quantityElem.value))) {
			alert('Please enter valid integer value for Quantity. Possible values are from 1 to 100.');
			return false;
		}
		var quantity = parseInt(quantityElem.value);
		if ((quantity < 1) || (quantity > 100)) {
			alert('Please enter valid integer value for Quantity. Possible values are from 1 to 100.');
			return false;
		}
		return quantity;
	} else
		return false;
}

function handleDesignChanges() {
	var quantity = getQuantity();
	if (quantity != false) {
		//makeMessageVisible();

		if (globQuantity > quantity) {
			for (i = quantity + 1; i <= globQuantity; i++) {
				document.getElementById('sashTextHeading' + i).innerHTML = 'Text for Sash #' + i + ' Front Side:';
			}		
		}
		if ((globQuantity != 0) && (quantity > globQuantity)) {
			var elem = document.getElementById('frontBack');
			var elemVal = elem.options[elem.selectedIndex].value;
			if (elemVal == 'Both') {
				for (i = globQuantity; i <= quantity; i++) {
					document.getElementById('sashTextHeading' + i).innerHTML = 'Text for Sash #' + i + ' Front Side:';
				}		
			} else {
				for (i = globQuantity; i <= quantity; i++) {
					if ((elemVal == '') || (elemVal == 'Front')) {
						document.getElementById('sashTextHeading' + i).innerHTML = 'Text for Sash #' + i + ' Front Side:';
					} else {
						document.getElementById('sashTextHeading' + i).innerHTML = 'Text for Sash #' + i + ' Back Side:';
					}
				}		
			}
		}

		var doubleSided = (document.getElementById('frontBack').options[document.getElementById('frontBack').selectedIndex].value == 'Both');

		/*
		if ((quantity != 1) && (document.getElementById('additionalSashes').innerHTML == '&nbsp;')) {
			getData_('boxes.php?', /design.php/, 1);
		}
		*/

		adjustControls(quantity, doubleSided);

		globQuantity = quantity;
	}
	
	
}

function adjustControls(quantity, doubleSided) {
	if (quantity == 1) {
		document.getElementById('frontLine1').style.display = 'none';
		document.getElementById('frontLine2').style.display = 'none';
		document.getElementById('stl1Sash1').disabled = true;
		document.getElementById('stl2Sash1').disabled = true;
		if (doubleSided) {			
			document.getElementById('backLine1').style.display = 'none';
			document.getElementById('backLine2').style.display = 'none';
			document.getElementById('stl1Sash2').disabled = true;
			document.getElementById('stl2Sash2').disabled = true;
		}
	} else {
		document.getElementById('frontLine1').style.display = '';
		document.getElementById('frontLine2').style.display = '';
		document.getElementById('stl1Sash1').disabled = false;
		document.getElementById('stl2Sash1').disabled = false;
		if (doubleSided) {			
			document.getElementById('backLine1').style.display = '';
			document.getElementById('backLine2').style.display = '';
			document.getElementById('stl1Sash2').disabled = false;
			document.getElementById('stl2Sash2').disabled = false;
		}
	}
	
	if (document.getElementById('additionalSashes').innerHTML != '&nbsp;') {
		var visible1 = ((document.getElementById('stl1Sash1').checked || document.getElementById('stl2Sash1').checked)?'block':'none');
		var visible2 = ((doubleSided && (document.getElementById('stl1Sash2').checked || document.getElementById('stl2Sash2').checked))?'block':'none');
		
		for (i = 1; i < quantity; i++) {
			if (!document.getElementById('stl1Sash1').checked) { 
				document.getElementById('Atext1_' + i).innerHTML = document.getElementById('textLine1_1').value;
				document.getElementById('Atext1_' + i).style.display = '';
				document.getElementById('Ainput1_' + i).style.display = 'none';
			} else {
				document.getElementById('Atext1_' + i).style.display = 'none';
				document.getElementById('Ainput1_' + i).style.display = '';
			}
			if (!document.getElementById('stl2Sash1').checked) { 
				document.getElementById('Atext2_' + i).innerHTML = document.getElementById('textLine1_2').value;
				document.getElementById('Atext2_' + i).style.display = '';
				document.getElementById('Ainput2_' + i).style.display = 'none';
			} else {
				document.getElementById('Atext2_' + i).style.display = 'none';
				document.getElementById('Ainput2_' + i).style.display = '';
			}
	
			if (doubleSided) {
				if (!document.getElementById('stl1Sash2').checked) { 
					document.getElementById('Btext1_' + i).innerHTML = document.getElementById('textLine2_1').value;
					document.getElementById('Btext1_' + i).style.display = '';
					document.getElementById('Binput1_' + i).style.display = 'none';
				} else {
					document.getElementById('Btext1_' + i).style.display = 'none';
					document.getElementById('Binput1_' + i).style.display = '';
				}
				if (!document.getElementById('stl2Sash2').checked) { 
					document.getElementById('Btext2_' + i).innerHTML = document.getElementById('textLine2_2').value;
					document.getElementById('Btext2_' + i).style.display = '';
					document.getElementById('Binput2_' + i).style.display = 'none';
				} else {
					document.getElementById('Btext2_' + i).style.display = 'none';
					document.getElementById('Binput2_' + i).style.display = '';
				}
			}
	
			document.getElementById('surrounder1_' + i).style.display = visible1;
			document.getElementById('surrounder2_' + i).style.display = visible2;
			document.getElementById('delim' + i).style.display = visible1;
		}
	
		if (globQuantity > quantity) {
			for (i = quantity; i <= globQuantity; i++) {
				document.getElementById('surrounder1_' + i).style.display = 'none';
				document.getElementById('surrounder2_' + i).style.display = 'none';
				document.getElementById('delim' + i).style.display = 'none';
			}
		}
	}

	document.getElementById('infoBck').style.display = 'none';
	document.getElementById('messageFrame').style.display = 'none';
	
}

function handleTextChange(elem, mode) {
	if (!checkForRestrictedWords(elem)) return;
	
	var quantity = getQuantity();
	if (quantity != false) {
		var elemName = '';
		var elemTCName = '';
		var textElem = '';
		switch (mode) {
			case 1: elemName = 'stl1Sash1'; elemTCName = 'Atext1_'; textElem = 'textLine1_1'; break;
			case 2: elemName = 'stl2Sash1'; elemTCName = 'Atext2_'; textElem = 'textLine1_2'; break;
			case 3: elemName = 'stl1Sash2'; elemTCName = 'Btext1_'; textElem = 'textLine2_1'; break;
			case 4: elemName = 'stl2Sash2'; elemTCName = 'Btext2_'; textElem = 'textLine2_2'; break;
		}
		
		if (!document.getElementById(elemName).checked) {
			for (i = 1; i < quantity; i++) {
				document.getElementById(elemTCName + i).innerHTML = document.getElementById(textElem).value;
			}
		}
	}
}

function checkRequiredFields(elemArray, formName) {

	var emptyElem = false;
	var alertMessage = "The following required fields not filled/chosen:\n";
	for (var i = 0; i < elemArray.length; i++) {
		if ((!isNotEmpty(document.getElementById(elemArray[i].elemId))) || (document.getElementById(elemArray[i].elemId).value == 0)) {
			emptyElem = true;
			alertMessage += ('* ' + elemArray[i].alertMessage + "\n");
		}
	}
	
	if (emptyElem) {
		alert(alertMessage);
		return false;
	} else {
		if (document.getElementById('email').value != document.getElementById('emailConf').value) {
			alert('E-mail field value doesn\'t match with e-mail confirmation field value!');
			return false;
		} else {
			document.forms[formName].submit();
			return true;
		}
	}
}

function checkOut() {
	if (document.getElementById('ordref').value == 'unset') {
		alert('No items added to cart yet!');
		return;
	}
	if (!emailValidation(document.getElementById('email'))) {
		return;
	}
	location.href = 'delivery.php?ordref=' + document.getElementById('ordref').value + '&email=' + encodeURIComponent(document.getElementById('email').value)
}

function emailValidation(elem) {
	if (!isNotEmpty(elem, true)) return false;
    var str = elem.value;
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    if (!str.match(re)) {
        alert('Email format is invalid!');
        return false;
    } else {
        return true;
    }
}

function getWindowSize() {
  var myWidth = 0, myHeight = 0;
  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;
  }
  
  return [myWidth, myHeight];
}

function makeMessageVisible() {
	window.scrollTo(0, 0);
	
	var dims = new Array();
	dims = getWindowSize();
	var frameWidth = 100;
	var frameHeight = 100;
	
	var elem = document.getElementById('infoBck');
	elem.style.width = dims[0] + 'px';
	elem.style.height = dims[1] + 'px';
	elem.style.display = 'block';

	elem = document.getElementById('messageFrame');
	elem.style.left = new Number((dims[0] - frameWidth)/2) + 'px';
	elem.style.top = new Number((dims[1] - frameHeight)/2) + 'px';
	elem.style.display = 'block';
}

function checkTextLogics() {
	var quantity = getQuantity();
	if (quantity == false) return false;
	
	var error = false;
	var sashSide = document.getElementById('frontBack').options[document.getElementById('frontBack').selectedIndex].value;
	if ((quantity > 1) && document.getElementById('stl1Sash1').checked) {
		for (var i = 1; i < quantity; i++) {
			if ((sashSide == 'Front') || (sashSide == 'Both')) {
				if (!isNotEmpty(document.getElementById('txtLine1_' + i))) {
					error = true;
					break;
				}
			}
			if ((sashSide == 'Back') || (sashSide == 'Both')) {
				if (!isNotEmpty(document.getElementById('txtLineB1_' + i))) {
					error = true;
					break;
				}
			}
		}
	}
	
	if (error) {
		alert("You\'ve indicated requirement of more than one sash decorated with different wording each but haven\'t specified required text!\nPlease fill respective text fields to provide us with required text for sashes.");
		return false;
	} else
		return true;
}
