<commit_before>/*!
 * hsnValidate - jQuery Eklentisi
 * version: 1.0 (30 Mart 2013, Cumartesi)
 * @jQuery v1.7 ve üstü ile çalışmaktadır.
 * @Browser Support ie8 and above, and all modern browsers
 *
 * Örneklere http://... adresinden  ulaşabilirsiniz.
 * Proje Adresi : https://github.com/hsnayd/hsnValidate 
 * Lisans: MIT ve GPL
 *  * http://www.opensource.org/licenses/mit-license.php
 *  * http://www.gnu.org/licenses/gpl.txt
 *
 * Copyright 2012 <NAME> - http://www.hasanaydogdu.com
 *
 */
( function ( $ ) {
    "use strict";
    /**
    *  Declare variables
    */
    var HsnValidate = {}, // Plugin Class
        fields = {}, // Current fields/fieldss
        // RegExp for input validate rules
        reg = new RegExp( /(minChecked|maxChecked|minSelected|maxSelected|minLength|maxLength|equal|customReg)\[[(\w)-_]{1,10}\]/i ),
        // RegExp for mail kontrol method
        regMail = new RegExp( /^[a-z]{1}[\d\w\.-]+@[\d\w-]{3,}\.[\w]{2,3}(\.\w{2})?$/ ),
        //RegExp for input number control method
        regNumber = new RegExp( /^[\+][0-9]+?$|^[0-9]+?$/ );
    /**
    *  Form kontrol hata mesajları 
    */
    var messages = {
        empty   : 'This field is required. Please be sure to check.',
        email   : 'Your E-mail address appears to be invalid. Please be sure to check.',
        number    : 'You can only enter numbers in this field.',
        maxLength : 'Maximum {count} characters allowed!',
        minLength : 'Minimum {count} characters allowed! ',
        checkbox  : 'This checkbox is required. Please be sure to check.',
        maxChecked  : 'Maximum {count} options allowed. Please be sure to check.',
        minChecked  : 'Please select minimum {count} options.',
        selectbox : 'Please select an option.',
        maxSelected : 'Maximum {count} selection allowed. Please be sure to check.',
        minSelected : 'Minimum {count} selection allowed. Please be sure to check.',
        notEqual  : 'Fields do not match. Please be sure to check.',
        creditCard  : 'Invalid credit card number. Please be sure to check.'
    };
    /**
    *  Eklenti default ayarları
    */
    var defaults = {
        errorClass    : 'formHata', // Hata mesajı penceresine eklenecek olan class
        errorCloseClass : 'formHataKapa', // Hata mesajı penceresini kapatan HTML elementine eklenecek class
        ajax : { // Ajax işlemleri
          call    : false, // Ajax işlemi yapmak isyorsanız true olarak ayarlamalısınız.
          type    : 'GET', // Ajax post type
          url     : null, // Ajax url. URL bilgisini burada eklemek yerine FORM action özniteliğinde de belirtebilirsiniz.
          dataType  : 'html', // Ajax dataType
          beforeSend  : $.noop, // Ajax başlamadan önce çalıştırılıcak fonksiyon
          success   : $.noop, // Ajax işlemi başarılı ise çalıştırılacak fonksiyon
          fail    : $.noop, // Ajax işlemi başarısız ise çalıştırılacak fonksiyon
          complete  : $.noop // Ajax işlemi tamamlandığında (başarılı yada başarısız) çalıştırılacak fonksiyon
        },
        realTime   : true, // Eğer true seçilirse real-time form kontrolü aktif edilir
        onCompleteFunc  : $.noop, // Form kontrolü tamamlandıktan sonra çalıştırılacak fonksiyon
        customReg   : {} // Costum Reg metodu değişkeni
    };
    /**
    * Plugin Class
    *
    * @param {object} form : Kontrol edilen <form> elementi
    * @param {object} options : Kullanıcının belirlediği ayarlar
    * @return {method} events 
    */
    HsnValidate = function( form, options ){
        /**
        *  Public  Properties
        *  @property handler : uses to handle submit event
        *  @property options : Register plugin options
        *  @property form : Register <form> element
        */
        this.handler = false;
        this.options = $.extend( true, {}, defaults, options );
        this.form = form ;
        // Events methodunu başlatalım
        return this.events.call( this );
    };
    /**
    * Events Method
    * Eklentinin çalışması yada hata pencerelerinin kapatılması işlemlerini tetikler
    * 
    * @return {method} init, {method} reset or {false}
    */
    HsnValidate.prototype.events = function(){
        var that = this; // scoped this
        // Handle submit event 
        $( this.form ).submit( function( e ){
            // kontrol edilecek alanlar global değişkene aktarıldı
            // fields to be controlled transferred to global variable
            fields = this.querySelectorAll( '[data-hsnvalidate]' );
            // init metodunu başlat
            return that.init.call( that, e );
        });
        // real-time option control
        if( this.options.realTime === true ){
            // handle change event for form elements (without checkbox)
            $( this.form ).find( '[data-hsnvalidate]' ).not( '[type=checkbox]' ).on( 'change', function( e ){
                // field to be controlled transferred to global variable
                fields = $( this );
                // init metodunu başlat
                return that.init.call( that, e );
            });
            // handle click event for checkboxes
            $( this.form ).find( '[data-hsnvalidate][type=checkbox]' ).on( 'click', function( e ){
                // fields to be controlled transferred to global variable
                fields = that.form.querySelectorAll( '[data-hsnvalidate][type=checkbox][name='+ this.name +']' );
                // init metodunu başlat
                return that.init.call( that, e );
            });
        }
        // Reset Butonu ile hata mesajlarını temizleme
        $( this.form ).find( 'input[type=reset]' ).on( 'click', function(){
            // kontrol edilmiş alanlarda hata mesajı varsa temizemek için reset metodunu çalıştırdık
            return that.reset.call( that );
        });
        // Manuel olarak hata mesajlarını kapatma fonksiyonu
        $( this.form ).on( 'click', '.'+this.options.errorCloseClass, function(){
            var _errProp = this.parentNode;
            // Hata almamak için tıklanılan elementin parentını kontrol ediyoruz
            // Parent ı seçme başarılı ise hata penceresini kapatıyoruz
            if( _errProp ){ that.window.close.call( that, _errProp ); }
            return false;
        });
    };
    /**
    * Init Method
    * Form kontrolünün başlama metodu
    * 
    * @params {Object} e : event object
    * @return {Function} or {Boolen}
    */
    HsnValidate.prototype.init = function( e ){
        var that = this; // scoped this
        // Reset errors props from all elements 
        //console.time('hsn');
        this.reset.call( this, fields );
        // Start control each elements
        for ( var i = fields.length - 1; i >= 0; i-- ) {
            /**
            * Declaring variables
            * 
            * @params {object} _el : current field
            * @params {string} _errors : current field's errors
            * @params {array} _val : current field's value
            * @params {array} _methods : current field's control methods 
            */
            var _el, _errors, _val = [], _methods = []; 
            _el = fields[i];
            _errors = '';
            _val = $( _el ).val();
            // Kontrol metodlarını alalım
            _methods = _el.getAttribute( 'data-hsnvalidate' ).split( ',' );
            // Metotları kontrole başlayalım
            // that.check : Object Fields Control Method
            for ( var j = _methods.length - 1; j >= 0; j-- ) {
                // Required Control
                if( _methods[j] === 'required' ){
                    var _elType = _el.getAttribute('type');
                    if( _elType === 'checkbox' && !that.check.checkbox.checked( _el ) ){ _errors += messages.checkbox+'<br />'; }
                    else if( _el.tagName ==='SELECT' && !that.check.selectbox.selected( _val ) ){ _errors += messages.selectbox+'<br />'; }
                    if( ( _elType ==='text' || _elType ==='password' || _el.tagName ==='TEXTAREA' ) && !that.check.space.call( that, _val ) ){ _errors += messages.empty+'<br />'; }  
                }
                // Number Control
                if( _methods[j] === 'number' && !that.check.number( _val ) ){
                    _errors += messages.number+'<br />';
                }
                // Email Control
                if( _methods[j] === 'email' && !that.check.mail( _val ) ){
                    _errors += messages.email+'<br />';
                }
                // Credit Cart Control
                if( _methods[j] === 'creditCard' && _val !=='' && !that.check.creditCard( _val ) ){
                    _errors += messages.creditCard+'<br />';
                }
                // Rules Control (minChecked, maxChecked, minSelected etc.)
                if( reg.test( _methods[j] ) ){
                    // reulesleri alalım
                    // And Control rules
                    var rules = _methods[j].split( /\[|,|\]/ );
                    if( rules[0] === 'maxLength' && !that.check.maxLength( _val, rules[1] ) ){
                        _errors += messages.maxLength.replace( '{count}', rules[1] )+'<br />';
                    }else if( rules[0] === 'minLength' && !that.check.minLength( _val, rules[1] ) ){
                        _errors += messages.minLength.replace( '{count}', rules[1] )+'<br />';
                    }else if( rules[0] === 'maxChecked' && !that.check.checkbox.maxChecked.call( that, _el, rules[1] ) ){
                        // Redirect to the first checkbox
                        _el = that.form.querySelectorAll( 'input[type=checkbox][data-hsnvalidate][name='+ _el.name +']' )[0];
                        _errors += messages.maxChecked.replace( '{count}', rules[1] )+'<br />';
                    }else if( rules[0] === 'minChecked' && !that.check.checkbox.minChecked.call( that, _el, rules[1] ) ){<commit_msg>Documentation & Organize<commit_after>/*!
 * hsnValidate - jQuery Eklentisi
 * version: 1.0 (30 Mart 2013, Cumartesi)
 * @jQuery v1.7 ve üstü ile çalışmaktadır.
 * @Browser Support ie8 and above, and all modern browsers
 *
 * Örneklere http://... adresinden  ulaşabilirsiniz.
 * Proje Adresi : https://github.com/hsnayd/hsnValidate 
 * Lisans: MIT ve GPL
 *  * http://www.opensource.org/licenses/mit-license.php
 *  * http://www.gnu.org/licenses/gpl.txt
 *
 * Copyright 2012 <NAME> - http://www.hasanaydogdu.com
 *
 */
( function ( $ ) {
    "use strict";
    /**
    *  Declare variables
    */
    var HsnValidate = {}, // Plugin Class
        fields = {}, // Current fields/fieldss
        // RegExp for input validate rules
        reg = new RegExp( /(minChecked|maxChecked|minSelected|maxSelected|minLength|maxLength|equal|customReg)\[[(\w)-_]{1,10}\]/i ),
        // RegExp for mail kontrol method
        regMail = new RegExp( /^[a-z]{1}[\d\w\.-]+@[\d\w-]{3,}\.[\w]{2,3}(\.\w{2})?$/ ),
        //RegExp for input number control method
        regNumber = new RegExp( /^[\+][0-9]+?$|^[0-9]+?$/ );
    /**
    *  Form kontrol hata mesajları 
    */
    var messages = {
        empty   : 'This field is required. Please be sure to check.',
        email   : 'Your E-mail address appears to be invalid. Please be sure to check.',
        number    : 'You can only enter numbers in this field.',
        maxLength : 'Maximum {count} characters allowed!',
        minLength : 'Minimum {count} characters allowed! ',
        checkbox  : 'This checkbox is required. Please be sure to check.',
        maxChecked  : 'Maximum {count} options allowed. Please be sure to check.',
        minChecked  : 'Please select minimum {count} options.',
        selectbox : 'Please select an option.',
        maxSelected : 'Maximum {count} selection allowed. Please be sure to check.',
        minSelected : 'Minimum {count} selection allowed. Please be sure to check.',
        notEqual  : 'Fields do not match. Please be sure to check.',
        creditCard  : 'Invalid credit card number. Please be sure to check.'
    };
    /**
    *  Eklenti default ayarları
    */
    var defaults = {
        errorClass    : 'formHata', // Hata mesajı penceresine eklenecek olan class
        errorCloseClass : 'formHataKapa', // Hata mesajı penceresini kapatan HTML elementine eklenecek class
        ajax : { // Ajax işlemleri
          call    : false, // Ajax işlemi yapmak isyorsanız true olarak ayarlamalısınız.
          type    : 'GET', // Ajax post type
          url     : null, // Ajax url. URL bilgisini burada eklemek yerine FORM action özniteliğinde de belirtebilirsiniz.
          dataType  : 'html', // Ajax dataType
          beforeSend  : $.noop, // Ajax başlamadan önce çalıştırılıcak fonksiyon
          success   : $.noop, // Ajax işlemi başarılı ise çalıştırılacak fonksiyon
          fail    : $.noop, // Ajax işlemi başarısız ise çalıştırılacak fonksiyon
          complete  : $.noop // Ajax işlemi tamamlandığında (başarılı yada başarısız) çalıştırılacak fonksiyon
        },
        realTime   : true, // Eğer true seçilirse real-time form kontrolü aktif edilir
        onCompleteFunc  : $.noop, // Form kontrolü tamamlandıktan sonra çalıştırılacak fonksiyon
        customReg   : {} // Costum Reg metodu değişkeni
    };
    /**
    * Plugin Class
    *
    * @param {object} form : Kontrol edilen <form> elementi
    * @param {object} options : Kullanıcının belirlediği ayarlar
    * @return {method} events 
    */
    HsnValidate = function( form, options ){
        /**
        *  Public  Properties
        *  @property handler : uses to handle submit event
        *  @property options : Register plugin options
        *  @property form : Register <form> element
        */
        this.handler = false;
        this.options = $.extend( true, {}, defaults, options );
        this.form = form ;
        // Events methodunu başlatalım
        return this.events.call( this );
    };
    /**
    * Events Method
    * Eklentinin çalışması yada hata pencerelerinin kapatılması işlemlerini tetikler
    * 
    * @return {method} init, {method} reset or {false}
    */
    HsnValidate.prototype.events = function(){
        var that = this; // scoped this
        // Handle submit event 
        $( this.form ).submit( function( e ){
            // kontrol edilecek alanlar global değişkene aktarıldı
            // fields to be controlled transferred to global variable
            fields = this.querySelectorAll( '[data-hsnvalidate]' );
            // init metodunu başlat
            return that.init.call( that, e );
        });
        // real-time option control
        if( this.options.realTime === true ){
            // handle change event for form elements (without checkbox)
            $( this.form ).find( '[data-hsnvalidate]' ).not( '[type=checkbox]' ).on( 'change', function( e ){
                // field to be controlled transferred to global variable
                fields = $( this );
                // init metodunu başlat
                return that.init.call( that, e );
            });
            // handle click event for checkboxes
            $( this.form ).find( '[data-hsnvalidate][type=checkbox]' ).on( 'click', function( e ){
                // fields to be controlled transferred to global variable
                fields = that.form.querySelectorAll( '[data-hsnvalidate][type=checkbox][name='+ this.name +']' );
                // init metodunu başlat
                return that.init.call( that, e );
            });
        }
        // Reset Butonu ile hata mesajlarını temizleme
        $( this.form ).find( '[type=reset]' ).on( 'click', function(){
            // kontrol edilmiş alanlarda hata mesajı varsa temizemek için reset metodunu çalıştırdık
            return that.reset.call( that );
        });
        // Manuel olarak hata mesajlarını kapatma fonksiyonu
        $( this.form ).on( 'click', '.'+this.options.errorCloseClass, function(){
            var _errProp = this.parentNode;
            // Hata almamak için tıklanılan elementin parentını kontrol ediyoruz
            // Parent ı seçme başarılı ise hata penceresini kapatıyoruz
            if( _errProp ){ that.window.close.call( that, _errProp ); }
            return false;
        });
    };
    /**
    * Init Method
    * Form kontrolünün başlama metodu
    * 
    * @params {Object} e : event object
    * @return {Function} or {Boolen}
    */
    HsnValidate.prototype.init = function( e ){
        var that = this; // scoped this
        // Reset errors props from all elements 
        //console.time('hsn');
        this.reset.call( this, fields );
        // Start control each elements
        for ( var i = fields.length - 1; i >= 0; i-- ) {
            /**
            * Declaring variables
            * 
            * @params {object} _el : current field
            * @params {string} _errors : current field's errors
            * @params {array} _val : current field's value
            * @params {array} _methods : current field's control methods 
            */
            var _el, _errors, _val = [], _methods = []; 
            _el = fields[i];
            _errors = '';
            _val = $( _el ).val();
            // Kontrol metodlarını alalım
            _methods = _el.getAttribute( 'data-hsnvalidate' ).split( ',' );
            // Metotları kontrole başlayalım
            // that.check : Object Fields Control Method
            for ( var j = _methods.length - 1; j >= 0; j-- ) {
                // Required Control
                if( _methods[j] === 'required' ){
                    var _elType = _el.getAttribute('type');
                    if( _elType === 'checkbox' && !that.check.checkbox.checked( _el ) ){ _errors += messages.checkbox+'<br />'; }
                    else if( _el.tagName ==='SELECT' && !that.check.selectbox.selected( _val ) ){ _errors += messages.selectbox+'<br />'; }
                    if( ( _elType ==='text' || _elType ==='password' || _el.tagName ==='TEXTAREA' ) && !that.check.space.call( that, _val ) ){ _errors += messages.empty+'<br />'; }  
                }
                // Number Control
                if( _methods[j] === 'number' && !that.check.number( _val ) ){
                    _errors += messages.number+'<br />';
                }
                // Email Control
                if( _methods[j] === 'email' && !that.check.mail( _val ) ){
                    _errors += messages.email+'<br />';
                }
                // Credit Cart Control
                if( _methods[j] === 'creditCard' && _val !=='' && !that.check.creditCard( _val ) ){
                    _errors += messages.creditCard+'<br />';
                }
                // Rules Control (minChecked, maxChecked, minSelected etc.)
                if( reg.test( _methods[j] ) ){
                    // reulesleri alalım
                    // And Control rules
                    // Aşağıda kullanılan {count} öngörülen maxsimum yada minimum değerdir
                    // örneğin; method minLength ve rules 2 ise ( minLength[2] ) 
                    // Output error windows text : 'Please select minimum 2 options. '
                    var rules = _methods[j].split( /\[|,|\]/ );
                    if( rules[0] === 'maxLength' && !that.check.maxLength( _val, rules[1] ) ){
                        _errors += messages.maxLength.replace( '{count}', rules[1] )+'<br />';
                    }else if( rules[0] === 'minLength' && !that.check.minLength( _val, rules[1] ) ){
                        _errors += messages.minLength.replace( '{count}', rules[1] )+'<br />';
                    }else if( rules[0] === 'maxChecked' && !that.check.checkbox.maxChecked.call( that, _el, rules[1] ) ){
                        // Redirect to the first checkbox
                        _el = that.form.querySelectorAll( 'input[type=checkbox][data-hsnvalidate][name='+ _el.name +']' )[0];
                        _errors += messages.maxChecked.replace( '{count}', rules[1] )+'<br />';
                    }else if( rules[0] === 'minChecked' && !that.check.checkbox.minChecked.call( that, _el, rules[1] ) ){
{'fraction_non_alphanumeric': 0.13070332735604703, 'fraction_numerical': 0.004433154014743973, 'mean_word_length': 1.8983687021798759, 'pattern_counts': {'":': 0, '<': 27, '<?xml version=': 0, '>': 31, 'https://': 2, 'lorem ipsum': 0, 'www.': 6, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3460516', 'n_tokens_mistral': 6231, 'n_tokens_neox': 5936, 'n_words': 1626}