$.viewportHeight = function() {
	var h = 0;
	if (typeof(window.innerHeight) == "number") {
		h = window.innerHeight;
	} else {
		if (document.documentElement && document.documentElement.clientHeight) {
			h = document.documentElement.clientHeight;
		} else {
			if (document.body && document.body.clientHeight) h = document.body.clientHeight;
		}
	}
	return h;
}

$.viewportWidth = function() {
	var w = 0;
	if (typeof(window.innerWidth) == "number") {
		w = window.innerWidth;
	} else {
		if (document.documentElement && document.documentElement.clientWidth) {
			w = document.documentElement.clientWidth;
		} else {
			if (document.body && document.body.clientWidth) w = document.body.clientWidth;
		}
	}
	return w;
}

function floatNumbers(num, xtra) {
  var sign, cents;
  num = num.toString().replace(/\$|\,/g,'');
  if(isNaN(num)) num = "0";
  sign = (num == (num = Math.abs(num)));
  num = Math.floor(num*100+0.50000000001);
  cents = num%100;
  num = Math.floor(num/100).toString();
  if(cents<10) cents = "0" + cents;
  for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
    num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
  return (((sign)?'':'-') + xtra + num + '.' + cents);
}

function validateInt(s) {
	var regex=new RegExp(/^[0-9]+$/i);
	if (!s.match(regex)) return false;
	return true;	
}

function validateEven(s) {
	var regex=new RegExp(/^[0,2,4,6,8]+$/i);
	if (!s.match(regex)) return false;
	return true;	
}

function validateOdd(s) {
	var regex=new RegExp(/^[1,3,5,7,9]+$/i);
	if (!s.match(regex)) return false;
	return true;	
}

function validateEmail(s) {
	var regex=new RegExp(/^[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$/i);
	if (!s.match(regex)) return false;
	return true;
}

/*
function validateCC(s) {
	var regex=new RegExp(/[^\d]+/g);	
	s = s.replace(regex, '');

	// validate number
	j = s.length / 2;
	if (j < 6.5 || j > 8 || j == 7) return false;
	k = Math.floor(j);
	m = Math.ceil(j) - k;
	c = 0;
	for (i=0; i<k; i++) {
		a = s.charAt(i*2+m) * 2;
		c += a > 9 ? Math.floor(a/10 + a%10) : a;
	}
	for (i=0; i<k+m; i++) c += s.charAt(i*2+1-m) * 1;
	return (c%10 == 0);
}
*/

function validateCC(cardNumber, cardType)
{
  var isValid = false;
  var ccCheckRegExp = /[^\d ]/;
  isValid = !ccCheckRegExp.test(cardNumber);

  if (isValid)
  {
    var cardNumbersOnly = cardNumber.replace(/ /g,"");
    var cardNumberLength = cardNumbersOnly.length;
    var lengthIsValid = false;
    var prefixIsValid = false;
    var prefixRegExp;

    switch(cardType)
    {
      case "mastercard":
      case "MasterCard":
        lengthIsValid = (cardNumberLength == 16);
        prefixRegExp = /^5[1-5]/;
        break;

      case "VISA":
      case "visa":
      case "Visa":
        lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
        prefixRegExp = /^4/;
        break;

      case "American Express":
      case "american express":
      case "amex":
      case "AMEX":
      case "Amex":
        lengthIsValid = (cardNumberLength == 15);
        prefixRegExp = /^3(4|7)/;
        break;

      default:
        prefixRegExp = /^$/;
        //alert("Card type not found");
    }

    prefixIsValid = prefixRegExp.test(cardNumbersOnly);
    isValid = prefixIsValid && lengthIsValid;
  }

  if (isValid)
  {
    var numberProduct;
    var numberProductDigitIndex;
    var checkSumTotal = 0;

    for (digitCounter = cardNumberLength - 1; 
      digitCounter >= 0; 
      digitCounter--)
    {
      checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
      digitCounter--;
      numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
      for (var productDigitCounter = 0;
        productDigitCounter < numberProduct.length; 
        productDigitCounter++)
      {
        checkSumTotal += 
          parseInt(numberProduct.charAt(productDigitCounter));
      }
    }

    isValid = (checkSumTotal % 10 == 0);
  }

  return isValid;
}

function setcookie(name, value, days, path, domain) {
	if (days) {
		var expires = new Date();
		expires.setTime(expires.getTime()+(days*24*60*60*1000));
	}
	var cuhkey = name+"="+escape(value);
	cuhkey = cuhkey + ((expires) ? "; expires="+expires.toGMTString() : "");
	cuhkey = cuhkey + ((path) ? "; path="+path : "");
	cuhkey = cuhkey + ((domain) ? "; domain="+domain : "");
	document.cookie = cuhkey;
}

function getcookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

function unsetcookie(name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

$(function () {
  $("a[@rel='external']").click(function() { window.open($(this).attr('href')); return false; });
});
