var ulbox_id = '';
var divbox_id = '';

function get_country_cities(id, rel) {
   var added = ( rel ) ? '-'+rel : '';
   $('#reg-city-id'+added+' option').remove();
   $('#reg-city-id'+added).append('<option value="0">Идет загрузка...</option>');
   $.post(
      '/acchelper/get_country_cities/',
      'country_id=' + id,
      function ( data ) {
         $('#reg-city-id'+added+' option').remove();
         for (var i=0; i<data.length; i++) {
            $('#reg-city-id'+added).append('<option value="'+data[i].id+'">'+data[i].name+'</option>');
         }
      },
      "json"
      );
}

/**
 * Ajax Form Submitter
 */
$(document).ready(function() {
   $('.reg-ajaxform').submit(function() {
      if ( !stop ) {
         stop = true;
         userAction('popup-indicator');
         var id = this.id.substr(5);
         var options = {
            target:   '#'+id,
            url:        this.action,
            success:    function(responseText) {
               if ( responseText.indexOf('redirect:') != -1 ) {
                  $(this).remove();
                  var redirect = responseText.split(':');
                  document.location = redirect[1];
                  return false;
               }

               if ( jQuery(".reg-countries") ) {
                  jQuery(".reg-countries").change(function() {
                     get_country_cities(this.value)
                  })
               }

               closePopup('popup-indicator');

               stop = false;
            }
         };
         // submit the form
         $(this).ajaxSubmit(options);
         // return false to prevent normal browser submit and page navigation
         return false;
      }
   });
});

/**
 * Get country cities
 */
$(document).ready(function() {
   jQuery(".reg-countries").change(function() {
      get_country_cities(this.value, $(this).attr('rel'))
   })
});

/**
 * Settings tabs switcher
 */
$(document).ready(function() {
   jQuery(".setup-tabs-links a").click(function() {
      var uri_parts = this.href.split('/');
      var tab = uri_parts[uri_parts.length-2];

      var classes = {
         'register': 'reg',
         'private': '',
         'contacts': '',
         'interests': '',
         'privacy': 'private'
      };

      if ( tab ) {
         $('.service-message').css('display', 'block');
         $('#form_content-container').attr('action','/modules/settings/'+tab+'/');
         jQuery(".setup-tabs-links li").removeClass('active');
         $(this).parent('li').addClass('active');

         $.get('/modules/settings/'+tab+'/', function(data) {
            $('#content-container').attr('class', 'setup-' + classes[tab]);
            $('#content-container').html(data);
            $('.service-message').css('display', 'none');
         });
      }

      return false;
   })
});

/**
 * Changing status
 */
var status_saved = false;
$(document).ready(function() {
   jQuery(".status-window-body textarea#status-text").focus(function() {
      status_saved = false;
      return false;
   })
});

$(document).ready(function() {
   jQuery(".status-window-body textarea#status-text").blur(function() {
      if ( !stop && !status_saved ) {
         $('.service-message').css('display', 'block');
         stop = true;
         $.post(
            '/acchelper/change_status/',
            {'status': $(this).val()},
            function( data ) {
               if ( data == '' ) $(".status").css('display', 'none');
               else $(".status").css('display', 'block');
               if ( $(".status-change") ) $(".status-change").html(data);
               $('.service-message').css('display', 'none');
               userAction('status-saved');
               setTimer('status-saved','2s');
               stop = false;
            },
            ''
            );
      }
      return false;
   })
});

$(document).ready(function() {
   jQuery(".status-window-body textarea#status-text").keydown(function(e) {
      if (e.keyCode == 13) {
         $('.service-message').css('display', 'block');
         $.post(
            '/acchelper/change_status/',
            {'status': $(this).val()},
            function( data ) {
               if ( data == '' ) $(".status").css('display', 'none');
               else $(".status").css('display', 'block');
               if ( $(".status-change") ) $(".status-change").html(data);
               hideObject('status-window');
               $('.service-message').css('display', 'none');
               userAction('status-saved');
               setTimer('status-saved','2s');
               status_saved = true;
            },
            ''
            );
         return false;
      }
   })
});

$(document).ready(function() {
   jQuery(".status-window-body input#status-romance").click(function(e) {
      var status = ( $(this).attr('checked') ) ? 1 : 0;
         $.post(
            '/acchelper/change_status_romance/',
            {'status': status},
            function( data ) {
            },
            ''
            );
   })
});

$(document).ready(function() {
   $('.groups-ajaxform').submit(function() {
      if ( !stop ) {
         stop = true;
         closePopup('popup-edit-groups');
         userAction('popup-indicator');
         var id = this.id.substr(5);
         var options = {
            target:   '#'+id,
            url:        this.action,
            success:    function(responseText) {
               $.get('/modules/friends/my/?'+query_string, function(data) {
                  $('#content-container').html(data);
               });

               $.get('/modules/friends/groups_list/', function(data) {
                  $('#friends-groups-menu').html(data);
               });
               closePopup('popup-indicator');
               userAction('groups-saved');
               setTimer('groups-saved','2s');
               stop = false;
            }
         };
         // submit the form
         $(this).ajaxSubmit(options);
         // return false to prevent normal browser submit and page navigation
         return false;
      }
   });
});

function country_arrow_click(obj) {
   $('div.combobox-list').html('');
   divbox_id = '';
   var idarr = obj.id.split('_');
   var id = idarr[0];
   //$('#'+id+'_countries').val('');
   if (ulbox_id != id) {
      $('.'+ulbox_id+'countrylist').html('');
      ulbox_id = id;
      $('ul.'+ulbox_id+'countrylist').css('display', 'block');
      $('.service-message').css('display', 'block');
      $.get('/accgethelper/get_autocomplete/?object_name=country', function(data) {
         $('.'+id+'countrylist').html(data);
         $('.'+id+'countrylist'+' a').click(function() {
            $('#'+id+'_country_b').attr('rel', $(this).attr('rel'));
            $('#'+id+'_countries').val($(this).html());
            $('.'+id+'countrylist').html('');
            $('.'+ulbox_id+'countrylist').css('display', 'none');
            $('#'+id+'_cities').val('');
            $('#'+id+'_cities').unbind();
            city_acs($('#'+id+'_cities'));
            set_default_ac_value($('#'+id+'_cities'));
            return false;
         });
         $('.service-message').css('display', 'none');
      });

      $(document).bind("click", function(e){
         if(
            ($(e.target).is('a[onclick*="'+id+'countrylist'+'"]'))||
            ($(e.target).parents().is('a[onclick*="'+id+'countrylist'+'"]'))||
            ($(e.target).parents().is('.'+id+'countrylist'))
            )
            {
            return
         }
         else {
            $('.'+id+'countrylist').html('');
            $('ul.'+ulbox_id+'countrylist').css('display', 'none');
            ulbox_id = '';
         }
      });
   }
   else {
      $('.'+ulbox_id+'countrylist').html('');
      $('ul.'+ulbox_id+'countrylist').css('display', 'none');
      ulbox_id = '';
   }

}

function city_arrow_click(obj) {
   $('div.combobox-list').html('');
   var idarr = obj.id.split('_');
   var id = idarr[0];
   var c_id = $('#'+id+'_country_b').attr('rel');
   $('#'+id+'_cities').val('');
   $('.service-message').css('display', 'block');
   $.get('/accgethelper/get_autocomplete/?object_name=city&key_value='+c_id, function(data) {
      $('.'+id+'citylist').html(data);
      $('.'+id+'citylist'+' a').click(function() {
         $('#'+id+'_city_b').attr('rel', $(this).attr('rel'));
         $('#'+id+'_cities').val($(this).html());
         $('.'+id+'citylist').html('');
         return false;
      });
      $('.service-message').css('display', 'none');
   });

}

function widgettheme_arrow_click(obj) {
   $('div.combobox-list').html('');
   divbox_id = '';
   var idarr = obj.id.split('_');
   var id = idarr[0];
   if (ulbox_id != id) {
      $('.'+ulbox_id+'widgetthemelist').html('');
      ulbox_id = id;
      $('ul.'+ulbox_id+'widgetthemelist').css('display', 'block');
      $('.service-message').css('display', 'block');
      $.get('/accgethelper/get_autocomplete/?object_name=widgettheme', function(data) {
         $('.'+id+'widgetthemelist').html(data);
         $('.'+id+'widgetthemelist'+' a').click(function() {
            $('#'+id+'_widgettheme_b').attr('rel', $(this).attr('rel'));
            $('#'+id+'_widgetthemes').val($(this).html());
            $('.'+id+'widgetthemelist').html('');
            $('.'+ulbox_id+'widgetthemelist').css('display', 'none');
            return false;
         });
         $('.service-message').css('display', 'none');
      });

      $(document).bind("click", function(e){
         if(
            ($(e.target).is('a[onclick*="'+id+'countrylist'+'"]'))||
            ($(e.target).parents().is('a[onclick*="'+id+'countrylist'+'"]'))||
            ($(e.target).parents().is('.'+id+'countrylist'))
            )
            {
            return
         }
         else {
            $('.'+id+'widgetthemelist').html('');
            $('ul.'+ulbox_id+'widgetthemelist').css('display', 'none');
            ulbox_id = '';
         }
      });
   }
   else {
      $('.'+ulbox_id+'widgetthemelist').html('');
      $('ul.'+ulbox_id+'widgetthemelist').css('display', 'none');
      ulbox_id = '';
   }

}


function country_acs(acs) {
   for (var i=0; i<acs.length; i++) {
      var ac = acs[i];
      var idarr = $(ac).attr('id').split('_');
      var id = idarr[0];
      var addclass = ($(ac).parent().attr('class').indexOf('land') > -1) ? ' land-list' : '';
      if ( typeof($(ac).autocomplete) != 'function' ) return false;
      $(ac).autocomplete('/accgethelper/get_autocomplete/', {
         resultsClass: id+"countrylist combobox-list"+addclass,
         cacheLength: 10,
         matchSubset: 1,
         formatItem: function(row, i, num) {
            $('ul.combobox-list').html('');
            ulbox_id = '';
            divbox_id = '';
            var result = '<a href="#" rel="'+row[1]+'">' + row[0] + '</a>';
            return result;
         },
         onItemSelect: function(li) {
            var idarr = li.extra[1].split('_');
            var id = idarr[0];
            $('#'+id+'_country_b').attr('rel', li.extra[0]);
            $('#'+id+'_cities').val('');
            $('#'+id+'_cities').unbind();
            city_acs($('#'+id+'_cities'));
            set_default_ac_value($('#'+id+'_cities'));
         },
         extraParams: {
            object_name:'country',
            el_id:id
         }
      });
   }

}

function city_acs(acs) {
   for (var i=0; i<acs.length; i++) {
      var ac = acs[i];
      var idarr = $(ac).attr('id').split('_');
      var id = idarr[0];
      var c_id = $('#'+id+'_country_b').attr('rel');
      var addclass = ($(ac).parent().attr('class').indexOf('land') > -1) ? ' land-list' : '';
      if ( typeof($(ac).autocomplete) != 'function' ) return false;
      $(ac).autocomplete('/accgethelper/get_autocomplete/', {
         resultsClass: id+"citylist combobox-list"+addclass,
         cacheLength: 10,
         matchSubset: 1,
         formatItem: function(row, i, num) {
            $('ul.combobox-list').html('');
            var result = '<a href="#" rel="'+row[1]+'">' + row[0] + '</a>';
            return result;
         },
         onItemSelect: function(li) {
            var idarr = li.extra[1].split('_');
            var id = idarr[0];
            $('#'+id+'_city_b').attr('rel', li.extra[0]);
         },
         extraParams: {
            object_name:'city',
            key_value: c_id,
            el_id:id
         }
      });
   }

}

function clear_rel(obj) {
   $(obj).parent().siblings('b').attr('rel','');
}

function widgettheme_acs(acs) {
   for (var i=0; i<acs.length; i++) {
      var ac = acs[i];
      var idarr = $(ac).attr('id').split('_');
      var id = idarr[0];
      var addclass = ' theme-list';
      $(ac).autocomplete('/accgethelper/get_autocomplete/', {
         resultsClass: id+"widgetthemelist combobox-list"+addclass,
         cacheLength: 10,
         matchSubset: 1,
         formatItem: function(row, i, num) {
            $('ul.combobox-list').html('');
            ulbox_id = '';
            divbox_id = '';
            var result = '<a href="#" rel="'+row[1]+'">' + row[0] + '</a>';
            return result;
         },
         onItemSelect: function(li) {
            var idarr = li.extra[1].split('_');
            var id = idarr[0];
            $('#'+id+'_widgettheme_b').attr('rel', li.extra[0]);
         },
         extraParams: {
            object_name:'widgettheme',
            el_id:id
         }
      });
   }

}

function get_default_ac_str(obj) {
   var country_str = 'Введите или выберите из списка';
   var city_str = 'Введите название';
   var theme_str = 'Введите название темы';

 if ( $(obj).attr('id').indexOf('countries') > -1 ) {
      return country_str;
   }
   else if ( $(obj).attr('id').indexOf('widgetthemes') > -1 ) {
      return theme_str;
   }
   else {
      return city_str;
   }
}

function def_val(objs)
{
	//console.log(objs);
	objs.focusin(function(){
           // console.log(this.defaultValue);
			if (this.value==this.defaultValue) { this.value = ''; }
            }).focusout(function(){
                if (this.value=='') { this.value = this.defaultValue; }
            });
}

function set_default_ac_value(objs) {
   for (var i=0; i<objs.length; i++) {
      var obj = objs[i];
      var str = get_default_ac_str(obj);
      if ($(obj).val() == '' || $(obj).val() == str) {
         $(obj).val(str);
         $(obj).blur(function() {
            var str = get_default_ac_str(this);
            var s = ($(this).val() == '' ) ? str : $(this).val();
            $(this).val(s);
         }).focus(function() {
            var str = get_default_ac_str(this);
            var s = ($(this).val() == str ) ? '' : $(this).val();
            $(this).val(s);
         });
      }
   }
}

function clear_default_ac_value(objs, rel_objs) {
   for (var i=0; i<objs.length; i++) {
      var obj = objs[i];
      $(obj).click(function() {
         var country_str = 'Введите или выберите из списка';
         var city_str = 'Введите название';
         var theme_str = 'Введите название темы';
         for (var j=0; j<rel_objs.length; j++) {
            var rel_obj = rel_objs[j];
            if ($(rel_obj).val() == country_str || $(rel_obj).val() == city_str || $(rel_obj).val() == theme_str) {
               $(rel_obj).val('');
            }
         }
         return true;
      });
   }
}

function setDataForMailMessage(a) {
         $.post(
            '/acchelper/check_user_blacklist/',
            'show_user_id=' + a.attr('rel'),
            function( data ) {
                 $(".mail-message .popup-message-content").html(data.text);
                 $(".mail-message .message-text a").attr('rel', data.id);
                 message_button_input_click();
            },
            'json'
            );
         //$(".mail-message .message-text a").attr('href', a.attr('href'));
         //$(".mail-message .message-text a").html(a.html());
         userAction('mail-message');
}

function setDataForAddComment(user_id) {
         $.post(
            '/acchelper/check_user_blacklist_comment/',
            'show_user_id=' + user_id,
            function( data ) {
                 $(".mail-message .popup-message-content").html(data.text);
                 //$(".mail-message .message-text a").attr('rel', data.id);
                 //message_button_input_click();
            },
            'json'
            );
         //$(".mail-message .message-text a").attr('href', a.attr('href'));
         //$(".mail-message .message-text a").html(a.html());
         userAction('mail-message');
}

//Display message for banned user
$(document).ready(function() {
    handleBanMessage();
});

function handleBanMessage() {
   $(".ban-link").attr('onclick','');
   jQuery(".ban-link").click(function(e) {
       e.stopImmediatePropagation();
       userAction('ban-message');
       return false;
   })
}

function in_array (needle, haystack, argStrict) {
    // Checks if the given value exists in the array
    //
    // version: 1004.2314
    // discuss at: http://phpjs.org/functions/in_array
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: vlado houba
    // +   input by: Billy
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // *     example 1: in_array('van', ['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: true
    // *     example 2: in_array('vlado', {0: 'Kevin', vlado: 'van', 1: 'Zonneveld'});
    // *     returns 2: false
    // *     example 3: in_array(1, ['1', '2', '3']);
    // *     returns 3: true
    // *     example 3: in_array(1, ['1', '2', '3'], false);
    // *     returns 3: true
    // *     example 4: in_array(1, ['1', '2', '3'], true);
    // *     returns 4: false
    var key = '', strict = !!argStrict;

    if (strict) {
        for (key in haystack) {
            if (haystack[key] === needle) {
                return true;
            }
        }
    } else {
        for (key in haystack) {
            if (haystack[key] == needle) {
                return true;
            }
        }
    }

    return false;
}

function wordwrap (str, int_width, str_break, cut) {
    // Wraps buffer to selected number of characters using string break char
    //
    // version: 1009.2513
    // discuss at: http://phpjs.org/functions/wordwrap    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Nick Callen
    // +    revised by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Sakimori    // +   bugfixed by: Michael Grier
    // *     example 1: wordwrap('Kevin van Zonneveld', 6, '|', true);
    // *     returns 1: 'Kevin |van |Zonnev|eld'
    // *     example 2: wordwrap('The quick brown fox jumped over the lazy dog.', 20, '\n');
    // *     returns 2: 'The quick brown fox \njumped over the lazy\n dog.'    // *     example 3: wordwrap('Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.');
    // *     returns 3: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod \ntempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim \nveniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea \ncommodo consequat.'
    // PHP Defaults
    var m = ((arguments.length >= 2) ? arguments[1] : 75   );
    var b = ((arguments.length >= 3) ? arguments[2] : "\n" );
    var c = ((arguments.length >= 4) ? arguments[3] : false);

    var i, j, l, s, r;

    str += '';
    if (m < 1) {
        return str;
    }
     for (i = -1, l = (r = str.split(/\r\n|\n|\r/)).length; ++i < l; r[i] += s) {
        for (s = r[i], r[i] = ""; s.length > m; r[i] += s.slice(0, j) + ((s = s.slice(j)).length ? b : "")){
            j = c == 2 || (j = s.slice(0, m + 1).match(/\S*(\s)?$/))[1] ? m : j.input.length - j[0].length || c == 1 && m || j.input.length + (j = s.slice(m).match(/^\S*/)).input.length;
        }
    }
    return r.join("\n");
}
