
import com.adobe.serialization.json.JSON;
import com.tp.events.TPEvent;
import com.tp.helpers.Global;

import flash.events.Event;
import flash.events.HTTPStatusEvent;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;

import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.core.Application;
import mx.events.ListEvent;
import mx.managers.PopUpManager;

[Bindable]
private var savedImages:ArrayCollection = new ArrayCollection();

private var urlLoader:URLLoader;

private function onCreationComplete():void {
	init();
}

private function init():void {
	savedImages.removeAll();
	imagesListObj.dataProvider = savedImages;
	var req:URLRequest = new URLRequest(Global.savedImagesListPath);
	
	urlLoader = new URLLoader();
	
	urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onURLLoaderStatus);
	urlLoader.addEventListener(ProgressEvent.PROGRESS, onURLLoaderProgress);
	urlLoader.addEventListener(Event.COMPLETE, onURLLoaderComplete);
	urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onURLLoaderError);
	urlLoader.load(req);
	
	imagesListObj.addEventListener(ListEvent.ITEM_DOUBLE_CLICK, onImageListObjDoubleClick);
	
}

private function onClose():void {
	PopUpManager.removePopUp(this);
}

private function onURLLoaderStatus(e:HTTPStatusEvent):void
{
	trace ( "Load failed: HTTP Status = " + e.status );
}
private function onURLLoaderProgress(e:ProgressEvent):void
{
	
}
private function onURLLoaderComplete(e:Event):void
{
	var response:Object = JSON.decode(e.target.data);
	if (response.result == 'success') {
		savedImages.removeAll();
		for (var k:String in response.list)
			savedImages.addItem(response.list[k]);
	}
	else
		savedImages.removeAll();
//	savedDesignsList.addEventListener(CollectionEvent.COLLECTION_CHANGE, onSavedDesignsListCollectionChange);
}

private function onURLLoaderError(e:IOErrorEvent):void
{
	Alert.show("Error Loading Your Saved Images , IOError");
}

private function onImageListObjDoubleClick (e:ListEvent):void {
	var selectedImage:Object = e.target.selectedItem;
	var tpEvent:TPEvent = new TPEvent(TPEvent.ADD_SAVED_IMAGE, (selectedImage as Object));
	Application.application.dispatchEvent(tpEvent);
}