var dateError = "Please enter a valid date.";

(function(){
  // if firefox 3.5+, hide content till load (or 3 seconds) to prevent FOUT
  var d = document, e = d.documentElement, s = d.createElement('style');
  if (e.style.MozTransform === ''){ // gecko 1.9.1 inference
    s.textContent = 'body{visibility:hidden}';
    var r = document.getElementsByTagName('script')[0];
    r.parentNode.insertBefore(s, r);
    function f(){ s.parentNode && s.parentNode.removeChild(s); }
    addEventListener('load',f,false);
    setTimeout(f,3000); 
  }
})();

$(document).ready(function() {

	$("a.loadcbox").each(function() {
		var h = $(this).attr('href');
		if(h.indexOf('?') >= 0) $(this).attr('href', h+'&ajax=1');
		else $(this).attr('href', h+'?ajax=1');
		$(this).colorbox();
	});
	$("a.loadcboxframe").each(function() {
		var h = $(this).attr('href');
		if(h.indexOf('?') >= 0) $(this).attr('href', h+'&iframe=1');
		$(this).attr('href', h+'?iframe=1');
		$(this).colorbox({iframe:true,innerWidth:"50%",innerHeight:"50%"});
	});

	$(":date").dateinput({
		format: dateFormatString()
	});
	
});

function dateFormatString() {

	switch(dateFormat) {
		case 'us':
			dateError = "Please enter the date in mm/dd/yyyy format or leave it blank.";
			return 'mm/dd/yyyy';
			
		default:
			dateError = "Please enter the date in dd/mm/yyyy format or leave it blank.";
			return 'dd/mm/yyyy';
	}
}

function isEmail(str) {
  //var filter = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]+\.[a-zA-Z]+$/;
  var filter = /^([a-zA-Z0-9])+([\.a-zA-Z0-9_-])*@([a-zA-Z0-9])+(\.[a-zA-Z0-9_-]+)+$/;
	return filter.test(str);
}


function isDate(str) {

	var filter = /^[0-9]{2}\/[0-9]{2}\/[0-9]{4}$/;

	return filter.test(str);

}

function isNumber(str) {

	var filter = /^\d*$/;

	return filter.test(str);

}

function isAlphanumeric(str) {

	var filter = /^[0-9a-zA-Z]*$/;

	return filter.test(str);

}


// limit values that can be used in form field

function restrictValues(fieldName, allowValues) {
	
	var newValue = "";

	for(i = 0; i < fieldName.value.length; i++) {
		x = fieldName.value.charAt(i);
		if(allowValues.indexOf(x,0) != -1)
		newValue += x;
	}
	fieldName.value = newValue;
}


// limit length of form field

function restrictLength(object, maxlength) {

	var currentLength = object.value.length;

	if(currentLength > maxlength) {
		object.value = object.value.substring(0, maxlength);
		return false;
	}
	var counter = getElement('counter');
	if(counter != null) counter.innerHTML = maxlength - currentLength;
}






function checkForm(formName) {

  var thisForm = eval('document.forms.'+formName);
  
  // contact.php, tell_a_friend.php
  if((formName == 'contact_form') || (formName == 'friend_form')) {
    
    if(thisForm.sender.value == '') {
      alert('Please enter your name.');
      thisForm.sender.focus();
      return false;
      
    } else if((thisForm.email.value == '') || (!isEmail(thisForm.email.value))) {
      alert('Please enter a valid email address.');
      thisForm.email.focus();
      return false;
    
    } else if((formName == 'friend_form') && ((thisForm.recipient1.value == '') || (!isEmail(thisForm.recipient1.value)))) {
      alert('Please enter a valid email address to send the message to.');
      thisForm.recipient1.focus();
      return false;
      
    } else if((formName == 'friend_form') && ((thisForm.recipient2.value != '') && (!isEmail(thisForm.recipient2.value)))) {
      alert('Please enter a valid email address to send the message to or leave it blank.');
      thisForm.recipient2.focus();
      return false;
    
    } else if((formName == 'friend_form') && ((thisForm.recipient3.value != '') && (!isEmail(thisForm.recipient3.value)))) {
      alert('Please enter a valid email address to send the message to or leave it blank.');
      thisForm.recipient3.focus();
      return false;
    
    } else if(thisForm.message.value == '') {
      alert('Please enter your message.');
      thisForm.message.focus();
      return false;
    
    } else {
      return true;
    }
  }
  
  // find_site.php
  if(formName == 'findSite_form') {
    
    var bride = thisForm.bride.value;
    var groom = thisForm.groom.value;
    
    if(((bride.length < 3) && (groom.length < 8)) || ((groom.length < 3) && (bride.length < 8))) {
      
      alert("Please enter at least 3 characters in each box to continue.");
      thisForm.bride.focus();
      return false;
    
    } else {
      return true;
    }
  }
  
  // submit_tip.php
  if(formName == 'submitTip_form') {
  	
  	if(thisForm.tipText.value == '') {
  		
  		alert("Please enter your wedding tip.");
  		thisForm.tipText.focus();
  		return false;
  	
  	} else if(thisForm.tipText.value.length > 140) {
  	
  		alert("Your tip must not be longer than 140 characters.");
  		thisForm.tipText.focus();
  		return false;
  	
  	} else {
  		return true;
  	}
  }
  
  // error_report.php
  if(formName == 'error_form') {
  
    if(thisForm.url.value == '') {
    
      alert("Please enter the website address where the error occurred.");
      thisForm.url.focus();
      return false;
    
    } else if(thisForm.description.value == '') {
    
      alert("Please enter a description of the problem.");
      thisForm.description.focus();
      return false;
      
    } else if((thisForm.email.value != '') && (!isEmail(thisForm.email.value))) {
      
      alert("Please enter a valid email address or leave it blank.");
      thisForm.email.focus();
      return false;
    
    } else {
      return true;
    }
  }
  
  // trial.php
  if(formName == 'trial_form') {
    
		if(thisForm.bride.value == '') {
			alert("Please enter the bride's name.");
			thisForm.bride.focus();
			return false;
			
		} else if((thisForm.brideLastName) && (thisForm.brideLastName.value == '')) {
			alert("Please enter the bride's last name.");
			thisForm.brideLastName.focus();
			return false;
			
		} else if(thisForm.groom.value == '') {
			alert("Please enter the groom's name.");
			thisForm.groom.focus();
			return false;
			
		} else if((thisForm.groomLastName) && (thisForm.groomLastName.value == '')) {
			alert("Please enter the groom's last name.");
			thisForm.groomLastName.focus();
			return false;
			
		} else if((thisForm.email.value == '') || (!isEmail(thisForm.email.value))) {
			alert('Please enter a valid email address.');
			thisForm.email.focus();
			return false;
	/*		
		} else if((thisForm.address1) && (thisForm.address1.value == '')) {
	
			alert("Please enter your postal address. ");
			thisForm.address1.focus();
			return false;
			
		} else if((thisForm.city) && (thisForm.city.value == '')) {
			
			alert("Please enter your town or city. ");
			thisForm.city.focus();
			return false;
		
		} else if((thisForm.postcode) && (thisForm.postcode.value == '')) {
			
			alert("Please enter your postcode or zipcode. ");
			thisForm.postcode.focus();
			return false;
	*/		
		} else if((thisForm.weddingDate.value != '') && (!isDate(thisForm.weddingDate.value))) {
		
			if(dateFormat == 'euro') alert("Please enter the date in dd/mm/yyyy format or leave it blank. ");
			else alert("Please enter the date in mm/dd/yyyy format or leave it blank.");
			thisForm.weddingDate.focus();
			return false;
			
		} else if((thisForm.subdomain.value == '') || (!isAlphanumeric(thisForm.subdomain.value))) {
		
			alert("Please enter your chosen website address using only letters and numbers.");
			thisForm.subdomain.focus();
			return false;
		
		} else if(available == false) {
		
			alert("The website address you have chosen is not available. Please choose a different address.");
			thisForm.subdomain.focus();
			return false;
			
		} else {
			
			var email = thisForm.email.value;
			var isp = '';
			
			if(email.indexOf('@hotmail.') > 0) isp = 'Hotmail';
			else if(email.indexOf('@yahoo.') > 0) isp = 'Yahoo';
			else if(email.indexOf('@msn.') > 0) isp = 'MSN';
			else if(email.indexOf('@live.') > 0) isp = 'Windows Live';
			else if(email.indexOf('@gmail.') > 0) isp = 'Gmail';
			else if(email.indexOf('@aol.') > 0) isp = 'AOL';
			
			if(isp != '') {
			
				if(confirm("Customers using "+isp+" email addresses have recently been experiencing delays receiving their activation email.\n\nClick OK to continue with your "+isp+" address, or Cancel to change to a different address. ") == false) {
					
					thisForm.email.focus();
					return false;
				}
			}
		}
		
		return true;
	}
}
