var siteActions = {};
siteActions.jq= jQuery.noConflict();

(function($) {
    siteActions.jq(document).ready(function() {

    var blockCategoryParams = {};

    var touch;

    var deviceAgent = navigator.userAgent.toLowerCase();
    var isSpecial = deviceAgent.match(/(iphone|ipod|ipad)/);
    


    var mt = $('meta[name=SKYPE_TOOLBAR]');
    mt = mt.length ? mt : $('<meta name="SKYPE_TOOLBAR" />').appendTo('head');
    mt.attr('content', 'SKYPE_TOOLBAR_PARSER_COMPATIBLE');

    
    //$('.tabsBlock').tabs();
    Cufon.replace('.special');
    //$('.listSelectorArrow').live('click', function(){showSList(false); });
    $('ul.listSelector').live('hover', function(){showSList($(this));}, function(){showSList($(this));});

    $('.listSelector li.visible').live('mouseenter mouseleave', function(event){hoverList($(this), event)});

    $('.contactsFormSidebarSubmit').live("hover",toggleClassName);
    $('.contactsFormOnSidebar, .contactsForm').live('submit', function(event){sendFormData(event, $(this))});
    $('.contactInfo').live('click', function(event){showSiteContacts(event, $(this) )});
    $('.portfolioBlockItemImg').hover(portfolioBlockHover, portfolioBlockHoverOut);


    $('.rightSiteSliderButtons span').live('click', function() {
        if( !$(this).hasClass('active') ){
            var selectBlock  = $(this).parent();
            var sliderObj  = selectBlock.parent().find('.sliderList');
            var photo = $(this).index()+1;
            sliderPhotoSelect(sliderObj, photo);
        }
    });
    $('.redirectThis').live('click', function(event) {redirectThis(event, $(this) )});

 
    defaultFunctions();


    function toggleClassName(){

        var className = $(this).attr("class").split(' ');
        $(this).toggleClass(className[0]+'On');
    }

    function defaultFunctions(){

        setTitleSliders();
        setTitleInfo();
        setContactsForm();
        setGaleries();


        if (/*@cc_on!@*/false) { // check for Internet Explorer
            document.onfocusin = onFocus;
            document.onfocusout = onBlur;
        } else {
            window.onfocus = onFocus;
            window.onblur = onBlur;
        }


    }

    function setGaleries(){

        var portfolioBlockCount = $('.portfolioBlockItemImg').size();

        if( portfolioBlockCount>0){

            $('.portfolioBlockItemImg').each(
                function(){
                    var linkMain = $(this).children('a:first');
                    if( linkMain.length!=0 && $.trim( linkMain.attr('class') ) ){
                        var gClass = linkMain.attr('class');
                      
                        $('.'+gClass).colorbox({rel:gClass});
                    }
                }
            );

        }

    }


    function portfolioBlockHover(){

        $(this).addClass('portfolioBlockItemImgHover');
    }

    function portfolioBlockHoverOut(){

        $(this).removeClass('portfolioBlockItemImgHover');
        
    }

    function redirectThis( event, obj){

        event.preventDefault();

        var link = obj.find('input[name="link"]');

        if( link.length != 0 && $.trim(link.val()) ){

            window.location  = link.val();
            $.die();
        }


    }


    function setTitleInfo(){

        if( isSpecial ){
            $('.titleInfoItem').toggle( function(){showFeature($(this))}, function(){hideFeature($(this));});
        }else{
            $('.titleInfoItem').hover( function(){showFeature($(this))}, function(){hideFeature($(this));});            
        }


    }



    function showSiteContacts(event, obj){

        event.preventDefault();
        var objLang = obj.find('input[type="hidden"]');
        var listItemObj  = obj.parent();
        var listObj  = listItemObj.parent();

        if( objLang.length && $.trim(objLang.val()) !=''  && !listItemObj.hasClass('active') ){

                hideSList(listObj);
                listObj.find('.active').removeClass('active');
                listItemObj.attr('class', 'active');

                var activeItem = $('.siteGroupContactsText').find('.activeItem');
                var selectedItem = $('.siteGroupContact'+objLang.val());
                
                if( selectedItem.length != '' ){

                    if( activeItem.length != ''){
                        activeItem.addClass('hiddenItem');
                        activeItem.removeClass('activeItem');
                    }
                    selectedItem.removeClass('hiddenItem');
                    selectedItem.addClass('activeItem');
                }



        }



    }

    function onBlur() {
        document.body.className = 'blurred';
    }

    function onFocus(){
        document.body.className = 'focused';
    }


    function hoverList(obj, event){

        
        if( event.type=='mouseleave' ){
            obj.removeClass('hover');
        }else{
            obj.addClass('hover');
        }

        
    }



    function setContactsForm(){

        if( $('.contactsForm').length!=0 ){

         

            $('.contactsForm').validate({

                invalidHandler:function(e, validator) {

                },
                showErrors: function(){
                    if (this.settings.highlight) {
                        for (var i = 0; this.errorList[i]; ++i) {
                            this.settings.highlight.call(this, this.errorList[i].element,
                                this.settings.errorClass, this.settings.validClass);
                        }
                    }
                    if (this.settings.unhighlight) {
                        for (var i = 0, elements = this.validElements(); elements[i]; ++i) {
                            this.settings.unhighlight.call(this, elements[i],
                                this.settings.errorClass, this.settings.validClass);
                        }
                    }
                },
                onkeyup: false,
                onfocusin: false,
                onfocusout: false,
                onclick: false,
                rules: {
                        name: {
                                required:true,
                                minlength:2
                        },
                        surname: {
                                required:true,
                                minlength:2
                        },
                        email: {
                                required: true,
                                email: true
                        },
                        phone: {
                                required: true

                        },
                        message: {
                                required: true

                        }

                }
            });
        }

    }


    function sendFormData(event, form){


        event.preventDefault();
        var formData = form.serialize();


         $.ajax({
            url:ajaxURI+'?'+new Date().getTime(),//prevent cache,
            type:"POST",
            async: false,
            data:formData,
            datatype:"json",
            success: function(response){
                var data = $.parseJSON(response);
                if(data.title && data.text){
                    

                    if( !data.no_reset ){
                        form[0].reset();
                    }

                    if( !data.hide_splash ){
                        showSplash(data.title, data.text);
                    }else{
                        form.find('textarea').val(data.text);
                    }

                }else{
                    if(data.link){
                       window.location=data.link;
                       $.die();
                    }
                }
            }
        });

    }



    function showFeature(obj){


        var middleBlock = obj.find('.titleInfoItemMiddle');
        var mainBlock = middleBlock.parent();
        var borderRightObj = mainBlock.find('.titleFeatureBlockBorderRight');
        var contentBlock = middleBlock.find('.titleInfoItemHiddenContent');

        var isImageSet = contentBlock.find('img:first-child');


        if( isImageSet.length!=0 ){

            if( isImageSet[0].complete!=true ){
                if( isImageSet.attr('src').indexOf('?')<0 ){
                    isImageSet.attr('src',isImageSet.attr('src')+'?'+new Date().getTime());
                }

                contentBlock.find('img:first-child').stop(true, true).load(
                    function(){
                        showFeatureBlock(middleBlock,mainBlock, contentBlock, borderRightObj);
                    }
            );

            }else{
                showFeatureBlock(middleBlock,mainBlock, contentBlock, borderRightObj);
            }
        }else{
            showFeatureBlock(middleBlock,mainBlock, contentBlock, borderRightObj);
        }

    }



    function showFeatureBlock( middleBlock,mainBlock, contentBlock, borderRightObj ){

        contentBlock.attr('style', '');
        var diffHeight = contentBlock.innerHeight() + parseInt(contentBlock.css('marginTop')) + parseInt(contentBlock.css('paddingTop')) + parseInt(contentBlock.css('marginBottom')) + parseInt(contentBlock.css('paddingBottom'));


        mainBlock.addClass('openedBlockInit');

        mainBlock.stop(1).animate({
            top:'-'+diffHeight+'px'
        }, 2100, 'easeOutElastic', function(){
            mainBlock.addClass('openedBlock');
            contentBlock.show(700, 'easeInOutBounce');
        }
        );

        middleBlock.stop(1).animate({
            height:'+='+diffHeight+'px'
        }, 2100,'easeOutElastic'
        );

        if( borderRightObj.length!=0 ){
            borderRightObj.stop(1).animate({
                height:'+='+diffHeight+'px'
            }, 1500
            );
        }

    }


    function hideFeature( obj ){

        var middleBlock = obj.find('.titleInfoItemMiddle');
        var mainBlock = middleBlock.parent();
        var borderRightObj = mainBlock.find('.titleFeatureBlockBorderRight');
        var contentBlock = middleBlock.find('.titleInfoItemHiddenContent');


        contentBlock.attr('style', '');
        var diffHeight = contentBlock.innerHeight() + parseInt(contentBlock.css('marginTop')) + parseInt(contentBlock.css('paddingTop')) + parseInt(contentBlock.css('marginBottom')) + parseInt(contentBlock.css('paddingBottom'));


        contentBlock.hide(700, 'easeInOutBounce');
        mainBlock.removeClass('openedBlockInit');
        mainBlock.stop(1).animate({
            top:0
        }, 2100, 'easeOutElastic', function(){
            
            mainBlock.removeClass('openedBlock');
        }
        );

        middleBlock.stop(1).animate({
            height:'176px'
        }, 2000, 'easeOutElastic', function(){
           middleBlock.attr('style','');
        }
        );



        if( borderRightObj.length!=0 ){
            borderRightObj.stop(1).animate({
                height:'-='+diffHeight+'px'
            }, 1500,function(){
                borderRightObj.attr('style','');
            }
            );

        }

        
    }


    function getUrlVars(url)
    {
        var vars = [], hash;
        var hashes = url?url.slice(url.indexOf('?') + 1).split('&'):window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
        for(var i = 0; i < hashes.length; i++)
        {
            hash = hashes[i].split('=');
            vars.push(hash[0]);
            vars[hash[0]] = hash[1];
        }
        return vars;
    }


    function setTitleSliders(){

        var titleSliders = $('.titleFrontSliderBigInner, .titleFrontSliderSmallInner');
        var effectsArr = new Array('sliceUpDownLeft', 'sliceUpLeft');
        var counter = 0;
        titleSliders.each(
            function(){



                //var total = $(this).find('img').length;
                //var rand = Math.floor(Math.random()*total);
                
                $(this).nivoSlider({
                    animSpeed: 1500,
                    pauseTime: 5000, // default: 3000. How long each slide will show
                    startSlide: 0, // default: 0. Set starting Slide (0 index)
                    directionNav: false, // default: true. Next & Prev navigation
                    controlNav: false,
                    directionNavHide: false, // default: true. Only show on hover
                    keyboardNav: false, // default: true. Use left & right arrows
                    effect:effectsArr[counter],
                    prevText: '',
                    nextText: '',
                    pauseOnHover: false,
                    beforeChange: function(){
                        
                        /*if( $.browser.mozilla ){
                            var currDate = new Date();
                            var currHour = currDate.getHours();
                            var currMin = currDate.getMinutes();
                            var currSec = currDate.getSeconds();
                            console.log( currHour+':' +currMin+':'+currSec);
                        }*/
                    }
                });
                counter++;
            }
        );

        var sliderList = $('.sliderList');
        if( sliderList.length != 0 && sliderList.children('li').size()>1 ){
            blockCategoryParams[sliderList.attr('class')+'_processed'] = false;
            sliderWork(sliderList);
        }



    }


    function sliderWork( sliderObj ){

        blockCategoryParams[sliderObj.attr('class')] = setInterval(
        function() {
            var bClass = document.body.className;
            
            if( bClass!='blurred'){
                sliderPhotoToSelectNext(sliderObj);
            }
        }, 4000);

    }

    function sliderPhotoToSelectNext(sliderObj){

        var  categorySliderImg = sliderObj.find('li.activeSliderCategoryItem').index()+1;
        var photo=parseInt(categorySliderImg)+1>parseInt(sliderObj.find('li').size())?1:parseInt(categorySliderImg)+1;
        sliderPhotoSelect(sliderObj, photo);
    }

    function sliderPhotoToSelectPrevious(sliderObj){
        var  categorySliderImg = sliderObj.find('li.activeSliderCategoryItem').index()+1;
        var photo=parseInt(categorySliderImg)-1<parseInt(sliderObj.find('li').size()) && parseInt(parseInt(categorySliderImg)-1)>0?parseInt(categorySliderImg)-1:sliderObj.find('li').size();
        sliderPhotoSelect(sliderObj, photo);
    }

    function sliderPhotoSelect( sliderObj , photo )
    {

            sliderStop(sliderObj.attr('class'));
            sliderWalk(sliderObj, photo);
            sliderWork(sliderObj);
    }

    function sliderStop(sliderObjClass){
        if( blockCategoryParams[sliderObjClass] ){
            clearInterval(blockCategoryParams[sliderObjClass]);
        }
    }

    function setSliderActiveOption(sliderObj, photoIndex){
        var sliderOptionsBlock  = sliderObj.parent().parent().find('.sliderOptions');
        var currentOption = sliderOptionsBlock.find('.active');
        var activeOption = sliderOptionsBlock.children('span:eq('+photoIndex+')');
        currentOption.removeClass('active');
        activeOption.addClass('active');
    }


    function sliderWalk(sliderObj, photo){


        if( !blockCategoryParams[sliderObj.attr('class')+'_processed'] ){

            blockCategoryParams[sliderObj.attr('class')+'_processed'] = true;
            var photoIndex = photo-1;
            var loopIndex = 0;
             sliderObj.children('li').each(function() {
                 if( $(this).hasClass('activeSliderCategoryItem')){

                    var  currentSliderObj = $(this);
                    var  nextSliderObj = sliderObj.children('li:eq(' +photoIndex+ ')');
                    currentSliderObj.removeClass('activeSliderCategoryItem');

                    if( ( loopIndex>photoIndex && !( photoIndex==0 && loopIndex==(sliderObj.children('li').size()-1) ) )
                            || ( loopIndex==0 && (sliderObj.children('li').size()-1)==photoIndex ) ){

                        $(this).stop(true,true).animate( {left:$(this).width()+'px'},1200); // from left

                    }else{

                        $(this).stop(true,true).animate( {left:'-'+$(this).width()+'px'},1200); // from right

                    }
                    

                    nextSliderObj.addClass('activeSliderCategoryItem');


                    if( (loopIndex>photoIndex  && !( photoIndex==0 && loopIndex==(sliderObj.children('li').size()-1) ) )
                        || ( loopIndex==0 && (sliderObj.children('li').size()-1)==photoIndex ) ){

                        sliderObj.children('li:eq(' +photoIndex+ ')').css('left', '-' + sliderObj.children('li:eq(' +photoIndex+ ')').width()+'px');// from right

                    }else{

                        sliderObj.children('li:eq(' +photoIndex+ ')').css('left', sliderObj.children('li:eq(' +photoIndex+ ')').width()+'px');// from left

                    }

                    sliderObj.children('li:eq(' +photoIndex+ ')').stop(true,true).animate( {left:0},1200);

                    sliderObj.children('li:eq(' +photoIndex+ ')').css('zIndex',3);
                    $(this).css('zIndex',2);

                    return false;

                 }
                 loopIndex++;
              });

            sliderObj.children('li:eq(' +photoIndex+ ')').css('display','block');

            if(sliderObj.hasClass('withOptions')){ //additional actions
                setSliderActiveOption(sliderObj, photoIndex);
            }

            setTimeout( function(){blockCategoryParams[sliderObj.attr('class')+'_processed'] = false;}, 1300);

        }

    }



    function hideSList( listObj ){

        
        var listItemsCount = listObj.children('li').length;
        
        if(listItemsCount>1 && listObj.hasClass('listSelectorActive') ){
            listObj.removeClass('listSelectorActive');
            listObj.children('li').each(
                function(){
                    if($(this).hasClass('visible') ){
                        $(this).removeClass('visible');
                    }
                }

            );
        }
    }


    function showSList(obj){

        var listObj = obj?obj:$(this).parent().find('ul');
        var listItemsCount = listObj.children('li').length;

        if(listItemsCount>1){

            if( !listObj.hasClass('listSelectorActive') ){
                listObj.addClass('listSelectorActive');
                listObj.children('li').each(
                    function(){

                        $(this).addClass('visible');$(this).addClass('visible');
                    }
                );
            }else{
                hideSList(listObj);
            }
        }
    }

    /* SPLASH SCREEN BEGIN*/

        function showSplash( title, text){

            var textContainer = $(".splashScreen").find(".splashScreenText");

            textContainer.children('h2').html(title);
            textContainer.children('div').html(text);

            $(".splashScreen").overlay({
                top: 0,
                mask: {
                    color: '#000000',
                    loadSpeed: 1000,
                    opacity: 0.7,
                    zIndex: 9998
                },
                closeOnClick: true,
                effect: 'drop',
                load: true
            }).load();

        }

        $.easing.drop = function (x, t, b, c, d) {
                return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
        };

        $.tools.overlay.addEffect("drop", function(css, done) {

           var conf = this.getConf(),
               overlay = this.getOverlay();
           if (conf.fixed)  {
              css.position = 'fixed';
           } else {
              css.top += $(window).scrollTop();
              css.left += $(window).scrollLeft();
              css.position = 'absolute';
           }

           overlay.css(css).show();

           overlay.animate({top: '+=70',  opacity: 1,  width: '+=10'}, 800, 'drop', done);

           }, function(done) {
              this.getOverlay().animate({top:'-=70', opacity:0, width:'-=10'},100, 'drop', function() {
                 $(this).hide();
                 done.call();
              });
           }
        );

    /* SPLASH SCREEN END*/


    });
})(jQuery);
