
jQuery.noConflict();

popupBanner = {};

popupBanner.banners = {};

popupBanner.defaultOptions = {
  stepX: 3,
  stepY: 3,
  startX: 0,
  startY: 0,
  centerH: true,
  centerV: true,
  stopOnMouseOver: true,
  showAgainAfterHours: null,
  interval: 50
};

popupBanner.show = function(bannerId, options) {
  if (popupBanner.banners[bannerId] == null) {
    var banner = jQuery('#' + bannerId);
    var cookie = popupBanner.getCookie('popupBanner_' + bannerId);
    if (cookie == null) {
      options = options != null ? options : {};
      for (var prop in popupBanner.defaultOptions) {
        if (options[prop] == null)
          options[prop] = popupBanner.defaultOptions[prop];
      }
      var data = {
        id: bannerId,
        banner: banner,
        stepX: options.stepX,
        stepY: options.stepY,
        x: options.startX,
        y: options.startY,
        move: true,
        interval: options.interval,
        intervalId: 0
      }
  
      var win = jQuery(window);    
      if (options.centerH)
        data.x = (win.width() - data.banner.width()) / 2;
      if (options.centerV)
        data.y = (win.height() - data.banner.height()) / 2;
      
      banner.css('position', 'fixed');
      banner.css('display', 'block');
      banner.css('left', data.x + 'px');
      banner.css('top', data.y + 'px');
      banner.topZIndex();
      
      if (options.stopOnMouseOver) {
        banner.mouseover(popupBanner.mouseOver);
        banner.mouseout(popupBanner.mouseOut);
      }
      
      if (options.showAgainAfterHours != null) {
        popupBanner.setCookie('popupBanner_' + bannerId, true, options.showAgainAfterHours);
      }
      
      data.intervalId = setInterval('popupBanner.update("' + bannerId + '")', options.interval);
      popupBanner.banners[bannerId] = data;
      banner.data('data', data);
    } else {
      banner.css('display', 'none');
    }
  }
}

popupBanner.hide = function(bannerId) {
  var data = popupBanner.banners[bannerId];
  if (data != null) {
    clearInterval(data.intervalId);
    data.banner.css('display', 'none');
    delete popupBanner.banners[bannerId];
  }
}

popupBanner.update = function(bannerId) {
  var data = popupBanner.banners[bannerId];
  if (data != null && data.move) {
    var win = jQuery(window);
    var maxX = win.width() - data.banner.width();
    var maxY = win.height() - data.banner.height();
    
    data.x += data.stepX;
    data.y += data.stepY;
    
    if (data.x < 0 || data.x > maxX) {
      data.x = Math.min(data.x, maxX);
      data.x = Math.max(data.x, 0);
      data.stepX = -data.stepX;
    }
    
    if (data.y < 0 || data.y > maxY) {
      data.y = Math.min(data.y, maxY);
      data.y = Math.max(data.y, 0);
      data.stepY = -data.stepY;
    }
    
    data.banner.css('left', data.x + 'px');
    data.banner.css('top', data.y + 'px');
  }
}

popupBanner.mouseOver = function(e) {
  jQuery(this).data('data').move = false;
}

popupBanner.mouseOut = function(e) {
  jQuery(this).data('data').move = true;
}

popupBanner.stop = function(bannerId) {
  var data = popupBanner.banners[bannerId];
  if (data != null)
    data.move = false;
}

popupBanner.start = function(bannerId) {
  var data = popupBanner.banners[bannerId];
  if (data != null)
    data.move = true;
}

popupBanner.setCookie = function (name, value, hours) {
  var expires = "";
	if (hours) {
		var date = new Date();
		date.setTime(date.getTime() + (hours * 60 * 60 * 1000));
		expires = "; expires=" + date.toGMTString();
	}
	document.cookie = name + "=" + value + expires + "; path=/";
}

popupBanner.getCookie = function(name) {
  var result = null;
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0)
		  result = c.substring(nameEQ.length, c.length);
	}
	return result;
}

popupBanner.clearCookie = function(name) {
	popupBanner.setCookie(name, "", -1);
}
