﻿; jQuery.fn.PageScrollTo = function () { var destination = $(this).offset().top; $("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination - 20 }, 500); };

$(document).ready(function () {
    $('.ListMenu > ul > li').each(function () {

        $(this).click(function () {

            $('#' + $(this).attr('rel')).PageScrollTo();

        });


    });

    $('.MenuBox2 ul li ul').hide();
    $('.MenuBox2 ul li.main').hover(function () {

        var $this = $(this);
        $('span', $this).show();
        $('a:first-child', $this).css('padding', '17px 0px 14px 0px').css('background-position', '0 -35px');
        var $submenu = $('ul', $this)
        var left_pos = $this.offset().left - ($submenu.width() - $this.width()) / 2;
        var top_pos = $this.offset().top + $this.height();
        $submenu.css('top', top_pos).css('left', left_pos).slideDown();

    }, function () {
        var $this = $(this);
        var $submenu = $('ul', $this)
        $submenu.slideUp(250);
        $('span', $this).hide();
        $('a:first-child', $this).css('padding', '10px 0px 12px 0px').css('background-position', '0 0')
    });

    //$.jGrowl('<div class="PopUpContent">خدمات ADSL در محدوده شهرک های آزادگان ، فجر و نصر راه اندازی گردید . جهت ثبت نام به دفتر شرکت رهانت مراجعه فرمایید .بعلت محدودیت پورت اولویت با تاریخ ثبت نام خواهد بود.</div>', { life: 50000, header: 'خدمتی دیگر از رهانت' });
});


/* Validator */
function GetRegex(type) {
    if (type == 'url') { return /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ }
    if (type == 'email') { return /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/ }
    if (type == 'username') { return /^([a-zA-Z])+([a-zA-Z0-9_\.])+([a-zA-Z0-9])$/ }
    if (type == 'password') { return /./ }
    if (type == 'number') { return /^\d+$/ }
    if (type == 'date') { return /^(\d{4})\/(\d{2})\/(\d{2})$/ }
    return /./
}
function RequiredValidator(id, len, type) { var value = $(id).val(); var retvalue = true; if (value.length < len) { RequiredValidatorMsg(id, 1); return false; }; return RegularValidator(id, type); }
function RegularValidator(id, type) {
    var value = $(id).val();
    var regexStr = new RegExp(GetRegex(type));
    if (value != null && value != '') {
        if (!value.match(regexStr)) {
            RequiredValidatorMsg(id, 1);
            return false;
        }
        RequiredValidatorMsg(id, 0);
        return true;
    }
    RequiredValidatorMsg(id, 2);
    return true;
}

function RegularValidatorByLen(id, type, len) {
    var value = $(id).val();
    if (value != null && value != '') {
        if (value.length >= len) {
            var regexStr = new RegExp(GetRegex(type));
            if (value != null && value != '') {
                if (!value.match(regexStr)) {
                    RequiredValidatorMsg(id, 1);
                    return false;
                }
                RequiredValidatorMsg(id, 0);
                return true;
            }
        }
        else {
            RequiredValidatorMsg(id, 1);
            return false;
        }
    }
    RequiredValidatorMsg(id, 2);
    return true;
}

function CompareValidator(id1, id2, req) {
    var forcereq = true;
    if (typeof (req) != 'undefined' && req == false) {
        forcereq = false
    }
    if (forcereq && ($(id1).val() == null || $(id1).val() == '')) {
        RequiredValidatorMsg(id1, 1);
        return false;
    }
    if (forcereq && ($(id2).val() == null || $(id2).val() == '')) {
        RequiredValidatorMsg(id2, 1);
        return false;
    }
    if ($(id1).val() == $(id2).val()) {
        RequiredValidatorMsg(id2, 0);
        return true;
    }
    else {
        RequiredValidatorMsg(id2, 1);
        return false;
    }
}

function CompareValidatorBlank(id1, id2) {
    if ($(id1).val() == null || $(id1).val() == '')
        RequiredValidatorMsg(id1, 2);
    if ($(id2).val() == null || $(id2).val() == '')
        RequiredValidatorMsg(id2, 2);
    if (($(id1).val() == null || $(id1).val() == '') && ($(id2).val() == null || $(id2).val() == ''))
        return true;
    if ($(id1).val() == $(id2).val()) {
        RequiredValidatorMsg(id2, 0);
        return true;
    }
    else {
        RequiredValidatorMsg(id2, 1);
        return false;
    }
}

function RequiredValidatorMsg(id, what) {
    if (what == 0) /* Accept value */
    {
        $(id).removeClass('ivalidator_error');
        //$(id).addClass('Validate_Accept');
    }
    if (what == 1) /* Send error */
    {
        //$(id).removeClass('Validate_Accept');
        $(id).addClass('ivalidator_error');
    }
    if (what == 2) /* Clear field */
    {
        $(id).removeClass('ivalidator_error');
        //$(id).removeClass('Validate_Accept');
    }
};


function iRequiredValidator(el, type, len, style) {
    //clean class
    $(el).removeClass(style);
    // Get Item Value
    var value = $(el).icmsforms();

    if (value.length < len) {
        $(el).addClass(style);
        return false;
    }
    else {
        var regexStr = new RegExp(GetRegex(type));
        if (!value.match(regexStr)) {
            $(el).addClass(style);
            return false;
        }
    }
    return true;
};

function iRegularValidator(el, type, style) {
    //clean class
    $(el).removeClass(style);
    // Get Item Value
    var value = $(el).icmsforms();
    if (value.length > 0) {
        var regexStr = new RegExp(GetRegex(type));
        if (!value.match(regexStr)) {
            $(el).addClass(style);
            return false;
        }
        return true;
    }
    return true;
};


function iCompareValidator(el1, el2, req, style) {
    //Compare Values
    var el1value = $(el1).icmsforms();
    var el2value = $(el2).icmsforms();
    if (req == 1) {
        if (el1value != el2value || el2value == '' || el1value == '') {
            $(el1).addClass(style);
            $(el2).addClass(style);
            return false
        }
        else {
            $(el1).removeClass(style);
            $(el2).removeClass(style);
        }
    }
    else {
        if (el1value != el2value) {
            $(el1).addClass(style);
            $(el2).addClass(style);
            return false
        }
        else {
            $(el1).removeClass(style);
            $(el2).removeClass(style);
        }
    }
    return true;
}


$.fn.icmsforms = function () {
    var $this = $(this);
    var $type = $this.attr("type");
    switch ($type) {
        case '': return '';
        case 'checkbox':
            var myArray = new Array();
            $this.each(function () {
                if ($(this).is(":checked")) myArray[myArray.length] = $(this).val();
            });
            return myArray.join(",");
            break;
        case 'radio':
            var myArray = '';
            $this.each(function () {
                if ($(this).is(":checked")) myArray = $(this).val();
            });
            return myArray;
            break;
        case 'select-one':
            if ($($this).find("option:selected").val() == null) { return ''; }
            else { return $($this).find("option:selected").val().toString(); }
            break;
        case 'select-multiple':
            var myArray = new Array();
            $(this).children("[selected]").each(function () {
                myArray[myArray.length] = $(this).val();
            });
            return myArray.join(",");
            break;
        case 'textarea':
            var myArray = $($this).val();
            return myArray;
            break;
        case 'text':
            var myArray = $($this).val();
            return myArray;
            break;
        case 'password':
            var myArray = $($this).val();
            return myArray;
            break;
        case 'hidden':
            var myArray = $($this).val();
            return myArray;
            break;
    }
};

//****************************************************************************************
jQuery.fn.iAjax = function (options) {
    var defaults = {
        objs: [],
        compare: [],
        regular: [],
        targeturl: '',
        extraquery: '',
        secure: false,
        style: 'ivalidator_error',
        poststart: function () { },
        postend: function (msg) { },
        posterror: function () { }
    };

    var opts = $.extend(defaults, options);
    var objects = defaults.objs;
    var reqcompare = defaults.compare;
    var reqregular = defaults.regular;
    var posturl = defaults.targeturl;
    var AjaxData = '';
    var isvalid = 0;
    for (var i = 0; i < reqcompare.length; i++) {
        if (!iCompareValidator(reqcompare[i][0], reqcompare[i][1], parseInt(reqcompare[i][2]), defaults.style)) { isvalid++ }
    }

    for (var i = 0; i < reqregular.length; i++) {
        if (!iRegularValidator(reqregular[i][0], reqregular[i][1], defaults.style)) { isvalid++ }
    }

    for (var i = 0; i < objects.length; i++) {
        // Validator Check
        if (parseInt(objects[i][2]) == 1) {
            if (!iRequiredValidator(objects[i][0], objects[i][3], parseInt(objects[i][4]), defaults.style)) { isvalid++ }
        };
        // Build Ajax Data
        if (isvalid == 0) {
            if (defaults.secure) {
                AjaxData = AjaxData + objects[i][1] + '=' + spliter($(objects[i][0]).icmsforms()) + '&';
            }
            else {
                AjaxData = AjaxData + objects[i][1] + '=' + escape($(objects[i][0]).icmsforms()) + '&';
            }
        }
    };
    AjaxData = AjaxData + defaults.extraquery;
    //alert(AjaxData)
    if (isvalid == 0) {
        $.ajax({
            type: "POST",
            url: defaults.posturl,
            cache: false,
            data: AjaxData,
            success: function (msg) {
                defaults.postend(msg);
            },
            error: function () {
                defaults.posterror();

            },
            beforeSend: function () {
                defaults.poststart();
            }
        });
    }
    return false;
};


function spliter(text) { var letbin = ''; for (i = 0; i < text.length; i++) { letbin = letbin + str2bin(text.substr(i, 1)); if (i + 1 != text.length) { letbin = letbin + '2' } }; return (letbin) }
function str2bin(txt) { String.prototype.toHex = function () { return this.charCodeAt(0).toString(2) }; return txt.toHex() }

function insertCommaTotalFrom(val) {
    var price = '';
    val = val.toString();
    var txt_field = val.length;

    var counter = 0;
    for (var i = txt_field - 1; i >= 0; i--) {
        price = val.charAt(i) + price;
        counter++;
        if (counter % 3 == 0 && i > 0) {
            price = ',' + price;
            counter = 0;
        }
    }
    return price;
}

