
$(document).ready(function() {

    ////////////////////////////////////////////////////////////////////////////////
    ///////////////////             HEAD            ////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////

   // more/less options in dates nearby search
   $('.more_opt').click(function(event) {
       event.preventDefault();
       var location = $(this).attr('href').valueOf();
       $(location).show('slow', function() {});
       $(this).hide();
       $(this).next().show();
   });

   $('.less_opt').click(function(event) {
       event.preventDefault();
       var location = $(this).attr('href').valueOf();
       $(location).hide('slow', function() {});
       $(this).hide();
       $(this).prev().show();
   });

////////////////////////////////////////////////////////////////////////////////
///////////////////             MAIN            ////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

    $('#search_dates').click(function(event){
        event.preventDefault();

        var age_down = $('#age_down').val();
        var age_up = $('#age_up').val();
        var radius = $('#radius').val();
        var cityId = $('#cityId').val();

        var url = '#/search/simple_search/'+age_down+'/'+age_up+'/'+cityId+'/'+radius+'/all/1/';
        window.location.href = url;
    });

   // create captcha dinamicaly
   $('a.captcha_reload').click(function(event){
       event.preventDefault();
       var location = $(this).attr('href').valueOf();
       var result = this;

       $.ajax({
          type: "GET",
          url: location,
          dataType: "html",
          success: function(data) {
            $(result).html(data);
            // console.log('Load was performed.');

          }
        });
   });

    //////////////////////////////////////////////
    ///////////////      signup     //////////////
    //////////////////////////////////////////////
    $('#sign_up').ajaxForm({
                beforeSubmit: signupValidate,
                target: '#resultTarget',
                success: function() {
                     $('#sign_up').hide();
                     $('#resultTarget').fadeIn('slow');
                     hideSignupLoader();
                 }
    });

    function signupValidate(formData, jqForm, options)
    {
        addSignupLoader();

        var errors = false;
        var name = $("input[name=name]").val();
        var email = $("#sign_up input[name=email]").val();
        var pass = $("#sign_up input[name=password]").val();
        var gender = $("select[name=gender]").val();
        var interested_in = $("select[name=interestedIn]").val();
        var countryId = $("select[name=countryId]").val();
        var regionId = $("select[name=regionId]").val();
        var cityId = $("select[name=cityId]").val();
        var detectedCityId = $("input[name=detected_city_id]").val();
        var day = $("select[name=day]").val();
        var month = $("select[name=month]").val();
        var year = $("select[name=year]").val();

        if (!name[0]) {
            $('#name').addClass('err');
            errors = true;
        }else{
            $('#name').removeClass('err');
        }
        
        if (!email[0]) {
            $('#email').addClass('err');
            errors = true;
        }else{
            validateEmail(email);
        }

        if (!pass[0] || pass.length < 6) {
            $('#password').addClass('err');
            errors = true;
        }else{
            $('#password').removeClass('err');
        }

        if (!gender[0]) {
            $('#gender').addClass('err');
            errors = true;
        }else{
            $('#gender').removeClass('err');
        }
        // interested_in
        if (!interested_in[0]) {
            $('#interested_in').addClass('err');
            errors = true;
        }else{
            $('#interested_in').removeClass('err');
        }
        // user location
        if(!detectedCityId){
            // countryId
            if (!countryId[0]) {
                $('#countryId').addClass('err');
                errors = true;
            }else{
                $('#countryId').removeClass('err');
            }
            // regionId
            var regions_div_disp = $('#regions_div').css('display');
            if( regions_div_disp != 'none'){
               if (!regionId[0]) {
                    $('#regionId').addClass('err');
                    errors = true;
                }else{
                    $('#regionId').removeClass('err');
                }
            }
            // cityId
            if (cityId == undefined || !cityId[0]) {
                $('#cityId').addClass('err');
                errors = true;
            }else{
                $('#cityId').removeClass('err');
            }
        }
        // year
        if (!year[0]) {
            $('#year').addClass('err');
            errors = true;
        }else{
            $('#year').removeClass('err');
        }
        // month
        if (!month[0]) {
            $('#month').addClass('err');
            errors = true;
        }else{
            $('#month').removeClass('err');
        }
        // day
        if (!day[0]) {
            $('#day').addClass('err');
            errors = true;
        }else{
            $('#day').removeClass('err');
        }
        // accept terms
        if ($('#accept_terms:checked').val() == undefined) {
            $('#terms_url').addClass('err');
            $('#accept_terms_href').css('color', 'red');
            errors = true;
        }else{
            $('#terms_url').removeClass('err');
            $('#accept_terms_href').css('color', 'blue');
        }
        
        // if there are no arrors, form is proceding
        if(!errors){
            return true;
        }else{
            hideSignupLoader();
            return false;
        }
    }

    $('#month').change(function (){
        var month = $('#month').val();
        if(month){
            $('#month').removeClass('err');
            populateDays();
        } else {
            $('#month').addClass('err');
        }
    });

    $('#year').change(function (){
        var year = $('#year').val();
        if(year){
            $('#year').removeClass('err');
            populateDays();
        } else {
            $('#year').addClass('err');
        }
    });
    // populating day select list
    function populateDays(){
        var days = 0; // initial value
        var month = $('#month').val();
        var vals30 = new Array('04', '06', '09','11');
        var vals31 = new Array('01', '03', '05','07','08','10','12');

        if($.inArray(month, vals30) > -1){
            days = 30;
        }
        if($.inArray(month, vals31) > -1){
            days = 31;
        }
        // february
        if(month && parseInt(month) == 2){
            var year = parseInt($('#year').val());
            // if divisible by 4, leap year
            if(year%4 == 0){
                // divisible by 100, not leap
                if(year%100 == 0){
                    // divisible by 400, leap year
                    if(year%400 == 0){
                        days = 29;
                    } else {
                        days = 28;
                    }
                } else {
                    days = 29;
                }

            } else {
                days = 28;
            }
        }
        
        var options = '<option value="">Day</option>';
        for(var i = 1; i <= days; i++){
            options += '<option value="'+i+'">'+i+'</option>';
        }
        
        $('#day').html(options);
    }

    $('#day').change(function (){
        if($('#day').val()){
            $('#day').removeClass('err');
        } else {
            $('#day').addClass('err');
        }
    });

    $('#name').blur(function (){
        var name = $('#name').val();
        if(!name[0]){
            $('#name').addClass('err');
        } else {
            $('#name').removeClass('err');
        }
    });

    $('#sign_up #email').blur(function(){
            var email = $('#sign_up #email').val();
            validateEmail(email)
    });

    function validateEmail(email){
        $.ajax({
               type: "POST",
               url: "/welcome/validate_email/",
               data: "email="+email,
               dataType:   "html",
               success: function(html){
                    if(html == 'ok'){
                        $('#sign_up #email').removeClass('err');
                        $('#sign_up #email').addClass('success');
                    } else {
                         $('#sign_up #email').removeClass('success');
                        $('#sign_up #email').addClass('err');
                    }
               }
         });
    }

    $('#sign_up #password').blur(function(){
            var pass = $('#sign_up #password').val();
            if(pass.length < 6){
                $('#sign_up #password').addClass('err');
            } else {
                $('#sign_up #password').removeClass('err');
            }
    });

    $('.gender').change(function () {
        if($(this).val()){
            $(this).removeClass('err');
        } else {
            $(this).addClass('err');
        }
    });

    function addSignupLoader(){
        $('#box_loader').show();
    }

    function hideSignupLoader(){
        $('#box_loader').hide();
    }

    /////////////////////////////////// forgot password
    $('#forgot_password').ajaxForm({
            beforeSubmit: forgotPassValidate,
            target: '#resultTarget',
            dataType: 'json',
            success: function(data) {
                $('#loader').hide();
                if(data.success == '1'){
                    $('#forgot_password').hide();
                }
                $('#resultTarget').html('<br /><h3>'+data.msg+'</h3>');
                $('#resultTarget').fadeIn('slow');
            }
    });

    function forgotPassValidate(formData, jqForm, options)
    {
        $('#loader').show();

        var errors = false;
        var email = $("#forgot_password input[name=userEmail]").val();
        var captcha = $("#forgot_password input[name=captcha]").val();

        if (!email[0]) {
            $('#email_err').fadeIn(500, function () {});
            errors = true;
        }else{
            $('#email_err').fadeOut(500, function () {});
        }

        if (!captcha[0]) {
            $('#captcha_err').fadeIn(500, function () {});
            errors = true;
        }else{
            $('#captcha_err').fadeOut(500, function () {});
        }

        if(!errors){
            return true;
        }else{
            $('#loader').hide();
            return false;
        }
    }

    /////////////////////////////////// create new password
    $('#create_new_password').ajaxForm({
            // beforeSubmit: forgotPassValidate,
            target: '#resultTarget',
            dataType: 'json',
            success: function(data) {
                $('#loader').hide();
                if(data.success == '1'){
                    $('#create_new_password').hide();
                }
                $('#resultTarget').html('<br /><h3>'+data.msg+'</h3>');
                $('#resultTarget').fadeIn('slow');
            }
    });

    /////////////////////////////////// initial setup
    $('#initial_setup').ajaxForm({
                beforeSubmit: initialSetupValidate,
                target: '#resultTarget',
                success: function() {
                     $('#initial_setup').hide();
                     $('#resultTarget').fadeIn('slow');
                     hideLoader();
                 }
    });


    function initialSetupValidate(formData, jqForm, options)
    {
        //addLoader();

        var errors = false;
        var image = new Array();
        image = $(".MultiFile-label").html();
        
        if (image == undefined || !image[0]) {
            $('#img_error').fadeIn(500, function () {});
            errors = true;
        }else{
            $('#email_err').fadeOut(500, function () {});
        }

        if(!errors){
            return true;
        }
            //hideLoader();
            return false;
        
    }


    function hideLoader()
    {
        $('#loader').hide();
    }

    ////////////////////////////////////////////////////////
    /////////////       VARIOUS         ////////////////////
    ////////////////////////////////////////////////////////

     $('#img_upload').MultiFile({
                    max: 5,
                    accept: 'gif|jpg|png',
                    list: '#img_upload-list',
                    STRING: {
                        file: '<em class="img_item" title="Click to remove" onclick="$(this).parent().prev().click()">$file</em>',
                        remove: '<img src="/assets/img/cross.png" height="16" width="16" alt="x"/>'
                        }
                });

    


    ////////////////////////////////////////////////////////
    //////////////      Locations        ///////////////////
    ////////////////////////////////////////////////////////

    

    $('#countryId').change(function ()
    {
        $('#cites_loader').show();
        var countryId = $('#sign_up select[name=countryId]').val();
        if(countryId){
            $('#countryId').removeClass('err'); // country is chosen
            // check weather to load regions or not
            $.ajax({
                type:       "GET",
                //cache:      false,
                url:        '/locations/check_city_regions/'+countryId,
                dataType:   "html",
                success:    function(data) {
                    if(data.toString() == 'true'){
                        // loading regions first
                        $('#cityId').html("");
                        $('#regions_div').show();
                        loadRegions(countryId);
                    } else {
                        $('#regionId').html('');
                        $('#regions_div').hide();
                        loadCities(countryId, '');
                        $('#cityId').removeClass('err');
                    }
                    //window.console.log(data.toString());
                }
            });
        // country is not chosen
        } else {
            $('#countryId').addClass('err');
            $('#cityId').html("");
            $('#regionId').html("");
            $('#cites_loader').hide();
        }
    });

    // regions select list listener
    $('#regionId').change(function () {
        $('#cites_loader2').show();
        var countryId = $('#sign_up select[name=countryId]').val();
        var regionId = $('#sign_up select[name=regionId]').val();

        if(countryId && regionId){
            $('#regionId').removeClass('err'); // region is chosen
            loadCities(countryId, regionId);
        } else {
            $('#regionId').addClass('err'); // region is not chosen
            $('#cityId').html("");
            $('#cites_loader').hide();
            $('#cites_loader2').hide();
        }
        
    });

    $('#cityId').change(function () {
        var cityId = $('#sign_up select[name=cityId]').val();
        if(cityId){
            $('#cityId').removeClass('err');
        }
    });

    $('#show_coutry_list').click(function(event){
        event.preventDefault();
        $(this).parent().parent().fadeOut('slow');
        $(this).parent().parent().prev().fadeIn('fast');
    });

    $('#show_detected_city').click(function(event){
        event.preventDefault();
        $(this).parent().fadeOut('slow');
        $(this).parent().next().fadeIn('fast');
    });

    ///////////////////////////////
    function loadRegions(countryId)
    {

        $.ajax({
            type:       "GET",
            //cache:      false,
            url:        '/locations/regions/'+countryId,
            dataType:   "html",
            success:    function(data) {

                $('#regionId').html(data);
                $('#cites_loader').hide();
            }
        });
    }
    //////////////////////////////////
    function loadCities(countryId, regionId)
    {
        var params;

        if(regionId[0] != null){
            params = countryId + '/' + regionId;
        } else {
            params = countryId;
        }

        $.ajax({
            type:       "GET",
            //cache:      false,
            url:        '/locations/cities/'+params,
            dataType:   "html",
            success:    function(data) {

                $('#cityId').html(data);
                $('#cites_loader').hide();
                $('#cites_loader2').hide();
            }
        });
    }


    ///////////////////////////////////////////////////////
    /////////////       jQuery plugin       ///////////////
    ///////////////////////////////////////////////////////
    $(".custom_tooltip").tooltip({
            // place tooltip on the right edge
            position: "center right",
            // a little tweaking of the position
            offset: [-2, 10],
            // use the built-in fadeIn/fadeOut effect
            effect: "fade",
            // custom opacity setting
            opacity: 0.9

    });

    $("a.overlay_triger[rel]").overlay({
        mask: '#fff'
    });

 }); // end of document ready



///////////////////////////////////////////////////////////////
/////////   Functions outside document ready    ///////////////
///////////////////////////////////////////////////////////////

    // check captcha
    function captcha_validate(arg)
    {
        if(arg[0]){
            $.ajax({
              type: "GET",
              url: '/welcome/check_captcha/'+arg,
              dataType: "html",
              success: function(data) {
                  if(!data[0]){
                      $('.captcha_code').addClass('red');
                  } else {
                      $('.captcha_code').addClass('green');
                  }
              }
            });
        } else {
            $('.captcha_code').removeClass('red');
            $('.captcha_code').removeClass('green');
        }

        
    }

    /* ------------------------------------------------------------------------------------
                                    Chat bodylist
     ------------------------------------------------------------------------------------ */

     function bodylist()
     {
            $.ajax({
                type: "GET",
                url: '/chat/bodylist/',
                dataType: "html",
                //cache: false,
                success: function(data) {
                    $('#bodylist').html(data);
                }
            });
            setTimeout(bodylist, 60000);
     }

     /* -----------------------------------------------------------------------------------
                                    Notifications
     ------------------------------------------------------------------------------------ */

     // load_notificaions();

     function load_notificaions()
     {
            $.ajax({
                type: "GET",
                url: '/search/load_notifications/',
                dataType: "html",
                success: function(data) {
                    $('#main').append(data);
                }
            });
            setTimeout(load_notificaions, 30000);
     }
