init = function() {
	DOMpopups();
}


// Declaring required variables
var digits = "0123456789";

// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";

// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";

// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 10;

function isInteger(s){
	var i;
	for (i = 0; i < s.length; i++) {   
		// Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag) {
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++) {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
	s=stripCharsInBag(strPhone,validWorldPhoneChars);
	return (isInteger(s) && s.length == minDigitsInIPhoneNumber);
}

setError = function(id) {
	document.getElementById(id).className="error";
}
removeError = function(id) {
	document.getElementById(id).className='';
}
removeAllErrors = function() {
	document.getElementById('lblName').className='';
	document.getElementById('lblLastName').className='';
	document.getElementById('lblAddress1').className='';
	document.getElementById('lblCity').className='';
	document.getElementById('lblState').className='';
	document.getElementById('lblZipcode').className='';
	document.getElementById('lblCountry').className='';
	document.getElementById('lblPhone').className='';
	document.getElementById('lblEmail').className='';
	document.getElementById('lblEmailConfirm').className='';
}

checkLength = function(id) {
	if(document.getElementById(id).value.length == 0) { return false } return true;
}

checkPhone = function() {
	var phone = document.getElementById('txtPhone');
	var msg = true;
	if (checkInternationalPhone(phone.value)==false){
		msg = "Please enter a valid 10 digit phone number.";
		return msg;
	}
	return msg;
}

function isValidEmail(src) {
	var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	var regex = new RegExp(emailReg);
	return regex.test(src);
}

duplicateField = function(first,second) {
	document.getElementById(second).value = document.getElementById(first).value;
}

checkFormXflowsion = function() {
	
	// removeAllErrors();
	
	// check billing fields
	if(!checkLength('txtName')){
		// setError('lblName');
		alert('Please enter your first name.');
		document.getElementById('txtName').focus();
		return false;
	}	
	if(!checkLength('txtLastName')) {
		// setError('lblLastName');
		alert('Please enter your last name.');
		document.getElementById('txtLastName').focus();
		return false;
	}
	
	
	if(!isValidEmail(document.getElementById('txtEmail').value)) {
		// setError('lblEmail');
		alert('Please enter a valid email address.');
		document.getElementById('txtEmail').focus();
		return false;
	}
	if(document.getElementById('txtEmail').value != document.getElementById('txtEmailConfirm').value) {
		// setError('lblEmailConfirm');
		alert('Email addresses do not match.');
		document.getElementById('txtEmailConfirm').focus();
		return false;
	}
	
	if(!checkLength('txtPhone')) {
		// setError('lblPhone');
		alert('Please enter your phone number.');
		document.getElementById('txtPhone').focus();
		return false
	}
	
	var phoneChk = checkPhone();
	if(phoneChk != true) {
		// setError('lblPhone');
		alert(phoneChk);
		document.getElementById('txtPhone').focus();
		return false
	}
	
	if(!checkLength('txtAddress1')) {
		// setError('lblAddress1');
		alert('Please enter your street address.');
		document.getElementById('txtAddress1').focus();
		return false;
	}
	if(!checkLength('txtCity')) {
		// setError('lblCity');
		alert('Please enter your city.');
		document.getElementById('txtCity').focus();
		return false
	}
	if(!checkLength('cmbState')) {
		// setError('lblState');
		alert('Please enter your state.');
		document.getElementById('cmbState').focus();
		return false
	}
	if(!checkLength('txtZipcode')) {
		// setError('lblZipcode');
		alert('Please enter your ZIP code.');
		document.getElementById('txtZipcode').focus();
		return false
	}
	/*
	if(!checkLength('cmbCountryBill')) { 
		// setError('lblCountry');
		alert('Please enter your country.');
		document.getElementById('cmbCountryBill').focus();
		return false
	}
	*/
	/*
	switch(document.getElementById('cmbCountryBill').value) {
		case "US" :
			if(!checkLength('cmbBillState')) {
				// setError('lblState');
				alert('Please enter your state.');
				document.getElementById('cmbBillState').focus();
				return false
			}
			if(!checkLength('txtZipcode')) {
				// setError('lblZipcode');
				alert('Please enter your ZIP code.');
				document.getElementById('txtZipcode').focus();
				return false
			}
			break;
		case "CA" :
			if(!checkLength('cmbBillState')) {
				// setError('lblState');
				alert('Please enter your province.');
				document.getElementById('cmbBillState').focus();
				return false
			}
			if(!checkLength('txtZipcode')) {
				// setError('lblZipcode');
				alert('Please enter your postal code.');
				document.getElementById('txtZipcode').focus();
				return false
			}
			break;
	}
	*/
	if(!document.getElementById('terms').checked ) {
		alert('Please indicate that you have read and agree to the Terms and Conditions of this offer.');
		return false
	}
	
	if(document.getElementById('duplicateAddress').checked ) {
		duplicateField('txtAddress1','txtShipAddress1');
		duplicateField('txtAddress2','txtShipAddress2');
		duplicateField('txtCity','txtShipCity');
		duplicateField('cmbState','cmbShipState');
		duplicateField('txtZipcode','txtShipZipcode');
	} else {
		if(!checkLength('txtShipAddress1')) {
			// setError('lblShipAddress1');
			alert('Please enter your shipping street address.');
			document.getElementById('txtShipAddress1').focus();
			return false;
		}
		if(!checkLength('txtShipCity')) {
			// setError('lblShipCity');
			alert('Please enter your shipping city.');
			document.getElementById('txtShipCity').focus();
			return false
		}
		if(!checkLength('cmbShipState')) {
			// setError('lblShipState');
			alert('Please enter your shipping state.');
			document.getElementById('cmbShipState').focus();
			return false
		}
		if(!checkLength('txtShipZipcode')) {
			// setError('lblShipZipcode');
			alert('Please enter your shipping ZIP code.');
			document.getElementById('txtShipZipcode').focus();
			return false
		}
	}
	
	
	return true;
}

var popupLinkConfig = new Array;
// Delete/copy/modify the following lines to configure your popup windows.
popupLinkConfig["popup"] = new Array ( "help", "width=600,height=700,resizable=yes,scrollbars=yes");


// modifies DOM so that all links with classname='popup' open in new window
DOMpopups = function() {
  if (!document.getElementsByTagName) return true;
  var pageLinks = document.getElementsByTagName("a");
  for (var i = 0; i < pageLinks.length; i++) 
  {
    if (((pageLinks[i].className != null) && 
         (pageLinks[i].className != "")) ||
        ((pageLinks[i].parentNode.className != null) && 
         (pageLinks[i].parentNode.className != "")))
    {
      var linkClass = " " + pageLinks[i].className + " ";
      if ((linkClass == "  ") && (pageLinks[i].parentNode.className != ""))
      {
        linkClass = " " + pageLinks[i].parentNode.className + " ";
      }
      for (var theKey in popupLinkConfig) 
      {
        if (linkClass.indexOf(" " + theKey + " ") > -1)
        {
          if ((pageLinks[i].target == "") || (pageLinks[i].target == null))
          {
            pageLinks[i].target = (popupLinkConfig[theKey][0] != "") ? popupLinkConfig[theKey][0] : theKey;
          }
          pageLinks[i].settings = popupLinkConfig[theKey][1];
          pageLinks[i].onclick = popUp;
        }
      }
    }
  }
  return true;

} 

function popUp()
{
  newWin = window.open(this.href, this.target, this.settings);
  newWin.focus();
  return false;
} 

makeflash = function() {
	var so = new SWFObject("../flash/xflowsion_video_small.swf", "mymovie", "230", "127", "8", "#000000");
	so.write("video");
}
