function initEventHandlers(){
	var contact = document.getElementById('inUserEmailContact');
	var monitoring = document.getElementById('inUserEmailMonitoring');
	
	addListener(contact, 'keyup', checkEmailContact);
	addListener(contact, 'change', checkEmailContact);
	
	addListener(monitoring, 'keyup', checkEmailMonitoring);
	addListener(monitoring, 'change', checkEmailMonitoring);
	
	checkEmailContact();
	checkEmailMonitoring();
}

addListener(window, 'load', initEventHandlers);

function checkEmailContact(){
	var email = document.getElementById('inUserEmailContact').value;
	var emailCheckedResult = document.getElementById('emailContactCheckedResult');
	
	checkEmail(email , emailCheckedResult);
}

function checkEmailMonitoring(){
	var email = document.getElementById('inUserEmailMonitoring').value;
	var emailCheckedResult = document.getElementById('emailMonitoringCheckedResult');
	
	checkEmail(email , emailCheckedResult);
}

function checkEmail(email , emailCheckedResult){

	while(email.match('[ ]') == ' '){
		email = email.replace(' ' , '');
	}
	
	if (isEmailAddress(email)){
		var emailSplitted = email.split(".");
		var extension = emailSplitted.pop();
		var emailWithoutExt = emailSplitted.join();
		emailSplitted = emailWithoutExt.split("@");
		var domain = emailSplitted.pop();
		if(isExtensionValid(extension)){
			if(isDomainValid(domain)){
				emailCheckedResult.innerHTML = '<img src="images/correct.png" />';
			}
			else{
				emailCheckedResult.innerHTML = INVALID_DOMAIN + ' : ' + domain;
			}
		}
		else{
			emailCheckedResult.innerHTML = INVALID_EXTENSION + ' : ' + extension;	
		}
	}
	else{
		emailCheckedResult.innerHTML = '';//'<img src="images/incorrect.png" />';
	}
	
}

function isEmailAddress(val){
	if (val.match(/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*\@([a-zA-Z0-9])+([.a-zA-Z0-9_-])*\.([a-zA-Z]{2,4})$/)){
		return true;
	}
	else{
		return false;
	} 
}

var extensionsList = new Array("AC","AD","AE","AERO","AF","AG","AI","AL","AM","AN","AO","AQ","AR","ARPA","AS","ASIA","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BIZ","BJ","BL","BM","BN","BO","BR","BS","BT","BV","BW","BY","BZ","CA","CAT","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","COM","COOP","CR","CU","CV","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EDU","EE","EG","EH","ER","ES","ET","EU","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GOV","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","INFO","INT","IO","IQ","IR","IS","IT","JE","JM","JO","JOBS","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MIL","MK","ML","MM","MN","MO","MOBI","MP","MQ","MR","MS","MT","MU","MUSEUM","MV","MW","MX","MY","MZ","NA","NAME","NC","NE","NET","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","ORG","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PRO","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","ST","SU","SV","SY","SZ","TC","TD","TEL","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TP","TR","TRAVEL","TT","TV","TW","TZ","UA","UG","UK","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","YE","YT","YU","ZA","ZM","ZW");

function objectConverter(myArray){
	var anObject = {};
	for(var i=0;i<myArray.length;i++){
		anObject[myArray[i]] = '';
	}
	return anObject;
}

function isExtensionValid(val){
	if(val.toUpperCase() in objectConverter(extensionsList)){
		return true;
	}
	else{
		return false;
	}
}

// TODO : complete bad domains list
var badDomainsList = new Array("hotmail","yahoo","msn","chello","pandora");

function isDomainValid(val){
	if(val.toLowerCase() in objectConverter(badDomainsList)){
		return false;
	}
	else{
		return true;
	}
}
