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.checkDropDownList = function(objInput, p) {
    if (objInput.selectedIndex == p)
        return false;

    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{
	//alert('a');
		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.checkForm = 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 'DROPDOWNLIST':
                p = parseInt(checkObj.checkParameters[0]);
                o = document.forms[this.formID].elements[checkObj.elementID];
                r = this.checkDropDownList(o, p);
                if (!r) {
                    this.returnMessage(checkObj.elementLabel, 1, p);
                    o.focus();
                    o.style.backgroundColor = "#fffbec";
                    return false;
                }
                break;
            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();
                    o.style.backgroundColor = "#fffbec";
                    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();
                    o.style.backgroundColor = "#fffbec";
                    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();
                    o.style.backgroundColor = "#fffbec";
                    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;
}

onlyLetter=function(e) {
	var keyCode = (!$.browser.msie) ? e.which : event.keyCode;
	if (keyCode > 47 && keyCode<58){
	return false;}
}

onlyNumber=function(e) {
	var keyCode = (!$.browser.msie) ? e.which : event.keyCode;
	if ((keyCode<48 || keyCode>57)&&keyCode!=8&&keyCode!=0) {
	return false;}
}

onlyEmail=function(e) {
	var InvalidChars=" üÜðÐýþÞÝçÇöÖ!#/*{[()]},;^><\\?+:`|";

	kCode=InvalidChars.charAt(5);

	var keyCode = (!$.browser.msie) ? 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);
}

