$(document).ready(function(){

    $("#slider").easySlider({            
        prevId:         'goLeft',
        prevText:       '',
        nextId:         'goRight',    
        nextText:       '',
        pause:          5000,
        auto:           false,       
        continuous:     true
    });    
       
     $('#sliderTop').cycle({           
        timeout: 5000,
        speed: 500,     
        fx: 'fade',
        pager: '#sliderTopNavigation',
        pause: 0,
        cleartypeNoBg: true,  
        pauseOnPagerHover: 0,
        cleartype: 0,
        cleartypeNoBg: true,
        
        pagerAnchorBuilder: function(idx, slide) { 
            return '<a href="#"></a>'; 
        }
     });                                    
    
    var active = false;  
    
    $("#navigation li").hover(function(){
        var liClass = $(this).attr('class');
        if(liClass == 'active'){
            active = true;
        }else{
            $(this).addClass('active'); 
            active = false;   
        }                       
    },
    function(){          
        if(!active){        
            $(this).removeClass('active');                
            active = false;
        }
    });   
    
    $("#left ul li a").hover(function(){
        var liClass = $(this).attr('class');
        if(liClass == 'active'){
            active = true;
        }else{
            $(this).addClass('active'); 
            active = false;   
        }                       
    },
    function(){          
        if(!active){        
            $(this).removeClass('active');                
            active = false;
        }
    });   
    
    function refreshPrice(type, value) {
        var ram = $("#ram").slider("value"),
            hdd = $("#hdd").slider("value"),
            cpu = $("#cpu").slider("value");

        switch(type){
            case 'ram':
                var ram = value;
            break;
            case 'hdd':
                var hdd = value;
            break;
            case 'cpu':
                var cpu = value;
            break;
        }

        var price = 180;
        cpu -= 1;
        if(cpu < 0){cpu = 0;}

        ram -= 1000;
        if(ram < 0){ram = 0;}
        
        hdd -= 10;
        if(hdd < 0){hdd = 0;}

        price += ram * 0.05;
        price += hdd * 4;
        price += cpu * 100; // 20Kč / 100Mhz
        price = Math.round(price);
        
        $(".price-value").html(price);
    }


    var ramSlider = $("#ram").slider({
        value: 1500,
        min: 1000,
        max: 6000,
        step: 100,
        slide: function(event, ui) {
            $('#ram').children('.ui-slider-handle').html(ui.value+' <span class="small">MB</span>');
            $('#ram-input').val(ui.value);
            refreshPrice('ram',ui.value);
            
            setActive('#ownVPS');
        }
    });

    var hddSlider = $("#hdd").slider({
        value: 10,
        min: 10,
        max: 200,
        step: 5,
        slide: function(event, ui) {
            $('#hdd').children('.ui-slider-handle').html(ui.value+' <span class="small">GB</span>');
            $('#hdd-input').val(ui.value);
            refreshPrice('hdd',ui.value);
            
            setActive('#ownVPS');
        }
    });

    var cpuSlider = $("#cpu").slider({
        value: 1,
        min: 1,
        max: 8,
        step: 1,
        slide: function(event, ui) {
            $('#cpu').children('.ui-slider-handle').html(ui.value+' <span class="small">Core</span>');
            $('#cpu-input').val(ui.value);
            refreshPrice('cpu',ui.value);
            
            setActive('#ownVPS');
        }
    });
    
    function refreshSlider(){
        $('#ram').children('.ui-slider-handle').html($("#ram").slider("value")+' <span class="small">MB</span>');
        $('#ram-input').val($("#ram").slider("value"));
        $('#hdd').children('.ui-slider-handle').html($("#hdd").slider("value")+' <span class="small">GB</span>');
        $('#hdd-input').val($("#hdd").slider("value"));
        $('#cpu').children('.ui-slider-handle').html($("#cpu").slider("value")+' <span class="small">Core</span>');
        $('#cpu-input').val($("#cpu").slider("value"));
    }
    
    function setActive(id){                                                
        $(id).parents('#boxRight').find('.active').removeClass('active');
        $(id).parents('#right').find('.active').removeClass('active');
        $(id).addClass('active');    
    }
    
    refreshSlider();
    refreshPrice();   

    $("#miniVPS").live('click', function(event){
        event.preventDefault(); 
        
        setActive(this);       
           
        ramSlider.slider("value", 1500);
        hddSlider.slider("value", 10);
        cpuSlider.slider("value", 1);
        refreshSlider();
        refreshPrice();           
    });

    $("#maxiVPS").live('click', function(event){
        event.preventDefault();                     
        
        setActive(this);
        
        ramSlider.slider("value", 3000);
        hddSlider.slider("value", 30);
        cpuSlider.slider("value", 1);
        refreshSlider();
        refreshPrice();           
    });                  
                       
    $('a').bind('focus',function(){
        if(this.blur)this.blur();
    });
    
    $('#domainName').live('keyup', function(){                
        clearTimeout($.data(this, 'timer'));
        var wait = setTimeout(DomainCheck, 1000);
        $(this).data('timer', wait);
    });
    
    function DomainCheck(){
        var name = $('#domainName').val();
        name = name.split('.');
        name = name[0];
        var inputName = name;                 
        var outputName = "";            
        var hasDouble = name.match(/--/i);
        if(hasDouble !== null){
            name = null;
        }else{
            name = name.match(/^[a-z0-9][a-z0-9-]*[a-z0-9]$/i);    
        }          
        
        outputName = name;
        
        if(inputName != outputName){         
            $('#domainName').removeClass().addClass('inputError');
        }else{
            $('#domainName').removeClass();           
        }
                           
        $('#domainName').parents('#boxRight').find('.dom').each(function(){         
            var dom = $(this).attr('id');
            domainName = outputName+'.'+dom;
            
            if(outputName === null){                  
                $(this).html('.'+dom);
                $(this).next().html('');    
            }else{                
                $(this).html(domainName);
                $(this).next().html('zjišťuji');
                $.ajax({
                    type: 'get',
                    async: true,
                    url: '/domainCheck/',
                    data: 'domainName='+domainName,
                    dataType: 'html',
                    beforeSend: function() {},
                    success: function(payload) {
                        var pData = new String(payload);
                        var pDataArr = pData.split(":");
                        if(pDataArr[2] == 'free'){
                            $('#domainTable').find('#'+pDataArr[1]).next().html('<a href="/objednavka/domena/?domainName='+pDataArr[0]+'">Volná</a>');
                        }else{
                            $('#domainTable').find('#'+pDataArr[1]).next().html('Obsazená');
                        }
                        
                    },
                    error: function(){}
                });
            }                              
        });                                                              
    }
                         
    $("#boxRight .tabs").hide(); //Hide all content
    $("#boxLeft li:first a").addClass("active").show(); //Activate first tab
    $("#boxRight .tabs:first").show(); //Show first tab content
                     
    $("#boxLeft li").click(function() {
        $("#boxLeft li a").removeClass("active"); //Remove any "active" class  
        $(this).find('a').addClass("active"); //Add "active" class to selected tab
        $("#boxRight .tabs").hide(); //Hide all tab content

        var activeTab = $(this).find("a").attr("href"); //Find the href attribute value to identify the active tab + content
        $(activeTab).show(); //Fade in the active ID content
        return false;
    });
    
    $("a.grouped_elements").fancybox({
        'cyclic'    :    true,

    });
    
    // TABS -----------------------------------------------------
    var $tabs = $("#orderTabs").tabs();
    
    $(".uitabsform").submit(function(event) {
        event.preventDefault();
        $("#orderConfirm").attr('disabled', 'disabled');
        $("#orderConfirm").attr('value', 'Odesílám...');
        var $tabs = $("#orderTabs").tabs();
        var totalSize = $(".ui-tabs-panel").size() - 1;
        $tabs.tabs('select', totalSize);
        $(".uitabsform-summary").html('');
        $(this).ajaxSubmit($.mytabs.success);
        setTimeout(ConfirmEnable, 15000);
        return false;
    });
    
    $(".testorder").submit(function(event) {
        event.preventDefault();
        $("#orderConfirm").attr('disabled', 'disabled');
        $(this).ajaxSubmit($.mytabs.success);
        return false;
    });
    
    function ConfirmEnable(){
        $("#orderConfirm").attr('disabled', '');
        $("#orderConfirm").attr('value', 'Odeslat');
    }
    
    
    $(".ui-tabs-panel").each(function(i){
      var totalSize = $(".ui-tabs-panel").size() - 1;
      $(this).append("<br><br><br>");
      if (i != 0) {
          prev = i - 1;
              $(this).append("<a href='#' class='prev-tab mover' rel='" + prev + "'>Zpět</a>");
      }
      
      if (i < totalSize) {
          next = i + 1;
              $(this).append("<a href='#' class='next-tab mover' rel='" + next + "'>Další</a>");
      }
    });

    $('.next-tab, .prev-tab').click(function() {
       id = parseInt($(this).attr("rel"));
       if(id === null){return false;}
       $tabs.tabs('select', id);
       return false;
   });
    // TABS END -------------------------------------------------

    jQuery.fn.extend({
        ajaxSubmit: function (callback) {
            var form;
            var sendValues = {};

            // submit button
            if (this.is(":submit")) {
                form = this.parents("form");
                sendValues[this.attr("name")] = this.val() || "";

            // form
            } else if (this.is("form")) {
                form = this;

            // invalid element, do nothing
            } else {
                return null;
            }

            // validation
            if (form.get(0).onsubmit && !form.get(0).onsubmit()) return null;

            // get values
            var values = form.serializeArray();

            for (var i = 0; i < values.length; i++) {
                var name = values[i].name;

                // multi
                if (name in sendValues) {
                    var val = sendValues[name];

                    if (!(val instanceof Array)) {
                        val = [val];
                    }

                    val.push(values[i].value);
                    sendValues[name] = val;
                } else {
                    sendValues[name] = values[i].value;
                }
            }

            // send ajax request
            var ajaxOptions = {
                url: form.attr("action"),
                data: sendValues,
                type: form.attr("method") || "get"
            };

            if (callback) {
                ajaxOptions.success = callback;
            }

            return jQuery.ajax(ajaxOptions);
        }
    });
    
    $('.flashMessage').live('click', function() {
          $(this).fadeOut(500);
    });
    
    
});


jQuery.extend({
    mytabs: {
        success: function (payload) {
            if (payload.redirect) {
                window.location.href = payload.redirect;
                return;
            }
            
            $(".uitabsform").each(function(index) {
                var $tabs = $("#orderTabs").tabs();
                var totalSize = $(".ui-tabs-panel").size() - 1;
                $tabs.tabs('select', totalSize);
                $(".uitabsform-summary").html(payload);
            });
        }
    }
});
