var images = ['an_basket.gif', 'bookmark_an.gif', 'basket.gif', 'on_basket.gif', 'bookmark.gif', 'bookmarked.gif'];
for (var i = 0, l = images.length; i < l; i++) {
  var im = new Image();
  im.src = jQuery.staticUrl('/siteimg/' + images[i]);
  images = images.concat(im);
}

Site = {
  User : function(id)
  {
    this.User = id;
    this.ActivateFilters(id);
  },
  ActivateFilters: function(id) {
	  if(!$('#filter').length) return;
	  var mF = '<div id="myFilters" class="userFilter"><a>мои фильтры</a></div>';
	  var sF = '<div id="saveFilter" class="userFilter"><a>+ сохранить фильтр</a></div>';
	  if(id) {
		  $.headJS('/js/my-filters.js', function() {
			  $('#filter .opcl').before(sF+mF);
			  MyFilters.activate('#myFilters', '/json.user.filters');
			  SaveFilter.activate('#saveFilter');
		  });
	  } else {
		  $('#filter .opcl').before('<div id="closedFilters">'+mF+'</div>');
		  $('#myFilters').click(function() {
			 AuthPlease($('#myFilters'), 'воспользоваться сервисом &laquo;Мои фильтры&raquo;', 120);
		  });
	  }
  },
  Bookmark : function(elem, basket)
  {
    var i = {
      loader : jQuery.staticUrl( basket ? '/siteimg/an_basket.gif' : '/siteimg/bookmark_an.gif'),
      remove : {
        icon : jQuery.staticUrl(basket ? '/siteimg/on_basket.gif' : '/siteimg/bookmarked.gif'),
        text : basket ? 'Убрать из корзины товаров' : 'Убрать из моего блокнота'},
      mark   : {
        icon : jQuery.staticUrl(basket ? '/siteimg/basket.gif' : '/siteimg/bookmark.gif'),
        text : basket ? 'Добавить в корзину товаров' : 'Добавить в мой блокнот'},
      counter: basket ? '#topAuth .account .basket .count' : '#topAuth .account .notepad .count'
    }

    if (!this.User) {
    	if (!basket) {
    	  AuthPlease($(elem), basket);
    	  return false;
    	}
    }

    
    //if (this.User) { ~ta 17.12.2009
      var url = $(elem).attr('href');
      if (url.indexOf('#') == 0) {
        url = url.replace(/#/, '');
      } else {
        url = url.replace(/\/#/, '/');
        url = url.replace(/#/, '/');
      }

      $(elem).find('img').attr('src', i.loader);
      $(elem).addClass('loading');

      var slices = url.split('/');
      do {
        var slice = slices.pop();
      } while (!slice);
      
      $.getJSON(url, {json:1}, function(json){
        $(elem).removeClass('loading');
    	  //console.info(json);
        if (json[0]) {
          if (json[1] == 'bookmarked') {
            $(elem).find('img').attr('src', i.remove.icon);
            $(elem).find('img').attr('title', i.remove.text);
            $(elem).find('img').attr('alt', '-');
            var action = 'unmark';
            $(elem).addClass('carted');
          }
          if (json[1] == 'unmarked') {
            $(elem).find('img').attr('src', i.mark.icon);
            $(elem).find('img').attr('title', i.mark.text);
            $(elem).find('img').attr('alt', '+');
            var action = 'bookmark';
            $(elem).removeClass('carted');
          }
          if(json.firstvisit){
        	  $("body").append(json.firstvisit);
        	  $('#basketContainer, #popup-window .popup-body-content').empty();
        	  $('#firstVisit').popup({title:'Товар добавлен в &laquo;Мои покупки&raquo;', form:false, width:350, height:220, overflow:'hidden', modal:true});
          }   
          //console.info(Site.User);
          if (!Site.User) {
        	  
        	  //~ta счётчик товаров для неавториз. пользователя
        	  $('#topAuth li:last').html('<a href="/account/basket/">Мои покупки ('+json.countGoodsVirtualBasket+')</a>');
          }
          $(i.counter).text(json.bookmarks);
          $(elem).attr('href', slices.join('/') + '#' + action);
        }
      });
//    } else { ~ta 17.12.2009
//      AuthPlease($(elem), basket ? 'воспользоваться сервисом &laquo;Мои покупки&raquo;' : false);
//    }

    return false;
  },
  Fave : function(elem)
  {
    if (!this.User) {
	  AuthPlease($(elem));
	  return false;
    }

	  var url = $(elem).attr('href');
	  if (url.indexOf('#') == 0) {
	    url = url.replace(/#/, '');
	  } else {
	    url = url.replace(/\/#/, '/');
	    url = url.replace(/#/, '/');
	  }
	  
	  var actions = ['bookmark', 'unmark'];
      var slices = url.split('/'), slice;
      do { slice = slices.pop(); } while (!slice);
      
      $.getJSON(url, {json:1}, function(json){
    	  if (!json[0] && !(json[1] == 'bookmarked' || json[1] == 'unmarked')) return;
    	  
    	  var action = json[1].substr(0, json[1].length-2);
    	  if(action != actions[0]) actions.reverse();
    	  
    	  $(elem).removeClass('fave-' + actions[0]);
    	  $(elem).addClass('fave-' + actions[1]);
    	  
	      $('#topAuth .account .notepad .count').text(json.bookmarks);
	      $(elem).attr('href', slices.join('/') + '#' + actions[1]);
      });
    return false;
  },
  Like: function(elem) {
	if (!this.User) {
		AuthPlease($(elem), 'оценить этот пост');
		return false;
	}
	
	var $like = $(elem).parents('.like');
	var like_value = $like.attr("value"); // Class|ID
	if(!like_value) return false;
	
	var like_vals = like_value.split('|');
	var item_class_name = like_vals[0];
	var item_id = like_vals[1];
	var vote = $(elem).hasClass('control_increment') ? 1 : -1;
	
	$.getJSON('/dosug/', { class_name: item_class_name, id: item_id, vote: vote }, function(json) {
		if(json.status) {
			var new_like_count = (1 * $like.find('.like_count span').html()) + vote;
			var new_like_state = vote>0 ? 'like_positive' : 'like_negative';
			
			$like.removeClass('likeActive');
			$like.addClass('likeInactive');
			$like.find('.like_count').addClass(new_like_state);
			$like.find('.like_count span').html(new_like_count);
		}
	});	
	return false;
  },
  Basket : function(elem)
  {
    return Site.Bookmark(elem, true);
  },
  Print : function(elem)
  {
    var href = $(elem).attr('href').split('#')[0];

    var uri = href.split('?')[0];
    var attrs = href.split('?')[1];

    if (attrs) {
      attrs = attrs + '&printable';
    } else {
      attrs = '?printable';
    }

    //console.info('Print invoke %o', uri + attrs);

    var pr = window.open(uri + attrs, 'printable', 'width=800,height=600,scrollbars=yes');
    pr.focus();
    return false;
  },
  AreYouSure : function(text, params)
  {
    $('#popup-window .popup-body-content').empty();

    var width = params.width || 275;
    var height = params.height || 75;

    $('body').append('' +
      '<form action="" method="post">' +
      '<div class="are-you-sure">' +
        '<div class="dl-dt-dd">' + text + '</div>' +
      '</div>' +
      '</form>');
    $.each(params.buttons, function(i, item){
//      //console.info(i, item);
      $('.are-you-sure .dl-dt-dd').append('<a class="button ' + i + ' button-blue" href="' + i + '"><span>' + item.caption + '</span></a>');
      $('.are-you-sure .dl-dt-dd .' + i).click(item.callback ? function(){
        return item.callback();
      } : function(){
        $('.are-you-sure').popup('hide');
        return false;
      });
    });

    $('.are-you-sure').popup({title:'Подтверждение', form:true, width:width, height:height, overflow:'hidden', modal:false});
  },
  SearchDefaultText: false,
  SearchBox : function(elem, focus) {
	  focus = !!focus;
	  var value = elem.value;
	  
	  if(false === this.SearchDefaultText)
		  this.SearchDefaultText = value;
	  
	  var isDefaultVal = this.SearchDefaultText == value;
	  
	  if(focus) {
		  if(isDefaultVal) {
			  elem.value = '';
			  elem.style.color = '#373737';
			  elem.style.borderColor = '#939393';
		  }
	  } else {
		  if(!value) {
			  elem.value = this.SearchDefaultText;
			  elem.style.color = '#929292';
			  elem.style.borderColor = '#a5a5a5';
		}
	  }
	  return false;
  }
}

/**
 * Функции для работы с cookies
 */
function setCookie(name, value, path, exp_min) {
	if(typeof(path) == 'undefined') path = '/';
	if(typeof(exp_min) == 'undefined') exp_min = 60;
	document.cookie = name + "=0; max-age=0";
	var cookie = name + "=" + value + "; max-age=" + exp_min *60;
	cookie += "; path=" + path;
	document.cookie = cookie;
}

function getCookie(name) {
	var allcookies = document.cookie;
	var str_to_find = name + '=';
	var pos = allcookies.indexOf(str_to_find);
	if (pos !=-1) {
		var start = pos + str_to_find.length;
		var end = allcookies.indexOf(';',start);
		if (end==-1) end = allcookies.length;
		var value = allcookies.substring(start,end);
	} else value = -1;
	return value;
}
