﻿jQuery.validator.addMethod("lettersonly", function(value, element) {
    var ret = false;
    if (!value) {
        ret = false;
    } else {
        value = value.replace(/\s*/g,'');
        ret = this.optional(element) || /\D/.test(value);
    };
    return ret;
}, "Letters only please"); 

var title_view = {
    elem: '.prod-thumb h2 a',
    generate: function(){
        $(title_view.elem).each(function(i){
            var title = $(this).attr('title');
            if (title.length > 14) {
                var short_title = title.substr(0,15);
                $(this).attr('short_title',short_title+'...');
            };
        });
        price_view.generate();
    },
    apply_short: function(){
        if (!$('.prod-thumb.view-list').size()) {
            $(title_view.elem).each(function(i){
                var short_title = $(this).attr('short_title');
                $(this).text(short_title);
            });
        }
    },
    apply_full: function(){
        if ($('.prod-thumb.view-list').size()) {
            $(title_view.elem).each(function(i){
                var title = $(this).attr('title');
                $(this).text(title);
            });
        }
    }
};

var price_view = {
    generate: function () {
        $('.price').not('.calculated').each(function () {
            var str = $(this).text().replace(/\s*/g, '');
            var data = "";
            if (str.replace(/[^.]/g, "").length) {
                data = str.split(".");
                if (data[1].length < 2) {
                    data[1] = data[1] + '0';
                };
                $(this).html(data[0] + '<span>' + data[1] + '</span>');
            } else if (str.replace(/[^,]/g, "").length) {
                data = str.split(",");
                if (data[1].length < 2) {
                    data[1] = data[1] + '0';
                };
                $(this).html(data[0] + '<span>' + data[1] + '</span>');
            } else {
                $(this).html(str + '<span>00</span>');
            };
            $(this).addClass('calculated');
        });
    }
};

var product_view = {
    current: function() {
        if ($('.select-view').size()) {
            var index = $.cookie('prod_view');
            if (index) {
                $('.select-view a').removeClass('current');
                $('.select-view .'+index).addClass('current');
                
                $('.prod-thumb').removeClass('view-list');
                $('.prod-thumb').removeClass('view-block');
                $('.prod-thumb').addClass(index);
                if (index == "view-block") title_view.apply_short();
                if (index == "view-list") title_view.apply_full();
            };
        };
    },
    change: function (elem) {
        index = $(elem).attr('href');
        
        $('.prod-thumb').removeClass('view-list');
        $('.prod-thumb').removeClass('view-block');
        $('.prod-thumb').addClass(index);
        $.cookie('prod_view',index);
        $('.select-view a').removeClass('current');
        $(elem).addClass('current');
        if (index == "view-block") title_view.apply_short();
        if (index == "view-list") title_view.apply_full();
        page_height();
    }
};


var product_images = {
    init: function(){
        $('.cloud-zoom, .cloud-zoom-gallery').CloudZoom();
    }  
};

var loginform = {
    load: function(){
        iModal.load(global.url.LoginForm, false, this.valid);
    },
    valid: function() {
        $('.ExtUserForm').validate({
            rules: {
                Username: {
                    required: true
                    //email: true
                },
                Password: {
                    required: true
                }
            },
            messages: {
                Username: "Please enter your e-mail",
                Password: "Please enter your password"
            },
            submitHandler: function(form){
                var data = $(form).serialize();
                loginform.checking(data);
                $('.ExtUserForm input').attr('disabled','disabled');
                return false;
            }
        });
    },
    checking: function(data) {
        var result = false;
        $.ajax({
            url: global.url.CurrentPage,
            data: data,
            beforeSend: loginform.beforeSend(),
            timeout: 180000,
            type: 'post',
            error: loginform.afterSend(),
            success: function(data){
                loginform.afterSend();
                result = $(data).find('#logoutlink').size();
                $('.ExtUserForm input').removeAttr('disabled');
                if (result) {
                    if ($('#ordersubmit').hasClass('step2')) {
                        $('#GotoStep1Form').attr('action',global.url.BasketPage).submit();
                    } else {
                        window.location = global.url.CurrentPage;
                    };
                } else {
                    $('.login-form-desc').hide();
                    $('.login-form-desc.error').show();
                };
            }
        });
    },
    forgotpassword_load: function() {
        iModal.load(global.url.ForgotPasswordForm, false, this.forgotpassword_valid);
    },
    forgotpassword_valid: function() {
        $('.ExtUserForm').validate({
            rules: {
                Username: {
                    required: true
                    //email: true
                }
            },
            messages: {
                Username: "Please enter your e-mail"
            },
            submitHandler: function(form){
                form.submit();
            }
        });
    },
    beforeSend: function() {
        $('.login-form input').attr('disabled','disabled');
        $('.login-form form').addClass('loading');
    },
    afterSend:  function() {
        $('.login-form input').removeAttr('disabled');
        $('.login-form form').removeClass('loading');
    }
};

var create_user = {
    load: function(){
        iModal.load(global.url.CreateUserForm, false, create_user.valid);
    },
    valid: function() {
        $('.usercreate-form form').validate({
            rules: {
                'CustomField.AccessUser_AccessUser_cpr': "required",
                'UserManagement_Form_Name': "lettersonly",
                'UserManagement_Form_Address': "required",
                'UserManagement_Form_Zip': {
                    required: true,
                    minlength: 5,
                    maxlength: 5,
                    digits: true
                },
                'UserManagement_Form_City': "required",
                'UserManagement_Form_Email': {
                    required: true,
                    email: true,
                    remote: {
                        url: "/InstantSearch/Handler.ashx",
                        data: {
                            email_exists: function() {
                                return $("#UserManagement_Form_Email").val();
                            }
                        }
                    }
                },
                'UserManagement_Form_PhonePrivate': "required",
                'UserManagement_Form_UserName': {
                    required: true,
                        remote: {
                        url: "/InstantSearch/Handler.ashx",
                        data: {
                            login_exists: function() {
                                return $("#UserManagement_Form_UserName").val();
                            }
                        }
                    }
                },
                'UserManagement_Form_NewPassword': "required",
                'UserManagement_Form_NewPasswordConfirm': {
                    required: true,
                    equalTo: '#UserManagement_Form_NewPassword'
                }
            },
            messages: {
                'CustomField.AccessUser_AccessUser_cpr': lang.form.EcomOrderCustomerCpr,
                'UserManagement_Form_Name': lang.form.EcomOrderCustomerName,
                'UserManagement_Form_Address': lang.form.EcomOrderCustomerAddress,
                'UserManagement_Form_Zip': lang.form.EcomOrderCustomerZip,
                'UserManagement_Form_City': lang.form.EcomOrderCustomerCity,
                'UserManagement_Form_Email': lang.form.EcomOrderCustomerEmail,
                'UserManagement_Form_UserName': lang.form.EcomOrderCustomerUserName,
                'UserManagement_Form_NewPassword': lang.form.EcomOrderCustomerNewPassword,
                'UserManagement_Form_NewPasswordConfirm': lang.form.EcomOrderCustomerNewPasswordConfirm,
                'UserManagement_Form_PhonePrivate': lang.form.EcomOrderDeliveryPhone
            },
            errorLabelContainer: $("#error-container2"),
            submitHandler: function(form){
                $(form).ajaxSubmit({
                    beforeSubmit: ajaxloader.start(),
                    timeout: 120000,
                    error: ajaxloader.stop(),
                    complete: function() {
                        create_user.success();
                    }
                });
                return false;
            }
        });
    },
    success: function() {
        iModal.load(global.url.CreateUserFormSuccess, false, false);
    }
};

var user_edit = {
    valid: function() {
        $('.useredit-form form').validate({
            rules: {
                'UserManagement_Form_Name': "lettersonly",
                'UserManagement_Form_Address': "required",
                'UserManagement_Form_Zip': {
                    required: true,
                    minlength: 5,
                    maxlength: 5,
                    digits: true
                },
                'UserManagement_Form_City': "required",
                'UserManagement_Form_Email': {
                    required: true,
                    email: true
                },
                'UserManagement_Form_PhonePrivate': "required",
                'UserManagement_Form_NewPassword': {
                    equalTo: '#UserManagement_Form_NewPasswordConfirm'
                }
            },
            messages: {
                'UserManagement_Form_Name': lang.form.EcomOrderCustomerName,
                'UserManagement_Form_Address': lang.form.EcomOrderCustomerAddress,
                'UserManagement_Form_Zip': lang.form.EcomOrderCustomerZip,
                'UserManagement_Form_City': lang.form.EcomOrderCustomerCity,
                'UserManagement_Form_Email': lang.form.EcomOrderCustomerEmail,
                'UserManagement_Form_PhonePrivate': lang.form.EcomOrderCustomerPhone,
                'UserManagement_Form_Username': lang.form.EcomOrderCustomerUserName,
                'UserManagement_Form_OldPassword': lang.form.EcomOrderCustomerOldPassword,
                'UserManagement_Form_NewPassword': lang.form.EcomOrderCustomerNewPassword,
                'UserManagement_Form_NewPasswordConfirm': lang.form.EcomOrderCustomerNewPasswordConfirm
            },
            errorLabelContainer: $("#error-container3"),
            errorPlacement: function(error, element){
                element.addClass("error");
            }
        });
        
        function UserManagement_Form_Username(){
            var elem = $('#UserManagement_Form_Username');
            var name = 'UserManagement_Form_Username';
            var val_elem = $(elem).val();
            if (val_elem) {
                if (!val_elem.length) {
                    $(elem).removeAttr('name');
                    $("#UserManagement_Form_Username").rules("remove");
                } else {
                    $(elem).attr('name',name);
                    $("#UserManagement_Form_Username").rules("add", {
                        remote: {
                            url: "/InstantSearch/Handler.ashx",
                            data: {
                                login_exists: function() {
                                     return $("#UserManagement_Form_Username").val();
                                }
                            }
                        }
                    });
                };
            }

        }
        
        function UserManagement_Form_NewPassword(){
            var elem = $('#UserManagement_Form_NewPassword');
            var val_elem = $(elem).val();
            if (val_elem) {
                if (!val_elem.length) {
                    $('#UserManagement_Form_OldPassword').rules("remove");
                } else {
                    $('#UserManagement_Form_OldPassword').rules("add", {
                       required: true
                    });
                };
            }
        }
        
        function UserManagement_Form_OldPassword() {
            var elem = $('#UserManagement_Form_OldPassword');
            var val_elem = $(elem).val();
            if (val_elem) {
                if (!val_elem.length) {
                    $('#UserManagement_Form_OldPassword').rules("remove");
                    $('#UserManagement_Form_NewPassword').rules("remove");
                } else {
                    $('#UserManagement_Form_NewPassword').rules("add", {
                       required: true,
                       equalTo: '#UserManagement_Form_NewPasswordConfirm'
                    });
                    $('#UserManagement_Form_OldPassword').rules("add", {
                        required: true,
                        equalTo: '#UserManagement_Form_OldPassword_data'
                    });
                };
            }
            
        }

        UserManagement_Form_Username();
        $('#UserManagement_Form_Username').keyup(function(){
            UserManagement_Form_Username();
        });
        
        UserManagement_Form_NewPassword();
        $('#UserManagement_Form_NewPassword').keyup(function(){
            UserManagement_Form_NewPassword();
        });
        
        UserManagement_Form_OldPassword();
        $('#UserManagement_Form_OldPassword').keyup(function(){
            UserManagement_Form_OldPassword();
        });
    }
};

var blockquote = function() {
    var elem = $('blockquote');
    $(elem).prepend('<span class="quote1"></span>');
    $(elem).append('<span class="quote2"></span>');
    
};

var page_height = function () {
    var common_height = $('.common').height();
    if($('#filter').length) {
        $('.sidebar').css('min-height',$('.important-ajaxcontent-wrap').height());
    } else {
        if($('.main.profile').length) {
            common_height = common_height-20;  
        };
        var sidebar_height = $('.sidebar').height();
        if (common_height>=sidebar_height) {
            $('.sidebar').css('min-height',common_height);
        } else {
            //$('.common').css('min-height',sidebar_height);
        };   
    };

};

var OrderStatusIcons = function() {
    var container = $('.order-status');
    var current_status = $(container).attr('title');
    $(container).find('.order-status-item').each(function(i){
        var title = $(this).attr('title');
        if (title==current_status) {
            $(this).find('.icon').addClass('true');
            $(container).data('index',$(this).index());
        };
    });
    $(container).find('.order-status-item').each(function(){
        var current_index = $(this).parent().data('index');
        if (current_index > $(this).index()) {
            $(this).find('.icon').addClass('true');
        }
    });
};

var ProfileNav = function() {
    var current = $('#ProfileNav').attr('title');
    if (current) {
        $('.profile-nav input').attr('checked',false);
        $(current).attr('checked',true);
    }
    
};

var LookedProducts = {
    save: function() {
        var newdata = [];
        var ProductID = $("#ProductID").val();
        if (ProductID) {
            var data = $.cookie('LookedProducts');
            if (data) {
                if (data.indexOf(ProductID) == -1) {
                    data = data.split(',');
                    if (data.length > 4) {
                        delete data[0];
                        data.forEach(function(element, index) {
                            if (element) {
                                newdata.push(element);
                            };
                        });
                        data = newdata;
                    };
                    data.push(ProductID);
                    data = data.join(',');
                }
            } else {
                data = ProductID;
            };
            $.cookie('LookedProducts', data , {path: '/'});
        };
    },
    callback: function() {
        page_height();
        title_view.generate();
        title_view.apply_short();
        $('.looked-products .prod-thumb:first').addClass('counter1');
    }
};

var phone_search = {
    init: function(){
        $('#phone-seach-but').live('click',function(){
            var data = {};
            data.telephone = $('#phone_number').val();
            if (data.telephone) {
                $.ajax({
                    data: data,
                    dataType: 'json',
                    timeout: 120000,
                    url: "/InstantSearch/Handler.ashx",
                    beforeSend: function (xhr) { ajaxloader.start(xhr); },
                    error: function (xhr, ajaxOptions, thrownError) {
                        alert(lang.form.SearchTel);
                        ajaxloader.stop();
                    },
                    success: function (result) {
                        ajaxloader.stop();
                        if (result.firstname) {
                            phone_search.success(result); 
                        } else {
                            alert(lang.form.SearchTel);
                        }
                    }
                });
            };
            return false;
        });
    },
    success: function(result){
        if (result.address) { $('#EcomOrderCustomerAddress').val(result.address)};
        if (result.city) { $('#EcomOrderCustomerCity').val(result.city)};
        if (result.firstname) { $('#EcomOrderCustomerName').val(result.firstname+' '+result.lastname)};
        if (result.mobile) { $('#EcomOrderCustomerCell').val(result.mobile)};
        if (result.telephone) { $('#EcomOrderCustomerPhone').val(result.telephone)};
        if (result.zip) { $('#EcomOrderCustomerZip').val(result.zip)};
    }
}


$(document).ready(function() {
    ajaxloader.init();
    blockquote();
    page_height();
    OrderStatusIcons();
    ProfileNav();
    LookedProducts.save();
    user_edit.valid();
    
    phone_search.init();
    
    $('.sidebar-bottom .excerpt').eq(0).addClass('first');
    
    
    $('.select-view a').live('click',function(){
        product_view.change($(this));
        return false;
    });
    
    product_view.current();
    title_view.generate();
    if ($('.prod-thumb.view-block').size()>0) title_view.apply_short();
    
    product_images.init();
 
    $('.ajax-open-login-form, .ajax-open-login-form-action').live('click',function(){
        loginform.load();
        return false;
    });
    
    $('.forgot-pass').live('click',function(){
        loginform.forgotpassword_load();
        return false;
    });
    
    $('.join').live('click',function(){
        create_user.load();
        return false;
    });
    
    $(document).keypress(function(eventObject){
        var keycode = (eventObject.keyCode ? eventObject.keyCode : eventObject.which);
        if (keycode==27){
            var cancelurl = $('body').data('cancelurl');
            if (cancelurl) {
                $.ajax({
                    url: $('body').data('cancelurl'),
                    success: function() {
                        window.location = $('body').data('cancelurl');
                        //$('#GotoStep1Form').attr('action',global.url.BasketPage).submit();
                        
                    }                
                });
            } else {
                iModal.destroy();
                search_container.close();
                search_container.clear();
                $('#payment-iframe,#payment-iframe-close ').remove();
            };
        }
    });
    
    $('.modal-close, #iModal-background').live('click',function(e){
        e.preventDefault();
            var cancelurl = $('body').data('cancelurl');
            if (cancelurl) {
                $.ajax({
                    url: cancelurl,
                    success: function() {
                        window.location = $('body').data('cancelurl');
                        //$('#GotoStep1Form').attr('action',global.url.BasketPage).submit();
                    }                
                });
            } else {
                iModal.destroy();
                $('#payment-iframe-close').remove();
            };
        return false;
    });
       
    $('#payment-iframe-close').live('click',function(e){
        e.preventDefault();
        var url = $('body').data('cancelurl');
        if(url) {
            $.ajax({
                url: url,
                success: function() {
                    window.location = url;
                    //$('#GotoStep1Form').attr('action',global.url.BasketPage).submit();
                }                
            });
        } else {
            window.location = '/';
        };
        return false;
    });
    
    
});



