var whitespace = " \t\n\r";
var ilegal = "!\"#$%&'()*+,/:;<=>?[\\]^`{|}~";

function toggleVis(ind, objName) {
	var object = document.getElementById(objName);
	if(ind == 0) {
		object.style.display = 'none';
	}
	else {
		object.style.display = '';
	}
}

function validate(formName, areaName) {
	
	var oform = document.getElementsByName(formName)[0];
	var ja = true;

	var functionArr = new Array(5);
	    functionArr[0] = 'isEmpty(oitem.value)';  
      functionArr[1] = '!isEmail(oitem.value)'; 
	    functionArr[2] = '!isCell(oitem.value)'; 
	    functionArr[3] = '!isChecked(oitem)'; 
	    functionArr[4] = '!isHigherThan(oitem)'; 
	    functionArr[5] = '!isNotNumericAndNotEmpty(oitem.value)'

	//try {
		for(var i=0; i<oform.elements.length; i++) {
			var oitem = oform.elements[i];
			if(oitem.getAttribute('required') == 1) {
				valType = oitem.getAttribute('valType');
				
				if(eval(functionArr[valType])) {
				  alert(oitem.getAttribute('message'));
				  oitem.focus();
  				ja = false;
  				return false;
				} 
			}
		}
	
	//}
	
	//catch(egg){alert(egg)}
	
	if(ja) {
		submitForm(formName, areaName);
	}
}

function isChecked(obj) {
	if(obj.checked == false) {
		return false;
	} else	{
		return true;
	}
}

function submitForm(formName, areaName) {
	var oform = document.getElementsByName(formName)[0];
	var surl = new String();
	var surltmp = new String();
	try {
		for(var i=0; i<oform.elements.length; i++) {
			var oitem = oform.elements[i];
			if(oitem.name!='') {
				if(surltmp.length>0) {
					surltmp += '&';
				}
				if(oitem.type=='radio') {
					//alert(oitem.name);
					if(oitem.checked) {
						surltmp += oitem.name + '=' + Url.encode(oitem.value);
						//alert(oitem.value);
					}
				} else {
					surltmp += oitem.name + '=' + Url.encode(oitem.value);
				}
				
			}
		}
	
		surl = oform.action;
		if(surl.indexOf("?")>=0) {
			surl+="&"+surltmp; 
		}
		else {
			surl+="?"+surltmp;
		}
	}
	catch(egg){}

	ajaxpage(surl, areaName,1);
	
}

function isEmail (s,canBeEmpty) {
 if (isEmpty(s)) 
     if (!canBeEmpty) return false;
     else return true;
 
  // is s whitespace?
  if (isWhitespace(s)) return false;
  
  // there must be >= 1 character before @, so we
  // start looking at character position 1 
  // (i.e. second character)
  var i = 1;
  var sLength = s.length;

  // look for @
 while ((i < sLength) && (s.charAt(i) != "@"))
  { i++
  }

  if ((i >= sLength) || (s.charAt(i) != "@")) return false;
  else i += 2;

  // look for .
  while ((i < sLength) && (s.charAt(i) != "."))
  { i++
  }

  //look for a dubble @ 
 if (s.indexOf("@") != -1)
 {
	if (s.indexOf("@",s.indexOf("@")+1) != -1)
	{
		return false;
	}
 }
 // there must be at least one character after the .
  if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
  else return true;
}

function isEmpty(s)
{ 
  return ((s == null) || (s.length == 0))
}

// Returns true if string s is empty or 
// whitespace characters only.
function isWhitespace (s) {   
  var i;

  // Is s empty?
  if (isEmpty(s)) return true;

  // Search through string's characters one by one
  // until we find a non-whitespace character.
  // When we do, return false; if we don't, return true.

  for (i = 0; i < s.length; i++)
  {   
      // Check that current character isn't whitespace.
      var c = s.charAt(i);

      if (whitespace.indexOf(c) == -1) return false;
  }

  // All characters are whitespace.
  return true;
}

function isLegal (s)
{   var i;

	//Well if the string is not a valid email adress then  add the @ sign
	if (isEmail(s)){ilegal1 = ilegal}else{ilegal1 = ilegal + "@"} 	
    // Search through string's characters one by one
    // until we find a ilegal character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {   
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (ilegal1.indexOf(c) != -1) return false;
    }

    // All characters are whitespace.
	 return true;
}

function isCell(s) {
  var re=/^[\d]{10,12}$/;
  var cont = true;
  s = s.replace(' ','');
  if(isEmpty(s)) {
    cont = false;
  }

  if(!re.test(s)) {
    cont = false;
  }

  //if(!isNumeric(s)) {
    //cont = false;
  //}
  return cont;
}

function calculateIt(credits) {
	var priceField = document.getElementById('price');
	var vatField = document.getElementById('vat');
	var totalField = document.getElementById('total');
	var priceDisp = document.getElementById('priceDisp');
	var vatDisp = document.getElementById('vatDisp');
	var totalDisp = document.getElementById('totalDisp');

	
	price = credits*0.21;
	vat = (price*14)/100;
	total = parseFloat(price)+parseFloat(vat);
	
	priceField.value = price;
	vatField.value = vat;
	totalField.value = total;
	priceDisp.innerHTML = twodec(price);
	vatDisp.innerHTML = twodec(vat);
	totalDisp.innerHTML = twodec(total);
	
	if(credits < 1000) {
		alert('1000 credits is the minimum required purchase.');
		document.getElementById('credits').focus();;
	}
}

function twodec(num) {
	var result = (Math.round(num* 100) / 100).toFixed(2);
	return result;
}

function isNotNumericAndNotEmpty(s) {
	var notAllowed = /[0-9]/;
	
	if (notAllowed.test(s)) {
		return false;
	}
	if(s.length <= 0 || s.length == null || s==null ) {
		return false;
	}
	return true
	
}

function isNotNumeric(s) {
  if(isNan(s)) {
  	return false;
  } else {return true}
}

function isHigherThan(obj) {
	if(obj.value < 1000) {
		return false;
	} 
	return true;
}


function isNumeric(num){ 
  var notAllowed = /[a-zA-Z]/; // etc.
  
  var input = document.getElementById("credits");
  
  input.onkeypress = function () {
    // Cross-browser
    var evt = arguments[0] || event;
    var char = String.fromCharCode(evt.which || evt.keyCode);
    
    // Is the key allowed?
    if (notAllowed.test(char)) {
      // Cancel the original event
      evt.cancelBubble = true;
     return false;
    }
  }

}

