/*
###########################################################
#  Form control library
#  Shaiulud                     - www.shaiulud.fr.st -                                 18/01/2002
###########################################################
*/

//##################
//#  GetFormIputs  #
//##################
//radio
function getRadioVal(rb)
{
	var L=rb.length;var ret="";
	for (var i = 0 ; i< L ; i++)
	{
		if(rb[i].checked)
		{
			ret=rb[i].value;break;
		}
	}
	return(ret);
}

//text, password, hidden, textarea, file
function getTextVal(tf)
{
	var ret=tf.value;
	return(ret);
}

//checkbox
function getCheckboxVal(cb)
{
	var L=cb.length;var ret='';
	for (i = 0; i < L; i++)
	{
		if (cb[i].checked==true) 
		{
			ret += cb[i].value + '\n';
		}
	}
	return(ret);
}

//select
function getSelectVal(sel)
{
	var ret='';
	ret=sel.options[sel.selectedIndex].text;
	return(ret);
}



//#############
//#  Control  #
//#############
function IsDate(JJ, MM, AAAA)
{
	if(JJ<1||JJ>31||MM<1||MM>12) return false;
	if(MM==2)
	{
		if(JJ==30||JJ==31) return false;
		if(JJ==29) return ((AAAA%4==0&&AAAA%100!=0)||AAAA%400==0);
	}
	else if(JJ==31) return !(MM==4||MM==6||MM==9||MM==11);
	return true;
}

function IsEMail(Object)
{
	var InputVal = Object.value;
	var ErrorLabel = Object.id+"Error";
	var InfoLabel = Object.id+"Info";
	var validDomain=false;
	var AtPos = InputVal.lastIndexOf("@");
	var DotPos= InputVal.lastIndexOf(".");
	if((AtPos>0)&&(DotPos>0)&&(AtPos<DotPos))
	{
		var domainExtList='ac.ad.ae.af.ag.ai.al.am.an.ao.aq.ar.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.cd.cf.cg.ch.ci.ck.cl.cm.cn.co.cr.cs.cu.cv.cx.cy.cz.de.dj.dk.dm.do.dz.ec.ee.eg.eh.er.es.et.fi.fj.fk.fm.fo.fr.fx.ga.gb.gd.ge.gf.gg.gh.gi.gl.gm.gn.gp.gq.gr.gs.gt.gu.gw.gy.hk.hm.hn.hr.ht.hu.id.ie.il.im.in.io.iq.ir.is.it.je.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.mk.ml.mm.mn.mo.mp.mq.mr.ms.mt.mu.mv.mw.mx.my.mz.na.nc.ne.nf.ng.ni.nl.no.np.nr.nt.nu.nz.om.pa.pe.pf.pg.ph.pk.pl.pm.pn.pr.ps.pt.pw.py.qa.re.ro.ru.rw.sa.sb.sc.sd.se.sg.sh.si.sj.sk.sl.sm.sn.so.sr.st.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.wf.ws.ye.yt.yu.za.zm.zr.zw.com.edu.gov.int.mil.net.org.biz.pro.info.aero.name.coop.arpa.nato.museum.EoF';
		var domainExt=domainExtList.split(".");
		var emailExt=InputVal.substr(DotPos+1);
		emailExt=emailExt.toLowerCase();
		for(i=0;domainExt.length;i++)
		{
			if (domainExt[i]=='EoF')  break; //infinite loop else
			if (emailExt==domainExt[i])
			{
				validDomain=true;break;
			}
		}
	}
	if(validDomain)
	{
		Object.className="InputValid";
		document.getElementById(ErrorLabel).style.display="none";
	}
	else
	{
		Object.className="InputError";
		document.getElementById(ErrorLabel).style.display="";
	}
}

function IsNumberString(Object)
{
	var InputVal = Object.value;
	var ErrorLabel = Object.id+"Error";
	var InfoLabel = Object.id+"Info";
	var regEx=/^[0-9]+$/;
	var ret=false;
	if (regEx.test(InputVal)) ret=true;
	return ret;
	if(ret)
	{
		Object.className="InputValid";
		document.getElementById(ErrorLabel).style.display="none";
		document.getElementById(InfoLabel).style.display="none";
	}
	else
	{
		Object.className="InputError";
		document.getElementById(ErrorLabel).style.display="";
		document.getElementById(InfoLabel).style.display="none";
	}
}

function IsAlphaNumString(Object)
{
	var InputVal = Object.value;
	var ErrorLabel = Object.id+"Error";
	var InfoLabel = Object.id+"Info";
	var regEx=/^[A-Za-z0-9]+$/;
	var ret=false;
	if (regEx.test(InputVal)) ret=true;
	return ret;
	if(ret)
	{
		Object.className="InputValid";
		document.getElementById(ErrorLabel).style.display="none";
		document.getElementById(InfoLabel).style.display="none";
	}
	else
	{
		Object.className="InputError";
		document.getElementById(ErrorLabel).style.display="";
		document.getElementById(InfoLabel).style.display="none";
	}
}

function IsAlphaString(Object)
{
	var InputVal = Object.value;
	var ErrorLabel = Object.id+"Error";
	var InfoLabel = Object.id+"Info";
	var regEx=/^[A-Za-z]+$/;
	var ret=false;
	if (regEx.test(InputVal)) ret=true;
	return ret;
	if(ret)
	{
		Object.className="InputValid";
		document.getElementById(ErrorLabel).style.display="none";
		document.getElementById(InfoLabel).style.display="none";
	}
	else
	{
		Object.className="InputError";
		document.getElementById(ErrorLabel).style.display="";
		document.getElementById(InfoLabel).style.display="none";
	}
}

function isCreditCard(st)
{
	//Encoding only works on cards with less than 19 digits with Luhn mod-10
	if (st.length > 19) return (false);
	sum=0;mul=1;l=st.length;
	for(i=0;i<l;i++)
	{
		digit = st.substring(l-i-1,l-i);
		tproduct = parseInt(digit ,10)*mul;
		if (tproduct >= 10)
			sum += (tproduct % 10) + 1;
		else
			sum += tproduct;
		if (mul == 1)
			mul++;
		else
			mul--;
	}
	if ((sum % 10) == 0)
		return (true);
	else
		return (false);
}

function isVisa(cc)
{
	if(((cc.length==16)||(cc.length==13))&&(cc.substring(0,1)==4)) return isCreditCard(cc);
	return false;
}

function isMasterCard(cc)
{
	firstdig = cc.substring(0,1);
	seconddig = cc.substring(1,2);
	if((cc.length==16)&&(firstdig==5)&&((seconddig>=1)&&(seconddig<=5))) return isCreditCard(cc);
	return false;
}

function isAmericanExpress(cc)
{
	firstdig = cc.substring(0,1);
	seconddig = cc.substring(1,2);
	if((cc.length==15)&&(firstdig==3)&&((seconddig==4)||(seconddig==7))) return isCreditCard(cc);
	return false;
}

function isAnyCard(Object)
{
	var InputVal = Object.value;
	var ErrorLabel = Object.id+"Error";
	var InfoLabel = Object.id+"Info";
	var ret=false;
	if(isCreditCard(InputVal))
	{
		if (isMasterCard(InputVal))
		{
			ret=true;
		}
		else if (isVisa(InputVal))
		{
			ret=true;
		}
		else if (isAmericanExpress(InputVal))
		{
			ret=true;
		}
		else
		{
			ret=false;
		}
	}
	else
	{
		ret=false;
	}
	if(ret)
	{
		Object.className="InputValid";
		document.getElementById(ErrorLabel).style.display="none";
		document.getElementById(InfoLabel).style.display="none";
	}
	else
	{
		Object.className="InputError";
		document.getElementById(ErrorLabel).style.display="";
		document.getElementById(InfoLabel).style.display="none";
	}	
}

function isFixeNumber(Object)
{
	var InputVal = Object.value;
	var ErrorLabel = Object.id+"Error";
	var regex = new RegExp(/^(01|02|03|04|05|08|09)[0-9]{8}/gi);
	var match = false;

	if(regex.test(InputVal))
	{
		Object.className="InputValid";
		document.getElementById(ErrorLabel).style.display="none";
	}
	else
	{
		Object.className="InputError";
		document.getElementById(ErrorLabel).style.display="";
	}	
}

function isPortNumber(Object)
{
	var InputVal = Object.value;
	var ErrorLabel = Object.id+"Error";
	var regex = new RegExp(/^(06)[0-9]{8}/gi);
	var match = false;

	if(regex.test(InputVal))
	{
		Object.className="InputValid";
		document.getElementById(ErrorLabel).style.display="none";
	}
	else
	{
		Object.className="InputError";
		document.getElementById(ErrorLabel).style.display="";
	}
} 
