// Truncate string without tooltip.
String.prototype.truncate = function(l)
{
	var val = this.toString();
	if (val.length > l)
	{
		val = val.substring(0, l - 3) + " ...";
	}
	return val;
};
//hasClass
String.prototype.hC = function(c) { var l = ' '+this+' '; return l.indexOf(' '+c+' ')!=-1; };

//trim whitespace
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); };

// Check if a string is empty, guard against all-space strings.
String.prototype.isEmpty = function(){
	if (this.length == 0 || this == "" || this.trim().length == 0 || this.trim() == "")
	{
		return true;
	}
	return false;
};
// Validate a single email sting
String.prototype.emailIsValid = function() {
	return /^(?:[a-z0-9!#$%&'*+\/=?^_\`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])$/i.test(this);
};

function MM_preloadImages() { //v3.0
	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
	var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
	var p,i,x;  
	if(!d) d=document; 
	if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
	}
	
	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function isValidEmail(email) {
	if (email == null)
		return false;
	
	email = email.replace(/^\s+|\s+$/, '');
	var pattern = /^([a-zA-Z0-9_\.\-+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return email.match(pattern) != null;
}

function isValidDate(date) {
	if (date == null || date == "")
		return false;

    var pattern = /^(?=\d)(?:(?!(?:1582(?:\.|-|\/)10(?:\.|-|\/)(?:0?[5-9]|1[0-4]))|(?:1752(?:\.|-|\/)0?9(?:\.|-|\/)(?:0?[3-9]|1[0-3])))(?=(?:(?!000[04]|(?:(?:1[^0-6]|[2468][^048]|[3579][^26])00))(?:(?:\d\d)(?:[02468][048]|[13579][26]))\D0?2\D29)|(?:\d{4}\D(?!(?:0?[2469]|11)\D31)(?!0?2(?:\.|-|\/)(?:29|30))))(\d{4})([-\/.])(0?\d|1[012])\2((?!00)[012]?\d|3[01])(?:$|(?=\x20\d)\x20))?((?:(?:0?[1-9]|1[012])(?::[0-5]\d){0,2}(?:\x20[aApP][mM]))|(?:[01]\d|2[0-3])(?::[0-5]\d){1,2})?$/;
    return date.match(pattern) != null;
}

function isBlank(param) {
	if (param == null || param.replace(/^\s+|\s+$/, '') == "") {
		return true;
	} else {
		return false;
	}
}

function isValidPwd(param) {
	if (isBlank(param) == true) {
		return false;
	} else {
		return param.length >= 6;
	}
}

function isValidPhone(phone) {
	if (phone == null || phone.isEmpty())
		return false;
		
	//var pattern = /^(\+\d)*\s*(\(\d{3}\)\s*)*\d{3}(-{0,1}|\s{0,1})\d{2}(-{0,1}|\s{0,1})\d{2}$/; 
	//return phone.match(pattern);
	
	phone = phone.replace(/-|\(|\)|\ |\./g, "");
	return !isNaN(phone);
}

function getCheckedValue(oRadio) {
	for(var i = 0; i < oRadio.length; i++) {
		if(oRadio[i].checked)
			return oRadio[i].value;
	}
	return "";
}

var cookieUser = "TUNGLE_PORTAL_USER";
var cookiePassword = "TUNGLE_PORTAL_PASS";
var cookieReferral = "TUNGLE_REFERRAL_URL";
var cookieSession = "TUNGLE_PORTAL_SESSION";
var cookieName = "TUNGLE_PORTAL_NAME";
var cookieTryoutSub = "TUNGLE_PORTAL_TRYOUT_SUB";

function createCookie(name,value,days) {
	var expires = "";
	if (!days)
	{
		days = 1000;
	}
	var date = new Date();
	if (days > 0)
	{
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		expires = "; expires=" + date.toGMTString();
	}
	document.cookie = name + "=" + value + expires + "; path=/";
	return value;
}
function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i = 0;i < ca.length; i++)
	{
		var c = ca[i];
		while (c.charAt(0) == ' ')
		{
			c = c.substring(1,c.length);
		}
		if (c.indexOf(nameEQ) == 0)
		{
			return c.substring(nameEQ.length,c.length);
		}
	}
	return null;
}

function removeCookie(name) {
	createCookie(name,"",-1);
}

function setReferral()
{
	var interests = ["SXSW"];
	var referral = document.referrer;
	var test = referral.match(/^http[s]?:\/\/[^\/]+/);
	var host = document.location.hostname;
	var path = document.location.pathname;

	if (test && test.length > 0)
	{
		if (test[0].indexOf(host) > -1)
		{
			// No overwriting if coming from an internal page.
			return false;
		}
	}
	else
	{
		var affiliate = jQuery.ajaxHelper.getParameter(document.location.search, "affiliate");
		if (affiliate && affiliate.length)
		{
			referral = affiliate;
		}
		else
		{
			referral = "null";
		}
	}

	for (var i=0; i<interests.length; i++){
		if (path.indexOf(interests[i]) > -1){
			referral = (referral + " " + interests[i]).trim();
			break;
		}
	}

	createCookie(cookieReferral, referral + " " + window.location.toString(), 0);
}

// Record referral URL if any.
setReferral();
