
/////////////////////////////////////////////////////////////////////////////////////////
////////////
//////////// 	Краткая инструкция по интеграции библиотеки prrelib в ваш проект
////////////
/////////////////////////////////////////////////////////////////////////////////////////



/////////////////////////////////////////////////////////////////////////////////////////
///////////  	ШАГ 1. ПОДКЛЮЧЕНИЕ БИБЛИОТЕКИ.
/////////////////////////////////////////////////////////////////////////////////////////

	Подключите библиотеку к проекту, способом стандартным для редактора, 
	который вы используете
	
	Во Flex builder/Flash builder для этого достаточно скопировать swc файл библиотеки в папку libs
	в вашем проекте. Если такой папки нет создайте ее и добавьте в пути сборки проекта
	путем вызова диалога "Проект -> Свойства" на вкладке "Путь сборки"
	
	Во FlashDevelop - скопируйте prrelib.swc в проект кликните по нему правой клавишей и выберите
	"Add to Library"
	
	Во стандартном редакторе Flash (Flash CS4 +) - Файл -> параметры публикации
	В появившемся диалоге нажмите кнопку настройки параметров Action Script/
	В появившемся диалоге выберите вкладку путь к библиотеке и добавьте путь к swc файлу
	
	
	Для прочих редакторов - обратитесь к документации от производителя редактора.

/////////////////////////////////////////////////////////////////////////////////////////
///////////  	ШАГ 2. ИСПОЛЬЗОВАНИЕ В КОДЕ.
/////////////////////////////////////////////////////////////////////////////////////////

Ниже полный пример класса с подключением библиотеки и ее использованием.
Класс может быть использован в любом редакторе с равным успехом.
 
Смотрите коммендарии в коде.

package
{
	/**
	 * Класс-пример
	 * @author Andrew Skorik aka dns aka target_accepted
	 * @version 0.1 
	 * @email andrewskorik@gmail.com
	 */
	
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.events.Event;
	import flash.events.MouseEvent;
	
	import ru.andrewskorik.prrelib.*;
	import ru.andrewskorik.prrelib.log.*;
	
	public class PRRELibTest extends Sprite
	{
		
		public function PRRELibTest()
		{
			// Добавляем слушателя события добавки на стейдж
			this.addEventListener(Event.ADDED_TO_STAGE, init);
		}
		
		private var prreContainer:BannerContainer
		
		/**
		* Обработчик события добавки на стейжд. 
		* Здесь выполняем инициализацию.
		*/
		
		private function init (e:Event):void {
			
			// удаляем слушателя
			this.removeEventListener(Event.ADDED_TO_STAGE, init);
			
			// настраиваем параметры стейджа
			stage.scaleMode = StageScaleMode.NO_SCALE;
			stage.align = StageAlign.TOP_LEFT;
			
			// создем контейнер баннеров. Используется статический метод класса BannerContainer
			// который принимает константу, содержащую экземпляр класса bannerType 
			// такой способ инициализации  контейнера позволяет вам быть уверенными,
			//  что контейнер будет создан точно для отдного из зарегистрированных типов баннеров
			
			prreContainer = BannerContainer.initializeFromType(BannerType.BANNER_240X400);
			
			// Настраиваем уровень (см. класс LogEventLevel) и способ оповещений (см. класс ErrorNotificationLevel)
			// (нужно для отладки в финальной сборке можно выставить уровень FATAL для оповещения только о критических ошибках)
			// 
			prreContainer.notificationLevel = ErrorNotificationLevel.LOG;
			SimpleTraceLogger.logLevel = LogEventLevel.ERROR;
			
			// настраиваем контейнер
			
			// ВНИМАНИЕ! Обязательный параметр - идентификатор вашего приложения в социальной сети
			// замените его на параметр полученный при интеграции проекта в социальнцуе сеть;
			// Если этот параметр не будет установлен - запросы к серверу отправляться не будут.
			
			prreContainer.applicationId = "1744756";
			
			// контейнер может принимать ряд необязательных параметров, таких как  
			// идентификатор пользователя, пол, возраст и страна его проживания
			// за полным списком параметров с их описанием, обратитесь к asdoc документации
			// по классу ru.andrewskorik.BannerContainer
			// установка значений производится тем же способом что и для applicationId
			// см. пример ниже
			
			prreContainer.age = 18;
			
			
			// Добавляем контейнер в дисплей лист
			addChild(prreContainer);
			
			// позиционируем контейнер 
			// (так как это предусмотрено в вашем приложении, для примера - по центру экрана)
			
			prreContainer.x = (stage.stageWidth - prreContainer.width)/2; 
			prreContainer.y = (stage.stageHeight - prreContainer.height)/2;
			
			// Cоздаем объект - "кнопку" реагирующую на нажатие.
			// по нажатию на эту кнопку - будем производить принудительное
			// обновление баннера
			 
			var btn:Sprite = new Sprite ();
			btn.graphics.beginFill(0xff0000, 1);
			btn.graphics.drawRect(0,0,100, 100);
			btn.graphics.endFill();
			btn.useHandCursor = true;
			btn.buttonMode = true;
			btn.addEventListener(MouseEvent.CLICK, refreshBanner);
			
			addChild(btn);
			
			
			
		};
		
		/**
		* Обработчик нажатия на "кнопку"
		* Вызывает у контейнера метод  forceRefresh ()
		* С равным успехом метод можно вызывать программно  	
		*/
		private function refreshBanner (e:MouseEvent):void {
			prreContainer.forceRefresh();
		};
	}
}


/////////////////////////////////////////////////////////////////////////////////////////
///////////  	ШАГ 3(опционально). ПРОДВИНУТАЯ ИНТЕГРАЦИЯ.
/////////////////////////////////////////////////////////////////////////////////////////

	Библиотека полностью расширяема. 
	Вы можете отнаследоваться от класса BannerContainer, RPC и/или XMLParser и перезаписать
	публичные и защищенные методы (рекомендуем вызывать super) 
	чтобы модифицировать те или иные аспекты поведения.
	
	Для дополнительной информации по классам библиотеки 
	и их свойствам обратитесь к asdoc-документации по проекту. 
	(asdoc-output.zip - распаковать и запустить index.html) 

	Ниже простой пример расширения класса контейнера для добавки прелоадера баннеров
	
		package
		{
			/**
			 * 
			 * @author Andrew Skorik aka dns aka target_accepted
			 * @version 0.1 
			 * @email andrewskorik@gmail.com
			 */
			import flash.events.Event;
			import flash.events.IOErrorEvent;
			import flash.events.ProgressEvent;
			
			import ru.andrewskorik.prrelib.BannerContainer;
			
			public class ContainerExt extends BannerContainer
			{
				public function ContainerExt(w:Number, h:Number)
				{
					super(w, h);
				}
				
				private var myPreloader:Preloader;
				
				override protected function openHandler(event:Event):void {
					
					super.openHandler(event);
					
					myPreloader = new Preloader ();
					myPreloader.width
					addChild(myPreloader);
				};
				
				override protected function progressHandler(event:ProgressEvent):void {
					super.progressHandler(event);
					myPreloader.percent = Math.round((event.bytesLoaded/event.bytesTotal)*100);
				};
				
				override protected function completeHandler(event:Event):void {
					super.completeHandler(event);
					removeChild(myPreloader);
					myPreloader = null;
				};
				
				override protected function ioErrorHandler(event:IOErrorEvent):void {
					
					super.ioErrorHandler(event);
					
					removeChild(myPreloader);
					myPreloader = null;
					
				};
				
			}
		}
