﻿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 = {
	'userconference2009' : {
		name : {
			id : 'name',
			message : '氏名を入力してください。',
			regex : /^.+$/i
		},
		organization : {
			id : 'organization',
			message : '組織名を入力してください。',
			regex : /^.+$/i
		},
		email : {
			id : 'email',
			message : 'Eメールアドレスが無効です。',
			regex : /^[^@]+@[^@]+(?:\.[^@\.]+)+$/i
		},
		phone : {
			id : 'phone',
			message : '電話番号が無効です。',
			regex : /^(?:\d[^\d]*){10,11}$/i
		},
		referralSource : {
			id : 'referralSource',
			message : 'どこでこのイベントを知ったか選択してください。',
			regex : /^(?!0$).*$/i
		}
	},
	'forum2010ja' : {
		name : {
			id : 'name',
			message : 'お名前の入力を再度ご確認ください',
			regex : /^.+$/i
		},
		kana : {
			id : 'kana',
			message : 'お名前（カナ入力）を再度ご確認ください',
			regex : /^.+$/i
		},		
		organization : {
			id : 'organization',
			message : '組織名の入力を再度ご確認ください',
			regex : /^.+$/i
		},
		email : {
			id : 'email',
			message : 'Eメールアドレスの入力を再度ご確認ください',
			regex : /^[^@]+@[^@]+(?:\.[^@\.]+)+$/i
		},
		phone : {
			id : 'phone',
			message : '電話番号の入力を再度ご確認ください',
			regex : /^(?:\d[^\d]*){10,11}$/i
		},
		referralSource : {
			id : 'referralSource',
			message : 'このイベントをどちらでお知りになりましたか。',
			regex : /^(?!0$).*$/i
		}
	},
	'preeventtutorialja' : {
		name : {
			id : 'name',
			message : 'お名前の入力を再度ご確認ください',
			regex : /^.+$/i
		},
		kana : {
			id : 'kana',
			message : 'お名前（カナ入力）を再度ご確認ください',
			regex : /^.+$/i
		},		
		organization : {
			id : 'organization',
			message : '組織名の入力を再度ご確認ください',
			regex : /^.+$/i
		},
		email : {
			id : 'email',
			message : 'Eメールアドレスの入力を再度ご確認ください',
			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
		}
	},
	'reg_user' : {
		last_name : {
			id : 'last_name',
			message : 'お名前の入力を再度ご確認ください',
			regex : /^.*[^\s].*$/i
		},
		company : {
			id : 'company',
			message : '会社名・団体名の入力を再度ご確認ください',
			regex : /^.*[^\s].*$/i
		},	
		phone : {
			id : 'phone',
			message : '電話番号の入力を再度ご確認ください',
			regex : /^(?:\d[^\d]*){10,11}$/i
		},	
		email : {
			id : 'email',
			message : 'E-mail の入力を再度ご確認ください',
			regex : /^[^@]+@[^@]+(?:\.[^@\.]+)+$/i
		},
		product_interest : {
			id : '00N50000001qVMo',
			message : 'ご希望の製品をお選びください',
			regex : /^.*[^\s].*$/i
		},
		platform : {
			id : 'description',
			message : 'ご希望のプラットフォームを記載してください',
			regex : /^.*[^\s].*$/i
		},
		language_modules : {
			id : '00N50000001qVMt',
			message : 'ご希望の言語を指定してください',
			regex : /^.*[^\s].*$/i
		},
		lead_source : {
			id : 'lead_source',
			message : '弊社および弊社製品をどちらでお知りになりましたか？',
			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);
}