﻿if (!Array.prototype.push) {
	Array.prototype.push=function (val) {
		Array[Array.length]=val;
	}
}

function MagicFormCheck(MyName, formID, lang) {
	this.name=MyName;
	if (lang) {
		this.lang=lang;
	}else{
		this.lang='TR';
	}
	if (formID) {
		this.formID=formID;
	}else{
		this.formID;	
	}
	this.checkPoints=new Array();
	this.initiated=false;
	this.customChecks=new Array();
}

function MagicElementCheck(MyName, elementID, elementLabel, checkType, checkParameters, varType) {
	this.name=MyName;
	
	if (elementID) {
		this.elementID=elementID;
	}else{
		this.elementID;
	}
	if (elementLabel) {
		this.elementLabel=elementLabel;
	}else{
		this.elementLabel;
	}
	if (checkType) {
		this.type=checkType;
	}else{
		this.type;
	}
	if (checkParameters) {
		this.checkParameters=checkParameters.split('|');
	}else{
		this.checkParameters=new Array();
	}
	if (varType) {
		this.varType=varType;
	}else{
		this.varType;
	}
}

MagicFormCheck.prototype.initiate=function () {
	for (i=0;i<=this.checkPoints.length-1;i++) {
		if (this.checkPoints[i].varType) {
			this.activateElementControl(this.checkPoints[i]);
		}
	}
	this.initiated=true;
}

MagicFormCheck.prototype.resetAllCheck=function () {
	this.checkPoints=new Array();
	this.initiated=false;
}

MagicFormCheck.prototype.addNewCheck=function (obj) {
	this.checkPoints[this.checkPoints.length]=obj;
}

MagicFormCheck.prototype.activateElementControl=function (obj) {
	switch (obj.varType) {
		case 'numeric':
			o=document.forms[this.formID].elements[obj.elementID];
			o.onkeypress=this.onlyNumber;
		break;
		case 'email':
			o=document.forms[this.formID].elements[obj.elementID];
			//o.onkeypress=this.onlyEmail;
		break;
		case 'nonumber':
			o=document.forms[this.formID].elements[obj.elementID];
			o.onkeypress=this.onlyLetter;
		break;
	}
}

MagicFormCheck.prototype.checkLengthMax=function(objInput,p) {
	cVal=(objInput.value).length;
	if (cVal>p) {
		return false;
	}else{
		return true;
	}
}

MagicFormCheck.prototype.checkOptional=function(objInput,p) {
	cVal=(objInput.value);
	if (cVal.length>0 && cVal.length<p) {
		return false;
	}else{
		return true;
	}
}

MagicFormCheck.prototype.checkLengthMin=function(objInput,p) {
	cVal=(objInput.value).length;
	if (cVal<p) {
		return false;
	}else{
		return true;
	}
}

MagicFormCheck.prototype.checkRadioButton=function (objInput,p) {
	var temp=true;
	for (boxes=0;boxes<=objInput.length-1;boxes++) {
		if (objInput[boxes].checked==true) {
			temp=false;
			break;
		}
	}
	return temp;
}

MagicFormCheck.prototype.checkLengthMin=function(objInput,p) {
	cVal=(objInput.value).length;
	if (cVal<p) {
		return false;
	}else{
		return true;
	}
}

MagicFormCheck.prototype.checkPassword=function(objInput,p) {
	cVal1=(objInput.value);
	cVal2=(p.value);
	
	
	if (cVal1!=cVal2) {
		return false;
	}else{
		return true;
	}
}

MagicFormCheck.prototype.checkEMail=function (objInput) {
	TmpStr=objInput.value;
	if (TmpStr==""){ return false;}
	else{
		var i, atPos, atPos2, InvalidChars=" üÜğĞışŞİçÇöÖ!#/*{[()]}";

		for (i=0; i<InvalidChars.length; i++)
			if (TmpStr.indexOf(InvalidChars.charAt(i)) != -1) {
				return false;
			}
		atPos = TmpStr.indexOf("@");
		atPos1 = TmpStr.indexOf(".");
		atPos2 = TmpStr.indexOf("@", atPos+1);
		
		if ((atPos < 1) || (atPos1 < 1) || (atPos2 != -1)) {
			return false;
		} else{
				atPos3=new Array;
				atPos3 = TmpStr.split("@");
				
				atPos4=new Array;
				atPos4 = atPos3[1].split(".");

				if(atPos4[1].length<2 || atPos4[0].length<1) {
					return false;
				}

			return true;
		}
		return true;
	}
}

MagicFormCheck.prototype.checkSelectBox=function (objSelect) {
	cVal=objSelect.options.selectedIndex;
	if (cVal<1){
		return false;
	}  else {
		return true;
	}
}

MagicFormCheck.prototype.returnMessage=function (label,m,pA) {
	messageTxt=this.repl(MESSAGES[m],'{LABEL}',label);
	
	if (pA) {
		pA+='';
		pArray=pA.split('|');
		for (k=0;k<=pArray.length-1;k++) {
			kk=k+1;
			messageTxt=this.repl(messageTxt,'{PARAMETER'+kk+'}', pArray[k]);
		}
	}
	alert(messageTxt);
}

MagicFormCheck.prototype.repl=function(mainString,str1,str2) {
	tmpA=mainString.split(str1);
	tmpStr='';
	for (j=0;j<=tmpA.length-1;j++) {
		if (j<tmpA.length-1) {
			tmpStr+=tmpA[j]+str2;
		}else{
			tmpStr+=tmpA[j];
		}
	}
	return tmpStr;
}

MagicFormCheck.prototype.check=function (id) {
	OK=true;
	if (this.initiated==false) {
		return false;
	}

	for (i=0;i<=this.checkPoints.length-1;i++) {
		checkObj=this.checkPoints[i];
		switch (checkObj.type) {
			case 'MINLENGTH':
				p=parseInt(checkObj.checkParameters[0]);
				o=document.forms[this.formID].elements[checkObj.elementID];
				r=this.checkLengthMin(o,p);
				if (!r) {
					if (p==1) {
						this.returnMessage(checkObj.elementLabel,1);
					}else{
						this.returnMessage(checkObj.elementLabel,3,p);
					}
					o.focus();
					o.style.backgroundColor="#fffbec";
					return false;
				} 
				break;

			case 'MAXLENGTH':
				p=parseInt(checkObj.checkParameters[0]);
				o=document.forms[this.formID].elements[checkObj.elementID];
				r=this.checkLengthMax(o,p);
				if (!r) {
					this.returnMessage(checkObj.elementLabel,2,p);
					o.focus();
					return false;
				} 
				break;

			case 'OPTIONAL':
				p=parseInt(checkObj.checkParameters[0]);
				o=document.forms[this.formID].elements[checkObj.elementID];
				r=this.checkOptional(o,p);
				if (!r) {
					this.returnMessage(checkObj.elementLabel,7,p);
					o.focus();
					return false;
				} 
				break;
				
			case 'E-MAIL':
				o=document.forms[this.formID].elements[checkObj.elementID];
				r=this.checkEMail(o);
				if (!r) {
					this.returnMessage(checkObj.elementLabel,5);
					o.focus();
					return false;
				} 
				break;

			case 'PASSWORD':
				
				p=checkObj.checkParameters[0];
				
				po=document.forms[this.formID].elements[checkObj.checkParameters[0]];
				o=document.forms[this.formID].elements[checkObj.elementID];
				
				r=this.checkPassword(o,po);
				if (!r) {
					this.returnMessage(checkObj.elementLabel,4);
					o.focus();
					o.style.backgroundColor="#fffbec";
					return false;
				} 
				break;

			case 'SELECTBOX':
				o=document.forms[this.formID].elements[checkObj.elementID];
				r=this.checkSelectBox(o);
				if (!r) {
					this.returnMessage(checkObj.elementLabel,1);
					o.focus();
					o.style.backgroundColor="#fffbec";
					return false;
				} 
				break;

			case 'RADIO':
				o=document.forms[this.formID].elements[checkObj.elementID];
				r=this.checkRadioButton(o);
				
				if (r) {
					this.returnMessage(checkObj.elementLabel,6);
					//o.focus();
					return false;
				}
				break;
				
			case 'CHECKBOX':
				o=document.forms[this.formID].elements[checkObj.elementID];
				r=this.checkRadioButton(o);
				if (r) {
					this.returnMessage(checkObj.elementLabel,6);
					//o.focus();
					return false;
				} 
				break;
		}
	}

	for (i=0;i<=this.customChecks.length-1;i++) {
		var checkValue=eval(this.customChecks[i])
		if (checkValue==false) {
			return false;	
		} 
	}

	if(id){
		activate(id);
	}
	return true;
}

MagicFormCheck.prototype.onlyLetter=function(e) {
	var keyCode = (is.NS) ? e.which : event.keyCode;
	if (keyCode > 47 && keyCode<58){
	return false;}
}

MagicFormCheck.prototype.onlyNumber=function(e) {
	var keyCode = (is.NS) ? e.which : event.keyCode;
	
	if ((keyCode<48 || keyCode>57)&&keyCode!=8&&keyCode!=0) {
	return false;}
}

MagicFormCheck.prototype.onlyEmail=function(e) {
	var InvalidChars=" !#/*{[()]},;^><\\?+:`|";

	kCode=InvalidChars.charAt(5);

	var keyCode = (is.NS) ? e.which : event.keyCode;

	if (keyCode>127) {
		return false;
	}
	for (i=0;i<=InvalidChars.length-1;i++) {
		if (keyCode==InvalidChars.charCodeAt(i)) {
			return false;
		}
	}
	return true;
}

MagicFormCheck.prototype.addCustomCheck=function (checkObject) {
	this.customChecks.add(checkObject);
}
