﻿function Querystring(qs) {
	this.params = {};
	
	if (qs == null) qs = location.search.substring(1, location.search.length);
	if (qs.length == 0) return;
	qs = qs.replace(/\+/g, ' ');
	var args = qs.split('&');
	for (var i = 0; i < args.length; i++) {
		var pair = args[i].split('=');
		var name = decodeURIComponent(pair[0]);
		
		var value = (pair.length==2)
			? decodeURIComponent(pair[1])
			: name;
		
		this.params[name] = value;
	}
}
Querystring.prototype.get = function(key, default_) {
	var value = this.params[key];
	return (value != null) ? value : default_;
}
Querystring.prototype.contains = function(key) {
	var value = this.params[key];
	return (value != null);
}
var querystring = new Querystring();
var FormSettings = {
	errorId : 'formerror',
	formId : 'managedform'
};
var FormObjects = {
	'forensicsConference2010' : {
		name : {
			id : 'name',
			message : 'Name Required',
			regex : /^.+$/i
		},
		organization : {
			id : 'organization',
			message : 'Organization Required',
			regex : /^.+$/i
		},
		email : {
			id : 'email',
			message : 'Email Invalid',
			regex : /^[^@]+@[^@]+(?:\.[^@\.]+)+$/i
		},
		phone : {
			id : 'phone',
			message : 'Phone Invalid',
			regex : /^(?:\d[^\d]*){10,11}$/i
		}
	},	
	'userconference2010' : {
		name : {
			id : 'name',
			message : 'Name Required',
			regex : /^.+$/i
		},
		organization : {
			id : 'organization',
			message : 'Organization Required',
			regex : /^.+$/i
		},
		email : {
			id : 'email',
			message : 'Email Invalid',
			regex : /^[^@]+@[^@]+(?:\.[^@\.]+)+$/i
		},
		phone : {
			id : 'phone',
			message : 'Phone Invalid',
			regex : /^(?:\d[^\d]*){10,11}$/i
		},
		referralSource : {
			id : 'referralSource',
			message : 'Referral Source Required',
			regex : /^(?!0$).*$/i
		}
	},
	'forum2010' : {
		name : {
			id : 'name',
			message : 'Name Required',
			regex : /^.+$/i
		},
		organization : {
			id : 'organization',
			message : 'Organization Required',
			regex : /^.+$/i
		},
		email : {
			id : 'email',
			message : 'Email Invalid',
			regex : /^[^@]+@[^@]+(?:\.[^@\.]+)+$/i
		},
		phone : {
			id : 'phone',
			message : 'Phone Invalid',
			regex : /^(?:\d[^\d]*){10,11}$/i
		},
		referralSource : {
			id : 'referralSource',
			message : 'Referral Source Required',
			regex : /^(?!0$).*$/i
		}
	},
	'preeventtutorial' : {
		name : {
			id : 'name',
			message : 'Name Required',
			regex : /^.+$/i
		},
		email : {
			id : 'email',
			message : 'Email Invalid',
			regex : /^[^@]+@[^@]+(?:\.[^@\.]+)+$/i
		}
	},	
	'neWhitepaper' : {
		name : {
			id : 'name',
			message : 'Name Required',
			regex : /^.+$/i
		},
		url : {
			id : 'url',
			message : 'URL Invalid',
			regex : /^(?:https?:\/\/)?(?:[^\.\/]+\.)+[^\.\/]+.*$/i
		},
		email : {
			id : 'email',
			message : 'Email Invalid',
			regex : /^[^@]+@[^@]+(?:\.[^@\.]+)+$/i
		},
		phone : {
			id : 'phone',
			message : 'Phone Invalid',
			regex : /(^(?:\d[^\d]*){10,11}$)|^$/i
		}
	},
	'nrWhitepaper' : {
		name : {
			id : 'name',
			message : 'Name Required',
			regex : /^.+$/i
		},
		url : {
			id : 'url',
			message : 'URL Invalid',
			regex : /^(?:https?:\/\/)?(?:[^\.\/]+\.)+[^\.\/]+.*$/i
		},
		email : {
			id : 'email',
			message : 'Email Invalid',
			regex : /^[^@]+@[^@]+(?:\.[^@\.]+)+$/i
		},
		phone : {
			id : 'phone',
			message : 'Phone Invalid',
			regex : /(^(?:\d[^\d]*){10,11}$)|^$/i
		}
	},
	'eDiscoveryWhitepaper' : {
		name : {
			id : 'name',
			message : 'Name Required',
			regex : /^.+$/i
		},
		url : {
			id : 'url',
			message : 'URL Invalid',
			regex : /^(?:https?:\/\/)?(?:[^\.\/]+\.)+[^\.\/]+.*$/i
		},
		email : {
			id : 'email',
			message : 'Email Invalid',
			regex : /^[^@]+@[^@]+(?:\.[^@\.]+)+$/i
		},
		phone : {
			id : 'phone',
			message : 'Phone Invalid',
			regex : /(^(?:\d[^\d]*){10,11}$)|^$/i
		}
	},
	'kycWhitepaper' : {
		name : {
			id : 'name',
			message : 'Name Required',
			regex : /^.+$/i
		},
		url : {
			id : 'url',
			message : 'URL Invalid',
			regex : /^(?:https?:\/\/)?(?:[^\.\/]+\.)+[^\.\/]+.*$/i
		},
		email : {
			id : 'email',
			message : 'Email Invalid',
			regex : /^[^@]+@[^@]+(?:\.[^@\.]+)+$/i
		},
		phone : {
			id : 'phone',
			message : 'Phone Invalid',
			regex : /(^(?:\d[^\d]*){10,11}$)|^$/i
		}
	},
	'osintWhitepaper' : {
		name : {
			id : 'name',
			message : 'Name Required',
			regex : /^.+$/i
		},
		url : {
			id : 'url',
			message : 'URL Invalid',
			regex : /^(?:https?:\/\/)?(?:[^\.\/]+\.)+[^\.\/]+.*$/i
		},
		email : {
			id : 'email',
			message : 'Email Invalid',
			regex : /^[^@]+@[^@]+(?:\.[^@\.]+)+$/i
		},
		phone : {
			id : 'phone',
			message : 'Phone Invalid',
			regex : /(^(?:\d[^\d]*){10,11}$)|^$/i
		}
	},
	'luceneWhitepaper' : {
		name : {
			id : 'name',
			message : 'Name Required',
			regex : /^.+$/i
		},
		url : {
			id : 'url',
			message : 'URL Invalid',
			regex : /^(?:https?:\/\/)?(?:[^\.\/]+\.)+[^\.\/]+.*$/i
		},
		email : {
			id : 'email',
			message : 'Email Invalid',
			regex : /^[^@]+@[^@]+(?:\.[^@\.]+)+$/i
		},
		phone : {
			id : 'phone',
			message : 'Phone Invalid',
			regex : /(^(?:\d[^\d]*){10,11}$)|^$/i
		}
	},	
	'reg_user' : {
		first_name : {
			id : 'first_name',
			message : 'First Name Required',
			regex : /^.*[^\s].*$/i
		},
		last_name : {
			id : 'last_name',
			message : 'Last Name Required',
			regex : /^.*[^\s].*$/i
		},
		company : {
			id : 'company',
			message : 'Organization Required',
			regex : /^.*[^\s].*$/i
		},		
		email : {
			id : 'email',
			message : 'Email Invalid',
			regex : /^[^@]+@[^@]+(?:\.[^@\.]+)+$/i
		},
		phone : {
			id : 'phone',
			message : 'Phone Invalid',
			regex : /^(?:\d[^\d]*){10,11}$/i
		},
		projectReqs : {
			id : '00N50000001qVJ6',
			message : 'Please provide a brief description of project requirements.',
			regex : /^.*[^\s].*$/i
		}
	}	
};
var error = querystring.get('error');
if(error){
	DisplayError(error);
}
function DisplayError(errorText){
	var errorElm = document.getElementById(FormSettings.errorId);
	errorElm.innerHTML = errorText;
	errorElm.style.display = 'block';
	ScrollToElement(errorElm);
}
function ValidateRegistrationForm(){
	var form = FormObjects[document.getElementById(FormSettings.formId).className];
	for(var i in form){
		var elm = document.getElementById(form[i].id);
		if(!elm.value.match(form[i].regex)){
			DisplayError(form[i].message);
			return false;
		}
	}
	return true;
}
function ScrollToElement(elm){
	var x = 0;
	var y = 0;         
	while(elm != null){
		x += elm.offsetLeft;
		y += elm.offsetTop;
		elm = elm.offsetParent;
	}                    		      
	window.scrollTo(x, y);
}