var loc = [];
$(document).ready(function(){
   
    if( typeof window.console == 'undefined'){
        window.console = {
            log:function(){}
        };
    }
    
    lightBox();
    
    //player + home page mess 
    (function(){
        
        if($('#player').get() <= 0) return;
        
        var  url = $('#player-file').text(),
            image = $('#player-preview').text();
        jwplayer('player').setup({
            flashplayer: '/inc/js/player/player.swf',
                file: url,
                image: image,
                players: [ { type: "html5" }, { type: "flash", src: "/inc/js/player/player.swf" } ],
                autostart: false,
                width: '518px',
                height: '270px',
                provider:'http','http.startparam':'starttime',
                stretching :'fill',
                wmode:'transparent',
                controlbar:'none',
                background:'000000',
                volume : 10,
                controlbar : {
                    position:'over',
                    idlehide : true
                }, 
                'allowscriptaccess': 'always',
                events: {
                    onReady: function() {},
                    onComplete: function() {}
            }    
        });
    
    })();
    
    
    
    
     //signUp
    (function(){
        var signUp = $('#signUp'),
            nSignUp = $('#nSignUp'),
            adDesab = $('#adDesab'),
            lang = $('#sLang').val(),
            mess = {},
            popUp = new PopUp(),
            url = '/inc/html/infolettre/signup.php',
            $form = $('#fSign');
        nSignUp.bind('click',function(e){
            e.preventDefault();
            var email  = signUp.val();
            if(isEmpty(email) || !isEmailValid(email)){
                mess = {fr:'Adresse courriel inadéquate',en:'Email non valid'};  
                display(mess);
            }else{
                var data = {mail:email}
                popUp.send(url,data,function(html){
                    if(html == 'yes'){
                        mess = {fr:'Ce courriel existe déjà dans notre base de données',en:'This email already exists in our database'};  
                        display(mess);
                    }else
                        $form.submit();
                });
            }
        });
        
        adDesab.bind('click',function(e){
            e.preventDefault();
            var mail  = signUp.val();
            if(isEmpty(mail) || !isEmailValid(mail)){
                mess = {fr:'Adresse courriel inadéquate',en:'Invalid email address'};
                display(mess);
            }else{
                var info = {
                    url : '/inc/html/infolettre/delete.php',
                    data :{mail:mail}
                }
                popUp.send(info.url,info.data,function(html){
                    //console.log('first response :: ' + html);
                    if(html == 'yes'){
                        mess = {fr:'Votre désabonnement à Accès Info a été confirmé',en:'Your subscription to Access Info has been cancelled'}
                        display(mess);
                    }else {
                        mess = {fr:'Adresse courriel inadéquate',en:'Invalid email address'}
                        display(mess);
                    }    
                });
            }
        });
        
        function display(mess,callBack){
            signUp.val(mess[lang]).addClass('sMess');
            if(callBack) callBack();
        }
        
    })();
    
    
     //contact form
    (function(){
        var c = {
            dom : {
                selectForm : $('#selectForm'),
                span : $('#selectForm').find('span'),
                idPro : $('#id_pro'),
                sfList : $('#sfList'),
                proLink : $('.proLink'),
                send : $('#adSendContact'),
                form : $('#form'),
                toValidate : $('.toValidate'),
                formErr : $('#formErr')
            }
        }
        //
        c.dom.selectForm.bind('click',showList);
        //
        c.dom.proLink.bind('click',function(e){
            e.preventDefault();
            var self = $(this),
                pro   = e.currentTarget.id.substring(8),
                txt  = self.text();
                setInfo(txt,pro);
        });
        //
        c.dom.send.bind('click',function(e){
            e.preventDefault();
            
            var f = {
                name : $('#name'),
                email : $('#email'),
                area : $('#area'),
                phone : $('.ad-phone')
            },
                v = {
                    name : $('#name').val(),
                    email : $('#email').val(),
                    area : $('#area').val(),
                    phone : $('#phone').val()
                }
                
            if(isEmpty(v.name)){
                var t = {fr:'Oups ! Une erreur s\'est glissée',en:'OOPS! An error was made'}
                displayErr(t,f.name);
            }else{
                if(isEmpty(v.email)){
                    var t = {fr:'Adresse courriel inadéquate',en:'Email non valid'}
                    displayErr(t,f.email);
                }else if(!isEmailValid(v.email)){
                     var t = {fr:'Adresse courriel inadéquate',en:'Email non valid'}
                    displayErr(t,f.email);
                }else{
                    if(!isPhoneNumber(v.area+v.phone)){
                        var t = {fr:'Oups ! Une erreur s\'est glissée',en:'OOPS! An error was made'}
                        displayErr(t,f.phone);   
                    }else{
                        var data = c.dom.form.serialize();
                        send(data,function(html){
                            var t = {fr:'message envoyé',en:'message has been sent'}
                            displayErr(t,null,function(){
                                c.dom.formErr.delay(600).fadeOut('slow');
                            });
                            setForm();
                        });
                    }    
                }    
            } 
        
        });
        //
        function displayErr(t,elm,callBack){
            var lang = $('#lang').val();
            c.dom.formErr.fadeIn('slow').text(t[lang]);
            c.dom.toValidate.removeClass('error');
            if(elm)elm.addClass('error');   
            if(callBack) callBack();
        }
        //
        function showList(){c.dom.sfList.slideToggle('slow');}
        //
        function setInfo(txt,pro){
            c.dom.span.text(txt);
            c.dom.idPro.val(pro);
        }
        //
        function send(data,success){
            $.ajax({
                type:'POST',
                url : '/inc/html/form/send.php',
                data : data,
                success:success
            });
        }
        //
        function setForm(){c.dom.toValidate.val('');}    
    })(); 
    
    //infolettre
    (function(){
        var $f = {
            form : $('#form2'),
            iLSend : $('#iLSend'),
            eTest : $('#email_subscribed'),
            btTest : $('#btTest'),
            formErr : $('#formErr'),
            adFormCon : $('#adFormCon')
        },
        permission = false,
        pass = false, 
        elm = {
            name : $('#name'),
            lName : $('#last_name'),
            mail : $('#email'),
            area : $('#area'),
            phoneLast : $('.adPhone:eq(1)'),
            phone : $('.adPhone'),
            cp : $('.bg_pc:eq(1)'),
            cpField : $('.bg_pc'),
            fields : $('.inputB'),
            required : $('.adRequired'),
            toValidate : $('.bg_pc , .adRequired,.inputB '),
            adFormCon : $('#adFormCon')
        };
        
        
        $f.btTest.bind('click',function(e){
            e.preventDefault();
            var email = $f.eTest.val(),
                lang  = $('#adLang').val(), 
                data = 'email='+email+'&lang='+lang,
                url = '/inc/html/infolettre/update.php';
            if(isEmpty(email)) return;
            send(data,url,function(html){
                var t = {fr : 'merci de vous inscrire avant !!!', en : 'please subscribe !!! '};
                if(html == 'no') display(t,true,false);
                else showForm(html,function(){
                    $f.formErr.fadeOut('slow');
                    save();
                });
            });
        });
        
        
        $f.init = function(){
            save();
            familiaHandler();
        }
        
        //show box - familia program
        function familiaHandler(){
            var familiaBox = $(".popBox");
            $("#showB").click(function () { familiaBox.show("slow"); return false; });
            $("#CpopBox").click(function () { familiaBox.hide("slow"); return false; });    
        }
        
        function save(){
            
            familiaHandler();
            
            var f = $('#form2'),
                bt = $('#iLSend'),
                res = $('#adRes')
                ,t
            
            elm.name.bind('blur',vName);
            elm.lName.bind('blur',vLastName);
            elm.mail.bind('blur',vEmail);
            elm.phoneLast.bind('blur',vPhone);
            elm.cp.bind('blur',vCP);
                
            bt.bind('click',function(e){
                e.preventDefault();
                //
                if(!permission) check();
                //
                permission = pass = true;
                // district
                if(permission){
                    permission = false;
                    var input = $('.adDistrict:checked'),
                        self = $('#errDistrict'),
                        mess = new Pre(self);
                    if(!idChecked(input)){
                        console.log('validate :: step : adDistrict');
                        display(false,false,false,function(){
                            mess.show();
                        });
                    }else{
                        mess.hide();
                        permission = true; 
                    }
                }
               // dbedrooms
                if(permission){
                    permission = false;
                    var input = $('.adBed:checked'),
                        self = $('#errBed'),
                        mess = new Pre(self);
                    if(!idChecked(input)) {
                        console.log('validate :: step : adBed');
                        display(false,false,false,function(){
                            mess.show();
                        });
                    }
                    else{
                        mess.hide();
                        permission = true; 
                    }  
                }
                // eligible
                /*if(permission){
                    permission = false;
                    console.log('validate :: step : eligible');
                    var input = $('.eligible:checked');
                    if(!idChecked(input)) display();
                    else permission = true;   
                }*/
                
                //test adProp
                if(permission){
                    permission = false;
                    var input = $('.adProp:checked'),
                        self = $('#errProp'),
                        mess = new Pre(self);
                    if(!idChecked(input)){
                        console.log('validate :: step : adProp');
                        display(false,false,false,function(){
                            mess.show();
                        });
                    }
                    else{
                        mess.hide();
                        permission = true; 
                    }  
                }
                // fisrtTime
                if(permission){
                    permission = false;
                    var input = $('.fisrtTime:checked'),
                        self = $('#errFirstTime'),
                        mess = new Pre(self);
                    if(!idChecked(input)){
                        console.log('validate :: step : errFirstTime');
                        display(false,false,false,function(){
                            mess.show();
                        });
                    }
                    else{
                        mess.hide();
                        permission = true; 
                    }  
                }
                
                //satuts
                if(permission){
                    permission = false;
                    var input = $('.satuts:checked'),
                        self = $('#errSatuts'),
                        mess = new Pre(self);
                    if(!idChecked(input)) {
                        console.log('validate :: step : errSatuts');
                        display(false,false,false,function(){
                            mess.show();
                        });
                    }
                    else{
                        mess.hide();
                        permission = true; 
                    }    
                }
                
                //children
                if(permission){
                    permission = false;
                    var input = $('.children:checked'),
                        self = $('#errChild'),
                        mess = new Pre(self);
                    if(!idChecked(input)) {
                        console.log('validate :: step : errChild');
                        display(false,false,false,function(){
                            mess.show();
                        });
                    }
                    else{
                        mess.hide();
                        permission = true; 
                    } 
                }
                
                //gross
                if(permission){
                    permission = false;
                    var input = $('.gross:checked'),
                        self = $('#errGross'),
                        mess = new Pre(self);
                    if(!idChecked(input)) {
                        console.log('validate :: step : errGross');
                        display(false,false,false,function(){
                            mess.show();
                        });
                    }
                    else{
                        mess.hide();
                        permission = true; 
                    }   
                }
                //send
                if(permission){
                    var data = f.serialize(),
                    url = '/inc/html/infolettre/save.php';
                    send(data,url,function(html){
                        t = {fr:'Votre inscription a bien été enregistrée. Merci !' , en : 'You have successfully completed your subscription. Thank you !'}
                        if(html == 'yes') display(t,false,false,function(){
                            var ajax = new PopUp(),
                                url = '/inc/html/infolettre/template.php';
                            ajax.send(url,data,function(html){
                                elm.adFormCon.empty().html(html);
                            });
                        });
                    });              
                } 
                    
            });
        }
        
        function vName(){
            permission = false;
            var v = $('#name').val();
            if(isEmpty(v) && !isValidString(v))
                display(false,elm.name);
            else resetStat(elm.name);
        }
        
        function vLastName(){
            permission = false;
            var v = $('#last_name').val();
            if(isEmpty(v) && !isValidString(v))
                display(false,elm.lName);
            else resetStat(elm.lName);
        }    
            
        function vEmail(){
            permission = false;
            var v = $('#email').val();
            if(isEmpty(v) || !isEmailValid(v))
                display(false,elm.mail);
            else resetStat(elm.mail);
        }
        
        function vPhone(){
            permission = false;
            var v = $('#area').val()+$('#phone').val();
            if(!isPhoneNumber(v))
                display(false,elm.phone);
            else resetStat(elm.phone);
        }
        
        function vCP(){
            permission = false;
            var v = $('#cp1').val()+$('#cp2').val();
            if((isEmpty(v) || isEmpty(v)) || !isCp(v))
                display(false,elm.cpField);
            else resetStat(elm.cpField);
        } 
        
        function idChecked(elm){
            var n = elm.length;
            return n > 0;
        }
        
        function send(data,url,success){
            $.ajax({
                type : 'POST',
                url  : url,
                data : data,
                success : success
            });
        }
        
        function reload(){
            setTimeout(function(){
                window.location.reload();
            },3000);
        }
    
        function resetStat(elm){
            elm.removeClass('error');
            permission = true; 
        }
        
        function check(){
            if(pass) return;
            else{
                display();
                $('.inputB').addClass('error');
                $('.sError').show();
            } 
        }
        
        function display(t,y,elm,callBack){
            var lang = $('#sLang').val(),
                data = t ? t : {fr : 'Oups ! Une erreur s\'est glissée', en : 'OOPS! An error was made'};
            $('body').scrollTo('#content', 500,{
                onAfter:function(){
                    $f.formErr.html(data[lang]).fadeIn('slow',function(){  
                        if(y) $f.eTest.val('');
                        if(callBack) callBack();
                    });
                    if(elm) elm.addClass('error');
                } 
            });
        }
        
        //fn only for radios and checkboxes 
        function Pre(elm){
            this.domElm = elm;
            this.show = function(){this.domElm.fadeIn('slow');}
            this.hide = function(){this.domElm.fadeOut('slow');}
            return this;
        }
        
        function showForm(html,callBack){
            $f.adFormCon.fadeOut('slow',function(){
                $(this).empty().html(html).fadeIn('slow',function(){
                    if(callBack) callBack();
                });
            })
        }
        
        $f.init();
    
    })();
    
    //news
    (function(){
        var n = {
            dom : {
                pager : $('.pager'),
                adNews : $('.adNews'),
                container : $('#adNewsContainer'),
                lang : $('#current_lang'),
                currentPage : $('#current_page'),
                navNext : $('.navNext'),
                navPrev : $('.navPrev')
            },
            
            length : {
                li : $('.adNews').length
            },
            
            w : {
                li : $('.pager li:eq(0)').outerWidth(true)   
            }
        }
        
        n.dom.adNews.bind('click',function(e){
            e.preventDefault();
            var self = $(this),
                data = {
                    page:self.attr('id').substring(5,6),
                    lang:n.dom.lang.val()
                };
                getNews(data);
        });
        
        n.dom.navNext.bind('click',function(){
           var c = parseInt(n.dom.currentPage.val()),
                data = {
                    page:c+1,
                    lang:n.dom.lang.val()
                 }
                if(data.page >= n.length.li) return;     
                getNews(data);
        });
        
        n.dom.navPrev.bind('click',function(){
           var c = parseInt(n.dom.currentPage.val()),
                data = {
                        page:c-1,
                        lang:n.dom.lang.val()
                     }
                if(data.page < 0) return;     
                getNews(data);
        });
        
        n.init = function(){
            setWidthPager();
        }
        
        
        function setWidthPager(){
            var w = n.w.li * n.length.li;
            n.dom.pager.width(w);
        }
        
        function getNews(data){
            $.ajax({
                type:'POST',
                url:'/inc/html/news/news.php',
                data : 'page='+data.page+'&lang='+data.lang,
                success:function(html){
                    display(html,setCurrentPage(data.page));
                    changeClass(data.page);
                }
            });
            
            animate(data.page);
        }
        
        function animate(index,callBack){
            return ;
            var shown = 5;
            var margin = index * n.w.li;
            console.log('animate :: index = ' + index + ' length : '+ n.length.li+' Shown :: '+ shown +' result = ' + (n.length.li - shown));
            //if(index > (n.length.li - shown)) return;
            n.dom.pager.stop(true,true).animate({marginLeft:-margin},600,function(){
                if(callBack) callBack();
            });
        }
        
        function display(html,callback){
            n.dom.container.fadeOut('fast',function(){
                $(this).html(html).fadeIn('slow');
                if(callback) callback();
            });
        }
        
        function changeClass(index){
            $('.adNews').removeClass('cuurentPage');
            $('.adNews:eq('+index+')').addClass('cuurentPage');
        }
        
        function setCurrentPage(page){
            n.dom.currentPage.val(page);
        }
        
        n.init();
        
        return n;
        
    })();

    //maps
    (function(){
        mapAarr = [],
        gmarkers = [],
        adMap = $('.gMap'),
        adMapHover = $('#g_map'),
        mapC = $('.toSlide');
        //
        adMap.each(function(index,elm){
            var val = elm.value.split('&');
            //if(!isEmpty(val[1]) || !isEmpty(val[2]))
                mapAarr.push(val);
        });
        //
        if(mapAarr.length <= 0) return;
        //
        var marker, i;
        var infowindow = new google.maps.InfoWindow();
        var arrLength = mapAarr.length;
        var lat = arrLength <=1 ? parseFloat(mapAarr[0][1]) : 45.530403;
        var lng = arrLength <=1 ? parseFloat(mapAarr[0][2]) : -73.555069;
        var zoom = mapAarr.length <=1 ? 15 : 9;
        var map = new google.maps.Map(document.getElementById('g_map'), {
          zoom: zoom,
          center: new google.maps.LatLng(lat,lng),
          mapTypeId: google.maps.MapTypeId.ROADMAP,
          scrollwheel : false,
          mapTypeControl : false
        });
        var contentInfo = new PopUp(),
            url = '/inc/html/global/mapsInfoWindow.php',
            state = $('#ad-state').val();
        //
        for (i = 0; i < mapAarr.length; i++) {  
          marker = new google.maps.Marker({
            position: new google.maps.LatLng(parseFloat(mapAarr[i][1]), parseFloat(mapAarr[i][2])),
            map: map
          });
          gmarkers.push(marker);
          showInfoByIndex(i);
          google.maps.event.addListener(marker, 'click', (function(marker, i) {
            return function() {
                if(state == 1) return;
                var data = {id:mapAarr[i][0],state:state}
                contentInfo.send(url,data,function(html){
                    infowindow.setContent(html);
                    infowindow.open(map, marker);
                });
                try{
                    gmarkers[i].setCenter(new google.maps.LatLng(parseFloat(mapAarr[i][1]), parseFloat(mapAarr[i][2])));
                }catch(e){}
            }
          })(marker, i));
        }
        //
        adMapHover.hover(function(){slideTo(400);},function(){slideTo(269);});
        //
        function slideTo(height,callBack){
            mapC.stop(true,true).animate({height:height},400,function(){if(callBack)callBack();});
        }
        //
        function showInfoByIndex(index){
            $('.g-map-coor:eq('+index+')').bind('click',function(e){
                var lat = parseFloat(mapAarr[index][1]);
                var lon = parseFloat(mapAarr[index][2]);
                if(isNaN(lat) ||isNaN(lon)) return;
                e.preventDefault();
                infowindow.close();
                map.setZoom(17);
                var center = new google.maps.LatLng(lat,lon);
                map.setCenter(center);
                $('body').scrollTo('#content', 500,{
                    onAfter:function(){
                        for(var l=0;l<=arrLength; l++){
                            try{
                                if(l != index ) gmarkers[l].setAnimation(null);
                                else gmarkers[index].setAnimation(google.maps.Animation.DROP);   
                            }catch(e){}
                        }
                    } 
                });
            });
        }
        //
        function toggleBounce(){       
          if (marker.getAnimation() != null) {
            marker.setAnimation(null);
          } else {
            marker.setAnimation(google.maps.Animation.BOUNCE);
          }
        }
        
    })();
    
    
    
    
    
    
    
    //galerie
    (function(){
        
        var g = {
            
            dom : {
                gPrev : $('#gPrev'),
                gNext : $('#gNext'),
                gMask : $('#gMask'),
                gItem : $('.gItem'),
                gBigItem : $('.gBigItem'),
                toEnable : $('.toEnable')
            },
            
            length : {
                gLi : $('.gItem').length
            },
            
            w : {
                wLi : $('#imgsholder li:eq(0)').outerWidth(true)
            }
        }
        
        setGaleryState();
        
        var i = 0,v = 6;
        g.dom.gNext.bind('click',function(){
            var manage = new Manage($(this));
            if(g.length.gLi <= v) return;
            manage.enable(g.dom.toEnable);
            if((i+v) >= g.length.gLi-1) manage.disable();
            if((i+v) >= g.length.gLi ) return;
            i++;
            slide((g.w.wLi * i));
        });
        
        g.dom.gPrev.bind('click',function(e){
            e.preventDefault();
            var manage = new Manage($(this));
            if(g.length.gLi <= v) return;
            manage.enable(g.dom.toEnable);
            if(i <= 1) manage.disable();
            if(i <= 0) return;
            slide((g.w.wLi * (i-1)));
            i--;
        });
        
        g.dom.gItem.bind('click',function(e){
            e.preventDefault();
            var self = $(this),
                index = self.index();
            display(index);
        });
        
        $($('.gBigItem').get().reverse()).each(function(index,elm){
            $(this).css('z-index',index*2);
        });
        
        function Manage(domElm){
            this.domElm = domElm;
            this.enable = function(d){d.children().removeClass('adDisable');}
            this.disable = function(){this.domElm.children().addClass('adDisable');}
        }
        
        function slide(left,callBack){
            g.dom.gMask.animate({left:-left},1000,'easeInOutQuint',function(){if(callBack) callBack();});
        }
        
        function display(index){
            if($('.gItem:eq('+index+')').hasClass('ui-fade-current')) return;
            g.dom.gBigItem.fadeOut('slow');
            $('.gBigItem:eq('+index+')').fadeIn('slow');
            g.dom.gItem.removeClass('ui-fade-current').fadeTo(300,1);
            $('.gItem:eq('+index+')').addClass('ui-fade-current').fadeTo('slow',.65);
        }
        
        function setGaleryState(){
            setWidth(g.dom.gMask,(g.length.gLi * g.w.wLi));
            g.dom.gItem.fadeTo(0,.65).not(':first').fadeTo(0,1);
        }
    
    })();
    

    //sliding effects
    (function(){
        var fQues = $('.fQues'),
            fRFirst = $('.fRes:eq(0)');
        fRFirst.show();
        fQues.bind('click',function(){
            var self = $(this),
                res = self.next('.fRes');
                if(res.is(':visible')) return;
                fQues.next('.fRes').slideUp('slow');
                res.slideToggle('slow','easeInSine',function(){});     
        });
        
        var pro = $('.proItem');
        pro.bind('click',function(e){
            e.preventDefault();
            var self = $(this),
                res = self.next('.sales');
                if(res.is(':visible')) return;
                pro.removeClass('proMoins');
                self.toggleClass('proMoins');
                pro.next('.sales').slideUp('slow');
                res.slideToggle('slow','easeInSine',function(){});     
        });
        
        var h = {
            selectForm : $('.selectForm'),
            locSlide   : $('#locSlide'),
            span       : $('#spanLoc'),
            btLoc      : $('#btLoc')
        }
        h.btLoc.bind('click',function(e){
            e.preventDefault();
            h.locSlide.slideToggle('slow')
                    .hover(function(){},function(){
                        $(this).slideUp('slow');    
                    });
        });
        
    })();
    
    
    
    
    // project
    (function(){
        var p = {
            dom : {
                adShowDesc : $('.adShowDesc'),
                adProInfo : $('.adProInfo'),
                adBehav : $('.adBehav, #condos_program .box img')
            }
        }
        
        p.dom.adShowDesc.stop(true,true).hover(function(){
            var self = $(this),
                id = self.attr('id');
                display(id);
        },function(){});
        
        p.dom.adBehav.hover(function(){ fade($(this),.7);},function(){fade($(this),1);});
        
        function fade(elm,val){
            elm.stop(true,true).fadeTo(300,val);
        }
        
        function display(id){
            p.dom.adProInfo.hide();
            $('#adbox-'+id).fadeIn('slow');
        }
        
        
    })();
    
    // slideShow
    (function(){
        $('#slideShow').adSlider({direction:'top'});
    })();
    
    
    //popup
    (function(){
        var adExample = $('#adExample');
        var popUp = new PopUp();
        popUp.reset();
        //
        adExample.bind('click',function(e){
            e.preventDefault();
            var adLang = $('#adLang').val(),
                data = {lang:adLang},
                url = '/inc/html/global/pop-example.php';
            popUp.send(url,data,function(html){
                popUp.create(function(){
                    popUp.html(html,function(){
                        var bt = $('.closePopup');
                        bt.bind('click',function(){
                            popUp.hide(popUp.kill);    
                        });  
                    });    
                });
            });
        });
        //
        var p = $('#ad_popup'),
            idPro = $('#id_pro').val(),
            lang = $('#lang').val(),
            nPro = $('#nPro').val();
        //
        p.bind('click',function(e){
            e.preventDefault();
            var adLang = $('#adLang').val(),
                data = {lang:adLang,idPro:idPro,nPro:nPro},
                url = '/inc/html/projets/units.php';
            popUp.send(url,data,function(html){
                popUp.create(function(){
                    popUp.html(html,function(){
                        var bt = $('.closeBt');
                        bt.bind('click',function(){
                            popUp.hide(popUp.kill);    
                        });
                        getNextPlanDetails();
                    });    
                });  
            });    
        });       
        
        
    })();
    

});

function closeCBox(){
    var btClose = $('.closePopup');
    btClose.bind('click',function(e){
        e.preventDefault();
        $.colorbox.close();
    });
}

function getNextPlanDetails(){
    var popUp = new PopUp(),
        smPlan = $('.smPlan');
    smPlan.bind('click',function(e){
        e.preventDefault();
        var adDetails = $('#adDetails'),
            idPro = $('#id_pro').val(),
            lang = $('#lang').val(),
            self = $(this),
            idPlan = self.find('.ui-units').attr('id').substring(5),
            data = {idPro:idPro,idPlan:idPlan,lang:lang},
            url = '/inc/html/projets/unitsDetails.php';
            if(self.hasClass('currentUnit')) return;
            switchClass(self);
            popUp.send(url,data,function(html){
                displayDetails(adDetails,html); 
            });
     }).hover(function(){
        var self = $(this),
            overlay = self.find('.ui-overlay'),
            option = {
                mt : -10,
                ml : -10,
                width:103,
                height: 43
            };
        self.addClass('ui-hover');
        animate(overlay,option);
    },function(){
        var self = $(this),
            overlay = self.find('.ui-overlay'),
            option = {
                mt :-20 ,
                ml :-20 ,
                width:130,
                height:70 
            };
        self.removeClass('ui-hover');
        animate(overlay,option);
    });
    
    pdfNav();
    var nav = new Nav(),
        uItem = $('.uItem');
    uItem.bind('click',function(e){
        e.preventDefault();
        var index = e.currentTarget.id.substr(2);
        nav.getNext(index);
    });
    
    function switchClass(elm){
        smPlan.removeClass('currentUnit');
        elm.addClass('currentUnit');
    }
    
    function animate(elm,option,callBack){
        elm.show().stop(true,true).animate({marginLeft:option.ml,marginTop:option.mt,width:option.width,height:option.height},300,function(){
            if(callBack) $(this).hide();
        });
    }
    
}

function displayDetails(elm,html){
    elm.fadeOut(200,function(){
       $(this).html(html).fadeIn('slow');
    });
}


function pdfNav(length){
    var p = {
        dom : {
            container : $('#adPdfs'),
            mask : $('#adMaskPdf'),
            arrUp : $('.navUp'),
            arrDown : $('.navDown')
        },
        
        h : {
            box : $('.linkPdf').height()
        },
        
        lenght : {
            box : $('.linkPdf').length
        }
        
        
    }
    
    if(length) p.lenght.box = length;
    
    var i = 0,perBox = 3,boxs = Math.ceil(p.lenght.box/perBox) ;
    p.dom.arrUp.bind('click',function(e){
        e.preventDefault();
        if(i >= boxs-perBox) return;
        i++;
        animate((p.h.box*i));
        console.log('up')
    });
    
    p.dom.arrDown.bind('click',function(e){
        e.preventDefault();
        if(i <= 0) return;
        console.log('down')
        animate((p.h.box*(i-1)));
        i--;
    });
    
    function animate(margin,callBack){
        console.log('animate :: ok');
        p.dom.mask.animate({marginTop:-margin},'slow','easeInOutQuint',function(){if(callBack) callBack(); });
    }
}


function setWidth(elm,w){
    elm.width(w);
}

/*
* class popup for acc :)
*/
function PopUp(){
    var self = this;
    self.domElm = {
        dom : {
            container : $('#adLightBox'),
            content : $('#adLightBoxContent'),
            lightBox : $('.lightBox'),
            close : $('.closeBt'),
            ajaxContent : $('#ajaxContent'),
            fakeLightBox : $('#fakeLightBox')
        }
    }
    /**
     * init func
     * @param ::
     * @returns :: void
    */
    self.init = function(){
        self.domElm.dom.fakeLightBox.css({opacity:.8});
        setPopUpPos();
    }
    /*
    *  creat fn :: show pop up
    *  @param ::  callaback : function
    */
    self.create = function(callBack){
        self.domElm.dom.lightBox.fadeIn('slow',function(){if(callBack)callBack(); });
    }
    /*
    *  kill fn :: remove content  
    */
    self.kill = function(){
       self.domElm.dom.ajaxContent.empty();
    }
    /*
    *  send fn :: ajax call
    *  @param :: url required
    *  @param :: data required : info to send
    *  @param :: seccess : function to excute after the content is loded
    */
    self.send = function(url,data,success){
        $.ajax({
            type:'POST',    
            url:url,
            data : data,
            success:success
        });
    }
    /**
    * html func ::
    * @param :: html : the content
    * @param :: callBack : fn to excute after the content 
    **/
    self.html = function(html,callBack){
        this.domElm.dom.ajaxContent.html(html).show();
        if(callBack) callBack();
    }
    /**
    *   hide Fn :: hide the popup
    *   @param :: callBack : fn to excute after the content
    **/
    self.hide = function(callBack){
        self.domElm.dom.lightBox.fadeOut('slow',function(){if(callBack)callBack(); });
    }
    /**
    *   reset Fn :: set the fedault state
    **/
    self.reset = function(){
        self.domElm.dom.lightBox.hide();
    }
    /*
     * private function to set yhe position oh the popup
     * @param ::
     * @returns :: void
     */
    function setPopUpPos(){
        var h = self.domElm.dom.content.height(),
            w = $(window).height(),
            pos = (w - h) /2;
        self.domElm.dom.content.css({marginTop:pos});
    }
    
    self.init();
}

/**
* class nav for units 
**/
function Nav(){
    var self = this;
    self.dom = {
        unit : $('.smPlan'),
        uItem : $('.uItem')
    }
    self.n = {perNav :9}
    /**
     * public fn getNex()
     * @param :: index : current page
     * @returns :: void
    */
    self.getNext = function(index){
        var start = self.n.perNav * index,
            end = (self.n.perNav * index) + self.n.perNav;
        self.dom.unit.hide().slice(start,end).show();
        setCurrent(index);
        console.log('Nav :: getNext :  start : ' + start + ' end : ' + end + ' index : ' + index);
    }
    /**
     *  private fn setCurrent : change class of the current
     *  @param :: index 
     *  @returns :: void
    */
    function setCurrent(index){
        self.dom.uItem.removeClass('unitCurrentNav')
        $('#u-'+index).addClass('unitCurrentNav');
    }
}

function lightBox(){
    $(".colorBox").colorbox({opacity:.8});
    $('#noel').click();
    setTimeout(function(){$.colorbox.close();},5000);
}

function isEmpty( inputStr ) { if ( null == inputStr || "" == inputStr ) { return true; } return false; }
function isEmailValid(strEmail){validRegExp = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/; if (strEmail.search(validRegExp) == -1){return false;}return true;}
function isPhoneNumber(elementValue){var phoneNumberPattern = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;return phoneNumberPattern.test(elementValue);}
function isCp(elementValue){var cpPattern = /^([a-zA-Z][0-9]){3}$/;return cpPattern.test(elementValue);}
function isValidString(elementValue){var strPattern =  /^[a-zA-Z]+$/;return strPattern.test(elementValue);}
