//(function () {

var change_name_visible_hint = function() {
	var $name_visible = $('#id_name_visible_span');
	if ($name_visible.html() != null) {
		var hint_span = $name_visible.parent().find('span.newHint'),
			checkbox = $('#id_name_visible');
     	if (checkbox.attr('checked')) {
     		hint_span.text("Contact data will be visible in your ad details. Please consider your privacy");
     	} else {
     		hint_span.text("First and last name will not be visible in your ad details");
     	}
    }
};

function paa_make_login_next_button() {
    if (!('enable_paa_login_next_button' in window)) return;
    if ($('#loginfields-new.ajax_reload_post').size()) {
      var b = make_post_button(
        $('#loginfields-new.ajax_reload_post'), 'Next', false,
        $('#loginfields-new.ajax_reload_post #id_email_span'), /*fake=*/true);
    }
}

/*
    import_script is depreciated, use javascript from above instead:

    <script type="text/javascript">
        SENSI_PLUGINS.push({
            name: 'dynamicLibLoad',
            options: {
                src: '[[ your_path_to_script ]]'
            }
        });
    </script>
*/
function import_script(script_name) {
  // DEPRECIATED, LOOK AT COMMENT ABOVE OF THAT FUNCTION
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = script_name;
  document.getElementsByTagName('head')[0].appendChild(script);
}

var FADING = {};
function do_fading(element) {
  var ran = Math.random();
  FADING[ran] = true;
  var fading = true;
  function fade() {
    fading = !fading;
    if (FADING[ran])
      element.fadeTo('slow', fading && 0.33 || 0.66, fade);
  }
  element.fadeTo('slow', 0.33, fade);
}
function end_fading(fading) {
  FADING[fading] = false;
}

function move_error_lists() {
  var content = $('#form_errors_content').hide().html('');
  if(!content.length) return;
  $('.form_errors_movable').each(function () {
				   content.append($(this).html());
				 });
  content.show();
  if (content.html().replace(/\s+/, ''))
    $('#form_errors').show();
  else
    $('#form_errors').hide();
}

function reload_post(elements, post, search) {
  if(!('length' in elements)) {
      var elements = [elements];
  }
  var ids = [], ok_elements = [];
  $(elements).each(function() {
      var id = $(this).attr('id');
      if(!id) return;
      if (id.substr(0, 4) == 'cfg_')
        id = id.substring(4);
      ids.push(id)
      ok_elements.push($(this));
  });

  if (ok_elements.length == 0) {
    return;
  } else if (ok_elements.length == 1) {
    dataType = 'html'
  } else {
    dataType = 'json';
  }

  var url = './?next_step=none&xhr=' + ids.join(',') + search;
  $.post(url, post,
    function(data) {
      // do all fading after data is received
      var fadings = [];
      $(ok_elements).each(function() {
        fadings.push(do_fading(this));
      });
      var timeout = 300;
      setTimeout(function () {
        if(typeof(data) == 'string') data = [data];
        $(fadings).each(function() {
            end_fading(this);
        });
        var $contest_specific_element = $('div[class^=contest_description_box]')
        for(i in data) {
                var element = ok_elements[i];
                var button = element.children('button:last');
                var elid = element.attr('id');
                if('process_paa_post_data' in window) {
                    if(!process_paa_post_data(elid, data[i])) {
                        return;
                    }
                }
                var newElem = $(data[i]);
                element.empty().replaceWith(newElem);
                paa_make_login_next_button();
                if('enable_ajax_validation' in window) { 
                    enable_ajax_validation(newElem);
                    setTimeout(function() {
                        enable_ajax_validation(newElem);
                    }, 500);
                }
                if($('.do_remind_password_onclick').length) {
                    $('a[href="/accounts/remind_password/"]').click(function() {
                        popup.showPopup('remind_form_layer');
                        return false;
                    });

                }
                move_error_lists();
                if (elid == 'loginfields' || 
                      elid == 'loginfields-new' || 
                      elid == 'loginfields-edit' || 
                      elid == 'loginfields-renew') { // TODO: move to login form
              set_email_blur();
              if ($('#'+elid+'.ajax_reload_post').size()) {
                // this if is used to hide 'Next' button in contests
                if ($contest_specific_element.html() != null) {
                  $('#id_email_span').find('button').hide();
                }
                // end of hiding
                var b = make_post_button(
                  $('#'+elid+'.ajax_reload_post'), trans('Log in'), false,
                  $('#'+elid+'.ajax_reload_post #id_password_span'));
                $('#id_password').keypress(function (e) {
                  if (e.which == 13) {
                    b.click();
                    e.preventDefault();
                  }
                });
                if (!b.length && 'enable_paa_login_next_button' in window) {
                    paa_make_login_next_button();
                    var wrap = $('#'+elid+'.ajax_reload_post #id_extend_my_profile_label').wrap('<div style="display:inline"></div>').parent();
                    make_post_button(
                      $('#'+elid+'.ajax_reload_post'), 'Continue', false,
                      wrap);
                }
              }
                }
          var $name_visible = $('#id_name_visible_span');
          if ($name_visible.html() != null) { 
          	if ($name_visible.parent().find('.newHint').html() == null) { 
        			$name_visible.next().after('<span class="newHint"></span>');
          		change_name_visible_hint();
          		$('#id_name_visible').click(function() { change_name_visible_hint(); });
          	}
          }
          // #19315 this one triggers contest specific event, which is needed because 
          // contest form is the same as the ad placement one, but it is not needed as a whole
	      if ($contest_specific_element.html() != null) {
	      	$contest_specific_element.trigger('hide_unwanted_fields')
	      }
        }
        $(document).trigger('reload_post_finished');
      }, timeout);
    }, dataType);
}

function reload_get(element, search) {
  var element = $(element);
  var fading = do_fading(element);
  $.get('.' + search, { xhr: element.attr('id') },
    function(data) {
      end_fading(fading);
      var newElem = $(data);
      element.replaceWith(newElem);
      set_email_blur();
      if('enable_ajax_validation' in window) { 
          enable_ajax_validation(newElem);
          setTimeout(function() {
              enable_ajax_validation(newElem);
          }, 500);
      }
      var elid = element.attr('id');
      if (elid == 'loginfields-new') { // TODO: move to login form
          paa_make_login_next_button();
      }
    });
}

/*
 * submit_advert_form have to be removed, it's sensless all it's do is to remove elements 
 * (inputs, radios and a like) that are appended to a div and add them to form tag that is 
 * several lines below, its slows everything add extra layer of complication and have no 
 * other (or at least I dont see it) purpose. Below function whih stripped all sensless
 * operations and hacks, as one can see it does almost absolutely nothing, and it's good
 * reason to remove it in long run.
 */

/*

Function after stripping junk:

function submit_advert_form() {
    jQuery.fx.off = false;

    $('#advert_form').submit();

    $('#content,.loaderContainer').append($('<img class="ajaxLoader" src="' + AJAX_LOADER_BIG_IMG_URL + '"/>')); // doesn't work!!!

    return false;
}

*/


function submit_advert_form() {
  // this function is to be removed in long term
  jQuery.fx.off = false;
  if ($('.ajax_reload_post').size() || ($('.ajax_reload_get').size())) {
    $('#advert_form').submit();
    return false;
  }
  $('.main_column').hide('fast',
  function () {
    // get loader (it was removed in 6c02007, ask that guy)
    var AJAX_LOADER_BIG_IMG_URL = AJAX_LOADER_BIG_IMG_URL ||
                                  $('img.paaLoader').attr('src');

    $('#content,.loaderContainer').append($('<img class="ajaxLoader" src="' + AJAX_LOADER_BIG_IMG_URL + '"/>')); // doesn't work!!!
    // The ugliest hack I've ever seen [mj]: me too; just sorrow [GS]
    try {
    var category_val = $('#advert_form_content [name=category]:last').val();
    var inputs=[];//[[name,value]]
	
    $('#advert_form_content input').each( function(){
	  if (this.type == 'radio' || this.type == 'checkbox') {
		if (this.checked == true)  {
		  inputs.push([$(this).attr('name'), $(this).val()]);
		}
	  } else {
		inputs.push([$(this).attr('name'), $(this).val()]);
	  }
    })

    $('#advert_form_content').children(':not([name="next"],form)').each(
      function() {
	    $('#advert_form').append($(this));
      });
    var i = inputs.length;
    var el;
    while(i--){
        var a =$('#advert_form [name="' + inputs[i][0] + '"]');
        a.remove();
        el  = $('<input type="hidden" name="'+inputs[i][0]+'" />');
        el[0].value = inputs[i][1]
       $('#advert_form').append(el);
    }
    if (category_val) {
      $('#advert_form [name="category"]').remove();
      $('#advert_form').append('<input type="hidden" name="category" value="' +
                               category_val + '" />');
    }
    // Chrome bug: If we won't hide form here it will appear visible despite the fact that its container (.main_column) is hidden.
    $('#advert_form').hide().submit();
    } catch(e){}
  });
  return false;
}

function create_post(element, post) {
  if(post === undefined)  {
      var post = {};
  }
  $(element).find(':input:not(:checkbox),:checkbox:checked').each(
    function() {
      post[$(this).attr('name')] = $(this).val();
    });
  $(element).find('select > option:selected').each(
    function() {
      post[$(this).parent().attr('name')] = $(this).val();
    });
  return post;
}

function make_post_button(reload_form, label, reset, attach_to, fake) {
    var search = location.search.replace(/\?/, '&');
    var button = $('<button class="submit_button" type="button"><span>(</span>'+label+'<span>)</span></button>');
    if (attach_to) {
        if(attach_to.children('button.submit_button').length < 1) {
            attach_to.append(button);
        }
    } else {
        reload_form.append(button);
    }
    if(fake) { 
        return button;
    }
    button.click(function () {
        var post = {};
        if (!reset) {
            post = create_post(reload_form);
        }
        reload_post(reload_form, post, search);
    });
    return button;
}

var email_form_locked = -1;

$(document).bind('reload_post_finished', function () {
    unlock_email_form();
});

var lock_email_form = function () {
    email_form_locked = true;
}

var unlock_email_form = function () {
    email_form_locked = false;
}

var is_email_form_locked = function () {
    return (email_form_locked === true) ? true : false;
}

unlock_email_form();

function set_email_blur() {

    submit_email = function () {
        if(!is_email_form_locked()) {
            lock_email_form();
        }

        if ($(this).val()) {
            var search = location.search.replace(/\?/, '&');
            $(this).parents('.ajax_reload_post').each(function () {
                var post = create_post(this);
                reload_post(this, post, search);
            });
        }
    };

    var email = $('.cfg_contactmanipulator_email #id_email, .cfg_contactmanipulator_registeruser #id_email');

    email.blur(submit_email);

    email.keypress(function (e) {
        if (e.which == 13) {
            if (!is_email_form_locked()) {
                lock_email_form();
                setTimeout(function() {
                    submit_email.apply(email[0]);
                }, 25);
            }
            e.preventDefault();
            return false;
        }
    });


    if (!$('.cfg_contactmanipulator_login #id_email').parents().filter('fieldset.error').length>0) {
        $('.cfg_contactmanipulator_login #id_email').attr('readonly', true).addClass('disabled');
    };

    $('.cfg_contactmanipulator_login #id_password').focus();
    $('.cfg_contactmanipulator_userlogged #id_email').attr('readonly', true).addClass('disabled');
    
    if (!$('.cfg_contactmanipulator_registeruser #id_email').parents().filter('fieldset.error').length>0) {
        $('.cfg_contactmanipulator_registeruser #id_email').attr('readonly', true).addClass('disabled');
    };

    $('.cfg_contactmanipulator_loginextend #id_email').attr('readonly', true).addClass('disabled');
}

function remove_all_errors() {
  $('#form_errors').hide();
  $('.errorlist').remove();
  $('.formfield.error').removeClass('error');
  $('#form_errors_content').empty();
  $('.form_errors_movable').empty();
}

$(document).ready(function() {
    // this click line below has to be removed in long run
    $('#continue_button,#continue_button_payment,#edit_button').click(submit_advert_form);
    $('#advert_form').submit(function() {
        var search = location.search.replace(/\?/, '&');
        var reloaded = false;
        if ($('.ajax_reload_post').size() || $('.ajax_reload_get').size()) {
            remove_all_errors();
        }
        if ($('.ajax_reload_post').size()) {
            var post = {};
            var elements = [];
            $('.ajax_reload_post, .ajax_reload_post_maybe').each(function () {
                if($(this).parents('.ajax_reload_post, .ajax_reload_post_maybe').size()) {
                    return;
                }
                create_post(this, post);
                elements.push(this);
            });
            reload_post(elements, post, search);
            reloaded = true;
        }
        if ($('.ajax_reload_get').size()) {
            var search = '/' + location.search;
            $('.ajax_reload_get').each(function() {
                reload_get(this, search);
            });
            reloaded = true;
        }
        if (reloaded) {
            return false;
        }
        return true;
    });
    set_email_blur();
    paa_make_login_next_button();
    $('#id_category').focus();
});


//})();

// Enable back button hint. SEE: possible_redirect_on_advert_creation
var next_step_re = /^#next-step:/;
if (window.location.hash.match(next_step_re)) {
    var url = '../'+window.location.hash.replace(next_step_re, '');
    window.setInterval(function() {$('body').hide(); }, 10); // document probalby not ready but don't want to show this page
    window.location.hash = '#paa'; // For the browser history. No redirect on that.
    $(document).ready(function() { // on document.ready to make a mark in history.
        window.location.assign(url);
    });
}

function sync_ajax(action, submanipulator, data) {
    $.ajax({
        async: false,
        type: 'POST',
        url: action+'/?xhr='+submanipulator+'-'+action,
        data: data
    });
}

$(document).ready(function() {
	var $name_visible = $('#id_name_visible_span')
	if ($name_visible.html() != null)  {
		$name_visible.next().after('<span class="newHint"></span>');
    	change_name_visible_hint();
    	$('#id_name_visible').click(function() { change_name_visible_hint(); });
    }
});

