var sizeNames = new Array('100mm - approx 4 inches', '45mm - approx 1.8 inches', '25mm - approx 1 inch');
var sizes = new Array('100mm', '45mm', '25mm');

var where = (navigator.appName == "Microsoft Internet Explorer") ? -1 : null;

var scriptName = /delivery.html/;

var globalElementToLoad1;
var globalElementToLoad2;

/*--------------- Added for restricted words ----------------------*/
var restrictedWords = new Array();

var phaseNo = 0;
var functionsToCall = new Array();
var globalPhaseCount = 0;
var globalValfield;

function checkEmailConfirmation(elem) {
	if (!isEMailAddr(elem, 1)) return false;
	if ((isNotEmpty(document.getElementById('email'))) && (isNotEmpty(document.getElementById('emailConf')))) {
	  if (document.getElementById('email').value != document.getElementById('emailConf').value) {
	    alert('Error comparing email and email confirmation fields!');
	    return false;
	  }
	}
	return true;
}


function functionDispatcher() {
	if (phaseNo <= globalPhaseCount)
		eval(functionsToCall[phaseNo]);
	else
		if (document.getElementById('progress')) document.getElementById('progress').style.display = 'none';
}

function initialPhases(phaseCount, script, elemName) {
	functionsToCall = new Array();
	globalPhaseCount = phaseCount;
	phaseNo = 0;
	functionsToCall[0] = 'loadRibbonColors(\'' + elemName + '\', ' + script + ')';
	functionsToCall[1] = 'loadUrl(\'http://www.sashesnribbons.co.uk/control/rpc.php?siteid=1&mode=8&t=' + ((new Date()).valueOf()) + '\', 5);'; 
	functionDispatcher();	
}

function initialPhases2(phaseCount, script, elemName) {
	functionsToCall = new Array();
	globalPhaseCount = phaseCount;
	phaseNo = 0;
	functionsToCall[0] = 'loadRibbonColors(\'' + elemName + '\', ' + script + ')';
	functionsToCall[1] = 'loadUrl(\'communicate.php?mode=1&t=' + ((new Date()).valueOf()) + '\', 6);'; 
	functionsToCall[2] = 'loadUrl(\'communicate.php?mode=2&t=' + ((new Date()).valueOf()) + '\', 5);'; 
	functionsToCall[3] = 'getDataSpecial(\'holiday/fetchholiday.php?siteid=3&\', /sashquotation_new\\/quotes.html/, 7);';
	functionDispatcher();	
}


function restrictedWordsLoaded() {
  if (req.readyState == 4 && req.status == 200 ) {
  	restrictedWords = eval(req.responseText);

		phaseNo++;
		functionDispatcher();	
  }
}

function checkForRestrictedWords(elem) {
	if (isNotEmpty(elem)) {
		var valueString = elem.value.toUpperCase();
		for (var i = 0; i < restrictedWords.length; i++) {
			if (valueString.indexOf(restrictedWords[i].toUpperCase()) >= 0) {
				alert('We believe that the word/phrase \'' + restrictedWords[i] +'\' that you have requested is subject to TradeMark or Copyright restrictions.\nWe are therefore not able to reproduce this text on your item.');
				setfocus(elem);
				break;
			}
		}
	}
}

function setFocusDelayed() {
	globalValfield.focus();
}

function setfocus(valfield) {
	globalValfield = valfield;
	setTimeout('setFocusDelayed()', 100);
}

function isNotEmpty(elem) {
	if (elem == null) return false;
  var str = elem.value;
  var re = /.+/;
  
  return str.match(re);
}

/*-----------------------------------------------------------------*/

/* 
 * Loads requested url 
 * url - url to load
 * mode - # of function to use for processing loaded data
 */
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:
 			case 2: req.onreadystatechange = parseCheckingResult; break;
 			//case 3: req.onreadystatechange = calendarLoaded; break;
 			case 4: req.onreadystatechange = ribbonColorsLoaded; break;
 			case 5: req.onreadystatechange = restrictedWordsLoaded; break;
 			case 6: req.onreadystatechange = quotationIdLoaded; break;
 			case 7: req.onreadystatechange = dataLoaded; break;
 		}
    req.open('GET', url, true);
    req.send('');
  }
}

function checkParams2(elem, mode, scrName, elemToLoad1, elemToLoad2) {
	globalMode = mode;
	scriptName = scrName;
	if (elemToLoad1 != '') globalElementToLoad1 = document.getElementById(elemToLoad1);
	if (elemToLoad2 != '') globalElementToLoad2 = document.getElementById(elemToLoad2);
	
	if (mode == 1) showLoading(globalElementToLoad1);
	showLoading(globalElementToLoad2);
	getData('checkcolors.php?ribbon=' + elem.value + '&', mode);
}

function loadRibbonColors(elemId, scrName) {
	scriptName = scrName;
	globalElementToLoad1 = document.getElementById(elemId);
	getData('checkcolors.php?all=1&', 4);
}

function ribbonColorsLoaded() {
  if (req.readyState == 4 && req.status == 200 ) {
  	var valArray = eval(req.responseText);
  	
  	var elementToLoad = globalElementToLoad1;
	  var newElem;
	  while (elementToLoad.options.length) {
	      elementToLoad.remove(0);
	  }
	  newElem = document.createElement('option');
	  newElem.text = '..please pick colour..';
	  newElem.value = '0';
	  elementToLoad.add(newElem, where);
		for (var i = 0; i < valArray.length; i++) {
		  newElem = document.createElement('option');
		  newElem.text = valArray[i];
		  newElem.value = valArray[i];
		  elementToLoad.add(newElem, where);
		}
		
/*--------------- Added for restricted words ----------------------*/
		phaseNo++;
		functionDispatcher();	
/*-----------------------------------------------------------------*/
  }
}

function showLoading(elementToLoad) {
  while (elementToLoad.options.length) {
      elementToLoad.remove(0);
  }
  var newElem;
  newElem = document.createElement('option');
  newElem.text = 'Loading...';
  newElem.value = '0';
  elementToLoad.add(newElem, where);
}

function getData(script, mode) {
	var url = window.location.toString();

	if (url.substr(url.length - 1, 1) == '/')
		url = script + 't=' + ((new Date()).valueOf());
	else
		url = url.replace(scriptName , script + 't=' + ((new Date()).valueOf()));

	loadUrl(url, mode);
}

function getSizeName(size) {
	for (var i = 0; i < sizes.length; i++)
		if (sizes[i] == size) return sizeNames[i];
	return '..please pick ribbon colour first..';
}

function parseCheckingResult() {
  if (req.readyState == 4 && req.status == 200 ) {
    colorRes = eval(req.responseText);
		
		if (globalMode == 1) loadRealValues(globalElementToLoad1, colorRes[0].ribbonsize, true);
		loadRealValues(globalElementToLoad2, colorRes[0].ribbontext, false);
	}
}


function loadRealValues(elem, valArray, size) {
  while (elem.options.length) {
      elem.remove(0);
  }
  var newElem;
	for (var i = 0; i < valArray.length; i++) {
	  newElem = document.createElement('option');
	  newElem.text = (size?getSizeName(valArray[i]):valArray[i]);
	  newElem.value = valArray[i];
	  elem.add(newElem, where);
	}
}

function quotationIdLoaded() {
  if (req.readyState == 4 && req.status == 200 ) {
    qid = eval(req.responseText);
		
		document.getElementById('quotationId').value=qid[0].quotationId;
	
		phaseNo++;
		functionDispatcher();	
	}
}

function isEMailAddr(elem, showAlert) {
        if (!isNotEmpty(elem, showAlert)) return false;
    var str = elem.value;
    var re = /^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/;
    if (!str.match(re)) {
        if (showAlert) alert('Please verify the email address format!');
                setfocus(elem);
        return false;
    } else {
        return true;
    }
}

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))) {
			emptyElem = true;
			alertMessage += ('* ' + elemArray[i].alertMessage + "\n");
		}
	}
	
	if (emptyElem) {
		alert(alertMessage);
		return false;
	} else {
		document.forms[formName].submit();
		return true;
	}
}

