
function checkEmail(emailID){
	var email = document.getElementById(emailID).value;
	email = email.toLowerCase();
	//completely unreadable re :)
	
	var re = /(^[\w-]+(\.[\w-]+)*)|(^\"\w+(\s\w+)*\")@([\w-]+\.)+\w{2,6}$/;
	var re1= /(^[\w-]+(\.[\w-]+)*)|(^\"\w+(\s\w+)*\")@\[(\d{1,3}\.){3}\d{1,3}\]$/;
	
	var emailResult;
	
	if(email.indexOf("[")==-1)
		emailResult = email.match(re);
	else
		emailResult = email.match(re1);
		
	var sufResult = suffix (email.substring(email.lastIndexOf(".")+1, email.length));
	
	if(email.indexOf("[") == -1){//checking against re and against the list of valid suffixes
		if(emailResult && sufResult)
			return true;
		else{
			alert("E-mail seems wrong!");
			return false;
		}
	}
	else{
		if(emailResult){//checking only against re1
			return true;
		}
		else{
			alert("E-mail seems damn wrong!");
			return false;
		}
	}
	
}

function suffix(suff){
	var str="acad.ae.af.ag.ai.al.am.an.ao.aq.ar.arpa.as.at.au.aw.az.ba.bb.bd"+
			".be.bf.bg.bh.bi.bj.bm.bn.bo.br.bs.bt.bv.bw.by"+
			".bz.ca.cc.cf.cg.ch.ci.ck.cl.cm.cn.co.com.cr.cs.cu.cv"+
			".cx.cy.cz.de.dj.dk.dm.do.dz.eu.ec.edu.ee.eg.eh.er.es.et.fi.firm"+
			".fj.fk.fm.fo.fr.fx.ga.gb.gd.ge.gf.gh.gi.gl.gm.gn.gov"+
			".gp.gq.gr.gs.gt.gu.gw.gy.hk.hm.hn.hr.ht.hu.id.ie.il.in."+
			"int.io.iq.ir.is.it.jm.jo.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.mg.mh.mil.mk.ml.mm.mn"+
			".mo.mp.mq.mr.ms.mt.mu.mv.mw.mx.my.mz.na.nato.nc.ne.net.nf.ng.ni."+
			"nl.no.nom.np.nr.nt.nu.nz.om.org.pa.pe.pf.pg.ph.pk.pl.pm.pn.pr.pt."+
			"pw.py.qa.re.ro.ru.rw.sa.sb.sc.sd.se.sg.sh.si.sj.sk.sl.sm.sn.so.sr."+
			"st.store.su.sv.sy.sz.tc.td.tf.tg.th.tj.tk.tm.tn.to.tp.tr.tt.tv.tw."+
			"tz.ua.ug.uk.um.us.uy.uz.va.vc.ve.vg.vi.vn.vu.web.wf.ws.ye.yt.yu.za.zm.zr.zw.info";
	
	var suffixes = new Array();
	suffixes = str.split(".");
	
	var index = 0;   					
	var goodSuffix = false;

	while(index < suffixes.length && !goodSuffix){
		goodSuffix = (suff==suffixes[index]);
		index++;    
	}
	return goodSuffix;
}
	
