/**
 * بسم الله الرحمن الرحيم
 * @author PHP0@hotmail.com AND almhajer@hotmail.com
 */

/**
 * 
 * @param F  اسم الفورم
 * @param O   الكائن اللذي يحمل الانواع
 */


var headID = document.getElementsByTagName("head")[0];
var cssNode = document.createElement('link');
cssNode.type = 'text/css';
cssNode.rel = 'stylesheet';
cssNode.href = 'BK/BKstyle/bkscc.css';
cssNode.media = 'screen';
headID.appendChild(cssNode);

BK.Forms = function(F, O) {

    var Count_Error = true; // عدد الاخطاء
    var doc_form = document.forms[F];
    var Url_Style = "./BKstyle/";             // رابط الايقونا الكلاسس
    var Example = {int:'1234567890',string:'[a-zA-Z]',date:'dd/mm/yyyy',mail:'sample@domin.com',checkd:'لم تقم بوضع اشارة صح',notequal:'العنصر الاول لايساوي العنصر الثاني'};


    /**
     *
     * @param {كائن} o
     * @param {Object} v
     */
    var _isset = function(o, v) {
        if (o) {
            return true;
        }
        else {
            return false;
        }
    }
    /**
     *  الحاق عنصر
     */
    var _appenChiled = function(o) {

        var e = doc_form.elements[o.name];
        //e.className="BK-"+o.typecheckd
        var di = document.createElement('div');
        var n = e.cloneNode(true);
        var classs=e.className;
        e.className = "BK-" + e.typecheckd;
        e.style.width= e.style.width||'85%';
        doc_form.replaceChild(di, e);
        di.appendChild(n);
        var img = document.createElement('img');
        img.src = Url_Style + "/date.gif";
        img.title = "Now";
        img.style.cursor = "pointer"


        di.appendChild(img);
        img.onclick = function() {
            n.value = new Date;
        }

    }


    var _appenIcon_Error = function(o, srcicon) {

        doc_form.elements[o.name].className = "BK-" + o.typecheckd;
        doc_form.elements[o.name].onchange = function() {
            doc_form.elements[o.name].className = "";
        }
    }

    /**
     * @param {كائن} o
     */
    var _getValue = function(o) {
        return eval("document.forms[F]." + o + ".value");
    }

    
    /**
     *
     */
    var _Trim=function(o){
      return  o.replace(/^\s+|\s+$/g, "");
    }

    /**
     *
     */
    var _ereg = function(v, e) {
        return e.test(_getValue(v));
    }


    /**
     * set error class this object
     */
    var _setErrorClass = function(o) {

        if (o.errorcss) {

            //            doc_form.elements[o].className = o.errorcss;

        }
    }


    /**
     *
     */
    var _setError = function(o) {
        Count_Error = false;
        _appenIcon_Error(o, 'ico_warn.gif');
        _showAlert(o);
    }

    /**
     *
     * @param {Object} o
     */
    var _setClass = function(o) {


        var Ex = null;
        if (showexample == true) {
            alert(o.errormsg + Example_Int);
        }
        else {
            alert(o.errormsg);
        }

    }


    /**
     *
     * @param {Object} o
     */
    var _showAlert = function(o) {

        if (o.showalert == true) {
            if (o.showexample== true) {
                alert(o.errormsg + Example[o.typecheckd]);
            }
            else {
                alert(o.errormsg);
            }
        }
    }


    /**
     *@param {object} errormsg
     *@param {object} typecheckd
     *@param {object} showexample boolean
     *@param {object} css
     * @param {Object} o
     */
    var is_mail = function(o) {


        var checkd = 1;


        if (!_ereg(o.name, /^\w+([\.\-]\w+)*\@\w+([\.\-]\w+)*\.\w+$/)) {
            _setError(o);
            _setErrorClass(o);

        }

    }

    /**
     * 
     */
    var is_notequal= function(o) {

      var Elm1=_Trim(doc_form.elements[o.elm[0]].value);
      var Elm2=_Trim(doc_form.elements[o.elm[1]].value);
        
        if (Elm1!=Elm2) {
            _setError(o);
            _setErrorClass(o);
        }
    }


    /**
     *
     * @param {Object} o
     */
    var is_int = function(o) {


        if (!_ereg(o.name, /\d+/)) {
            _setError(o);
            _setErrorClass(o);

        }

    }

    /**
     *
     * @param {Object} o
     */
    var is_checkd = function(o) {


        if (doc_form.elements[o.name].checked == false) {
            _setError(o);
            _setErrorClass(o);
        }


    }

    /**
     *
     * @param {Object} o
     */
    var is_string = function(o) {

        if (!_ereg(o.name, /\w+/)) {
            _setError(o);
            _setErrorClass(o);

        }

    }

    /**
     *
     * @param {Object} o
     */
    var is_url = function(o) {


    }
    /**
     *
     * @param {Object} o
     */
    var is_img = function(o) {


    }
    /**
     *
     * @param {Object} o
     */
    var is_phone = function(o) {


    }

    var is_date = function(o) {
        //              var ereg=

    }


    var is_empty = function(o) {
        //              var ereg=
        doc_form.elements[o.name].value = doc_form.elements[o.name].value.replace(/^\s+|\s+$/g, "");
        if (doc_form.elements[o.name].value.length < 1) {
            _setError(o);
            _setErrorClass(o);

        }

    }


    return {
        intl:function() {


            Count_Error = true;       //set  Count_Error
            for (var i = 0; i < O.items.length; i++) {
	if(document.forms[F][O.items[i].name]==undefined)
	continue;
                var ClF = O.items[i].typecheckd;


                /**
                 * ان كانت مصفوفة التشييك
                 */
                if (typeof O.items[i].typecheckd == 'object') {

                    for (var t = 0; t < O.items[i].typecheckd.length; t++) {

                        // alert(O.items[i].typecheckd[t])
                        var u = O.items[i].typecheckd[t].toString();
                        eval("is_" + u + "(O.items[i]);");
                    }

                }
                else {
                    eval("is_" + ClF + "(O.items[i]);");
                }


            }
        },

        _events:function() {
            Count_Error = true;       //set  Count_Error
            for (var i = 0; i < O.items.length; i++) {


                // اذا كانت نوع تاريخ
                if (O.items[i].typecheckd == 'date') {
                    //اذا كان مسموح عرض الايقونة
                    if (O.items[i].icondate) {
                        if (O.items[i].icondate == true) {
                            _appenChiled(O.items[i]);
                        }
                    }
                }

                if (O.items[i].events) {
                    for (var n = 0; n < O.items[i].events.length; n++) {
                        var Eve = O.items[i].events[n];
                        var Spl = Eve.split(':');

                        eval("doc_form.elements[O.items[i].name]." + Spl[0] + "=function(){" + Spl[1] + "}");
                    }

                }
            }
        },

        Submit:function() {

            this._events();

            var Run = this.intl;

            document.forms[F].onsubmit = function() {

                Run();

                if (Count_Error == true) {
                    return true;
                }
                else {
                    if(O.alert){
                		alert(O.alert);
                	}
                	return false;
                }

            }
        }
    }
}





    





