/*common funcs*/
function validateEmails(frm)
{
	var items = $('.email');
	for(var item_iter = 0; item_iter < items.length; item_iter++)
	{
		upPickInvalidItem($(items[item_iter]));
		if(!isEmail(items[item_iter]))
		{
			pickInvalidItem($(items[item_iter]));
			return false;
		}
	}	
	return true;
}

function validateUKZips(frm)
{
	var items = $('.ukzip:visible');
	for(var item_iter = 0; item_iter < items.length; item_iter++)
	{
		upPickInvalidItem($(items[item_iter]));
		pc = checkPostCode($(items[item_iter]).val());
		if(pc)
			$(items[item_iter]).val(pc);
		else
		{
			pickInvalidItem($(items[item_iter]));
			return false;
		}
	}	
	return true;
}

function validateNumeric(frm)
{
	var items = $('.numeric');
	for(var item_iter = 0; item_iter < items.length; item_iter++)
	{
		upPickInvalidItem($(items[item_iter]));
		if(!isNumeric(items[item_iter]))
		{
			pickInvalidItem($(items[item_iter]));
			return false;
		}
	}	
	return true;
}

function validateHiddenNumeric(frm, contId)
{
	var itemsSelector = '#' + contId + ' .hiddennumeric';
	var items = $(itemsSelector);
	upPickInvalidItem($(items[item_iter]));
	for(var item_iter = 0; item_iter < items.length; item_iter++)
	{
		if(!isNumeric(items[item_iter]))
		{
			pickInvalidItem($(items[item_iter]));
			return false;
		}
	}	
	return true;
}

function validateRequiredInputs(frm)
{
	var items = $('.required');
	for(var item_iter = 0; item_iter < items.length; item_iter++)
	{
		upPickInvalidItem($(items[item_iter]));
		if(jQuery.trim($(items[item_iter]).val()).length == 0)
		{
			pickInvalidItem($(items[item_iter]));
			return false;
		}
	}	
	return true;
}

function verychCheckRequired(item)
{
	if(jQuery.trim($(item).val()).length == 0)
	{
		return false;
	}
	return true;
}

function inRange(item, min, max)
{
	if(($(item).val().length >= min) && ($(item).val().length <= max))
	{
		return true;
	}
	return false;
}

function notNull(item, val)
{
	if(parseInt($(item).val()) < val)
	{
		return false;
	}
	return true;
}

function validateHiddenRequiredInputs(frm, contId)
{
	var itemsSelector = '#' + contId + ' .hiddenrequired';
	var items = $(itemsSelector);
	for(var item_iter = 0; item_iter < items.length; item_iter++)
	{
		upPickInvalidItem($(items[item_iter]));
		if(jQuery.trim($(items[item_iter]).val()).length == 0)
		{
			pickInvalidItem($(items[item_iter]));
			return false;
		}
	}	
	return true;
}

function validateUpTo5(frm)
{
	var items = $('.upto5');
	for(var item_iter = 0; item_iter < items.length; item_iter++)
	{
		upPickInvalidItem($(items[item_iter]));
		var opt_cnt = 0;
		for(var opt_iter = 0; opt_iter < items[item_iter].options.length; opt_iter++)
		{
			if(items[item_iter].options[opt_iter].selected)
			{
				opt_cnt++;
			}
			if(opt_cnt > 5)
			{
				pickInvalidItem($(items[item_iter]));
				return false;
			}
		}
		if(opt_cnt == 0)
		{
			pickInvalidItem($(items[item_iter]));
			return false;
		}
	}	
	return true;
}

function upPickInvalidItem(item)
{
	$(item).css({border: "1px solid green"});
}

function pickInvalidItem(item)
{
	item.focus();
	$(item).css({border: "1px solid red"});
	$(item).effect("highlight", {color: '#ff5555'}, 5000);
}

function isEmail(item) 
{
	   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	   var address = $(item).val();
	   return reg.test(address);
}

function isUKZip(item) 
{
	var reg = /^[A-Za-z]{1,2}[0-9]{1,2}[A-Za-z]?\s[0-9][A-Za-z]{2}$/;
	var address = $(item).val();
	return reg.test(address);
}

function isNumeric(item) 
{
		var reg = /^([0-9]){1,11}$/;
		var address = $(item).val();
		return reg.test(address);
}

function bookmark(a)
{
	if (window.sidebar){ // firefox
	window.sidebar.addPanel(title, url,"");
	return false;
	}
	else if(window.opera && window.print){ // opera
	return false;
	}
	else if(document.all){ // ie
	window.external.AddFavorite(a.href2 || a.href, a.title);
	if(!a.href2){
	a.href2 = a.href;
	a.href="#";
	} 
	} else {
	alert('Pls, press Ctrl + D or CMD + D for MAC, \n to add this page to your bookmarks.');
	a.href=+"#";
	return false;
	}
}

function checkPostCode(toCheck)
{
  var alpha1 = "[abcdefghijklmnoprstuwyz]";                       // Character 1
  var alpha2 = "[abcdefghklmnopqrstuvwxy]";                       // Character 2
  var alpha3 = "[abcdefghjkpmnrstuvwxy]";                         // Character 3
  var alpha4 = "[abehmnprvwxy]";                                  // Character 4
  var alpha5 = "[abdefghjlnpqrstuwxyz]";                          // Character 5
  var pcexp = new Array ();
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "?[0-9]{1,2})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}[0-9]{1}" + alpha3 + "{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  pcexp.push (new RegExp ("^(" + alpha1 + "{1}" + alpha2 + "{1}" + "?[0-9]{1}" + alpha4 +"{1})(\\s*)([0-9]{1}" + alpha5 + "{2})$","i"));
  pcexp.push (/^(GIR)(\s*)(0AA)$/i);
  pcexp.push (/^(bfpo)(\s*)([0-9]{1,4})$/i);
  pcexp.push (/^(bfpo)(\s*)(c\/o\s*[0-9]{1,3})$/i);
  pcexp.push (/^([A-Z]{4})(\s*)(1ZZ)$/i);
  var postCode = toCheck;
  var valid = false;
  for ( var i=0; i<pcexp.length; i++) {
    if (pcexp[i].test(postCode)) {
      pcexp[i].exec(postCode);
      postCode = RegExp.$1.toUpperCase() + " " + RegExp.$3.toUpperCase();
      postCode = postCode.replace (/C\/O\s*/,"c/o ");
      valid = true;
      break;
    }
  }
  if (valid) {return postCode;} else return false;
}

