/* remoting classes */ import mx.remoting.Service; import mx.services.Log; import mx.rpc.RelayResponder; import mx.rpc.FaultEvent; import mx.rpc.ResultEvent; import mx.remoting.PendingCall; import mx.remoting.RecordSet; /* mm classes */ import mx.events.EventDispatcher; import mx.controls.Tree; import mx.containers.ScrollPane; import mx.core.UIComponent; import mx.core.UIObject; import mx.transitions.Tween; import mx.transitions.easing.*; /* custom classes */ import it.sephiroth.mloaderWindow; import it.sephiroth.image; import it.sephiroth.utils; import it.sephiroth.iUser; import zigo.tweenManager; import flash.display.*; import flash.geom.*; import flash.filters.*; class it.sephiroth.iGallery extends UIComponent { var addEventListener: Function var removeEventListener:Function var dispatchEvent: Function static var t_width:Number = 80 // thumbs width static var t_height:Number = 60 // thumbs height static var left_margin:Number = 200 // left margin position var folder_id:Number // current folder id var panoramic:Number // current album is panoramic static var modal_depth:Number = 14998 // depth of the modal window static var tip_depth: Number = 14996 // depth of the tooltip movieclip var ls_stage :Object // stage listener var ls_album :Object // album listener var ls_thumbloader:Object // mLoaderWindow listener var ls_imageSlider:Object // imageSlider listener var ls_panel :Object // ScrollPane listener var ls_menusort :Object // Sort Menu listener var thumbListener :Object var albumList, mainPanel, imageSlider // components var tmanager:tweenManager var DB:Object // store records from AMFPHP private var folder_auto_open:Number // open an album by default private var image_auto_open:Number // open an image by default var centerBorder: MovieClip var upperBorder: MovieClip var bottomPanel: MovieClip var albumListTitle:MovieClip var albumListBar: MovieClip var tooltip: MovieClip var thumbLoader // loader for thumb page var modalLoader // modal info window // remoting variables var gatewayURL: String var service_name:String var thumbURL: String var baseURL: String // where the containing swf is published private var $user:iUser; private var $serv:Service; function iGallery( ){ EventDispatcher.initialize(this); __init__(); } /** * start quering server * a_id int album id to be opened by default */ function start( a_id:Number, hidden:Boolean ):Void{ if(a_id != undefined){ setFolderAutoOpen(a_id); } $serv = new Service(gatewayURL, null, service_name, null, null); var pc:PendingCall = $serv.GetCategoryList(); pc.responder = new RelayResponder(this, "onAlbumListResult", "onAlbumListFault"); thumbLoader = this.createClassObject(mloaderWindow, "thumbLoader", 10); thumbLoader.addEventListener("close", ls_thumbloader) thumbLoader.setStyle("borderColor", 0x006699); thumbLoader.progressBar = false; //thumbLoader._x = Math.round(((Stage.width-(iGallery.left_margin+10))/2) - (this.thumbLoader.getSize()[0]/2) + (iGallery.left_margin+10)) //thumbLoader._y = Math.round((Stage.height/2) - (this.thumbLoader.getSize()[1]/2)) if(hidden == true){ thumbLoader.label = "Please wait..." thumbLoader.open(true, true, true) } else { thumbLoader.label = "Loading Album List" thumbLoader.open(false, true, true) } } /** * initialize all stage components */ private function __init__():Void{ DB = new Object(); DB.record = new Object(); tmanager = new tweenManager(); albumList = this.createClassObject(Tree, "albumList", 1, {_x:0, _y:30}) mainPanel = this.createClassObject(ScrollPane, "mainPanel", 2) centerBorder = this.createObject("centerBorder", "centerBorder", 3); upperBorder = this.createObject("upperBorder", "upperBorder", 4); bottomPanel = this.createObject("bottomPanel", "bottomPanel", 6); albumListTitle = this.createObject("albumListTitle", "albumListTitle",7, {_x:5, _y:5}); tooltip = this.createObject("tooltip", "tooltip", iGallery.tip_depth, {_x:-100, _y:-100}); tooltip.filters = [new DropShadowFilter(3, 45, 0x000000, 100, 6, 6, .7, 3)] mainPanel.contentPath = "mainContent" mainPanel.hScrollPolicy = "off" mainPanel.content.searchBar.find_btn.onRelease = function(){ this._parent._parent._parent._parent.searchInFolder(this._parent.search_txt.text, this._parent._parent._parent._parent.getFolderId()) } mainPanel.content.searchResult.close_btn.onRelease = function(){ this._parent._parent._parent._parent.hideSearchBox(); this._parent._parent._parent._parent.GetImageList(this._parent._parent._parent._parent.getFolderId()) } $user = new iUser(); initStyles(); initStageListener(); initListeners(); initMainPanelMenu(); ls_stage.onResize(); } /** * Create the context menu into the main Panel movieclip * This menu will be called by the sortbyBtn button */ private function initMainPanelMenu():Void{ var myMDP:XML = new XML(); myMDP.addMenuItem({label:"Date added", data:1}); myMDP.addMenuItem({label:"Views", data:2}); myMDP.addMenuItem({label:"Rating", data:3}); myMDP.addMenuItem({label:"Votes", data:4}); myMDP.addMenuItem({label:"Comments", data:5}); var myMenu = mainPanel.content.createClassObject(mx.controls.Menu, "myMenu", 14999); myMenu.dataProvider = myMDP myMenu.setStyle("backgroundColor", 0xCCCCCC); myMenu.setStyle("fontFamily", "font2"); myMenu.setStyle("embedFonts", true); myMenu.setStyle("fontSize", 8); myMenu.setStyle("textRollOverColor", 0xFFFFFF); myMenu.setStyle("themeColor", 0x006699) myMenu.addEventListener("change", ls_menusort) } /** * initialize main components listeners */ private function initListeners(){ ls_album = new Object(); ls_album.target = this ls_album.change = function(evt:Object){ var node = evt.target.selectedNode if(!evt.target.getIsBranch(node)){ var name = node.attributes.name var data = node.attributes.data var description = node.attributes.description var count = node.attributes.count var panoramic = node.attributes.panoramic this.target.purge_mainPanel(); this.target.purge_bottomPanel(); if(this.target.findWindowByName("imageSlider") != undefined){ this.target.findWindowByName("imageSlider").hide(); } if(this.target.albumListBar == undefined){ this.target.albumListBar = this.target.createObject("albumListBar", "albumListBar", 5, {_x:iGallery.left_margin+10, _y:-50}); this.target.albumListBar.albumListBarBg._width = Stage.width - (iGallery.left_margin+10) this.target.albumListBar.description._width = Stage.width - (iGallery.left_margin+60) } this.target.albumListBar.title.text = name + " (" + count + ")" this.target.albumListBar.description.text = description this.target.hideSearchBox(); new Tween(this.target.albumListBar, "_y", Regular.easeOut, -50, 0, 1, true) this.target.setPanoramic( panoramic ); this.target.GetImageList( data ); } } ls_thumbloader = new Object(); ls_thumbloader.target = this; ls_thumbloader.close = function(evt:Object){ delete this.target[evt.target._name] evt.target.removeMovieClip(); } ls_menusort = new Object(); ls_menusort.target = this; ls_menusort.change = function(evt:Object){ var value = evt.menuItem.attributes.data this.target.sortThumbs(value) } albumList.addEventListener("change", ls_album); } /** * make remote call to server for the list of images * for the specified folder id */ public function GetImageList(folderid:Number, searchString){ this.purge_mainPanel(); this.purge_bottomPanel(); if(searchString == undefined) searchString = ""; this.setFolderId( folderid ) // set the current folder ids var pc:PendingCall = this.$serv.GetImageList( folderid, searchString) pc.responder = new RelayResponder(this, "onImageListResult", "onImageListFault"); if(findWindowByName("thumbLoader") == undefined){ this.thumbLoader = this.createClassObject(mloaderWindow, "thumbLoader", 10); } if(this.thumbLoader.isModal != true){ this.thumbLoader.progressBar = true; this.thumbLoader.setStyle("borderColor", 0x006699) this.thumbLoader.addEventListener("close", this.ls_thumbloader) //this.thumbLoader._x = Math.round(((Stage.width-(iGallery.left_margin+10))/2) - (this.thumbLoader.getSize()[0]/2) + (iGallery.left_margin+10)) //this.thumbLoader._y = Math.round((Stage.height/2) - (this.thumbLoader.getSize()[1]/2)) this.thumbLoader.label = "Loading thumbs..." this.thumbLoader.open(false, true, true) } } /** * search for images in the specified folder */ public function searchInFolder(text:String, folderid:Number){ // open the search result bar if(mainPanel.content.searchResult._visible == false){ mainPanel.content.searchResult._visible = true new Tween(mainPanel.content.searchResult, "_y", Regular.easeOut, -40, -1, .5, true); } mainPanel.content.searchResult.result_txt.text = ""; resetPanelContents(); GetImageList(folderid, text); } /** * Hide the search result box */ private function hideSearchBox(){ if(this.mainPanel.content.searchResult._visible == true){ var tr = new Tween(this.mainPanel.content.searchResult, "_y", None.easeNone, this.mainPanel.content.searchResult._y, -100, .5, true) tr.target = mainPanel.content.searchResult tr.onMotionFinished = function(){ this.target._visible = false this.target.result_txt.text = "" this.target._parent.searchBar.search_txt.text = "" } } } /** * Sort the thumbs by key: * 1: date * 2: views * 3: rating * 4: votes * 5: comments */ public function sortThumbs(s:Number):Void{ var cmp_fn:Function switch(s){ case 5: cmp_fn = function(a, b){ return b.comments - a.comments } break case 4: cmp_fn = function(a, b){ return b.votes- a.votes } break case 3: cmp_fn = function(a, b){ return b.rating - a.rating } break case 2: cmp_fn = function(a, b){ return b.views - a.views } break case 1: cmp_fn = function(a, b){ return b.unix_timestamp - a.unix_timestamp } break } DB.record['image_list'].result.sort( cmp_fn ) resetPanelContents(); } /** * remove all loaded thumbs from the scrollpanel */ private function purge_mainPanel(){ for(var a in mainPanel.content){ if(!(mainPanel.content[a] instanceof mx.controls.Menu)){ mainPanel.content[a].removeMovieClip(); } } } /** * reset the bottom panel label */ private function purge_bottomPanel(){ bottomPanel.label.text = "" } /** * initialize the components styles */ private function initStyles():Void{ albumList.setStyle("fontFamily","font1") albumList.setStyle("embedFonts",true) albumList.setStyle("fontSize", 8) albumList.setStyle("borderStyle","none") albumList.setStyle("themeColor", 0x006699) albumList.setStyle("backgroundColor", 0xEEEEEE) albumList.setStyle("color", 0x000000) albumList.setStyle("defaultLeafIcon", "defaultLeafIcon") albumList.setStyle("folderOpenIcon", "folderOpenIcon") albumList.setStyle("folderClosedIcon", "folderOpenIcon") albumList.setStyle("disclosureOpenIcon","disclosureIcon") albumList.setStyle("disclosureClosedIcon","disclosureIcon") albumList.setStyle("openDuration", 150) albumList.setStyle("repeatDelay", 0) albumList.setStyle("rollOverColor", 0xFFFFFF) albumList.setStyle("textSelectedColor", 0xFFFFFF) albumList.setStyle("useRollOver", false) albumList.setStyle("selectionDuration", 0) albumList.setStyle("indentation", 10) albumList.vScrollPolicy = "off" mainPanel.setStyle("borderStyle", "none") mainPanel.setStyle("backgroundColor", 0xDDDDDD) } /** * initialize the stage listener */ private function initStageListener():Void{ ls_stage = new Object(); ls_stage.target = this; ls_stage.onResize = function(){ this.target.albumList._y = 30 this.target.albumList.setSize(iGallery.left_margin, Stage.height-30) this.target.mainPanel._x = iGallery.left_margin+10 this.target.mainPanel._y = 60 this.target.mainPanel.setSize(Stage.width - (iGallery.left_margin+10), Stage.height - 77) this.target.albumListBar.albumListBarBg._width = Stage.width - (iGallery.left_margin+10) this.target.albumListBar.description._width = Stage.width - (iGallery.left_margin+60) this.target.albumListBar._x = iGallery.left_margin+10 this.target.centerBorder._x = iGallery.left_margin this.target.centerBorder._y = 0 this.target.centerBorder._height = Stage.height this.target.upperBorder._x = iGallery.left_margin+10 this.target.upperBorder._y = 0 this.target.upperBorder._width = Stage.width - (iGallery.left_margin+10) this.target.upperBorder._height = 60 this.target.bottomPanel._x = iGallery.left_margin+10 this.target.bottomPanel._y = (Stage.height - this.target.bottomPanel._height)+1 this.target.bottomPanel.bottomPanelBg._width = Stage.width - (iGallery.left_margin+10) this.target.bottomPanel.label._width = this.target.bottomPanel.bottomPanelBg._width this.target.resetPanelContents() this.target.imageSlider.setSize(Stage.width, Stage.height ) } Stage.align = "TL" Stage.scaleMode = "noscale" Stage.addListener( ls_stage ) } /** * invalidate the thumbs position within the scrollpane */ private function resetPanelContents():Void{ //var a = 0 var cols = 0 var rows = 0 var result = DB.record['image_list'].result; var tmp_callbak:Object = new Object(); tmp_callbak.scope = this; tmp_callbak.onTweenEnd = function(){ this.findWindowByName("mainPanel").invalidate() } tmp_callbak.onTweenStart = function(){ //trace('onTweenStart'); } for(var a = 0; a < result.getLength(); a++){ if(((cols+1)*(iGallery.t_width+10)) > (Stage.width - (iGallery.left_margin+20))){ cols = 0 rows++ } var mc = mainPanel.content['loader_' + result.getItemAt(a).id] mc.__index__ = a; mc.cacheAsBitmap = true; var gb = mc.getBounds( this._parent ); if(gb.yMax >= 0 and gb.yMin <= Stage.height){ tmanager.addTweenWithDelay(a/40, mc, ["_x", "_y"], [cols*(iGallery.t_width + 10)+20, rows*(iGallery.t_height+ 10)+40], .5, Regular.easeOut, tmp_callbak); } else { mc._x = cols*(iGallery.t_width + 10)+20 mc._y = rows*(iGallery.t_height+ 10)+40 } cols++ //a++ } mainPanel.content.sortbyBtn._y = 5 mainPanel.content.searchBar._y = 5 mainPanel.content.sortbyBtn._x = Math.round(Stage.width - mainPanel.content.sortbyBtn._width - 30 - iGallery.left_margin) mainPanel.content.searchBar._x = mainPanel.content.sortbyBtn._x - mainPanel.content.searchBar._width - 10 mainPanel.content.searchResult.bg._x = 0 mainPanel.content.searchResult.bg._width = Math.round(Stage.width - mainPanel.content.sortbyBtn._width - iGallery.left_margin) if(mainPanel.content.welcome_clip){ mainPanel.content.welcome_clip._x = (Stage.width - iGallery.left_margin)/2 - mainPanel.content.welcome_clip._width/2 mainPanel.content.welcome_clip._y = (Stage.height)/2 - mainPanel.content.welcome_clip._height/2 - 60 } mainPanel.invalidate() } /** * press on a thumb */ private function showThumbDescription(mc:MovieClip):Void{ var data:Object = mc.__data__ var name:String = data.name var id:Number = data.id var votes:Number = data.votes var rating:Number = data.rating var comments:Number = data.comments var s_rating:String if(isNaN(rating)){ s_rating = "N/A" } else { s_rating = rating.toString() } var views:Number = data.views var weight:String = Math.round((data.image_weight/1024)*10)/10 + " Kb" var image_size = data.image_size + " px" var date_added = utils.formatMySQLDate(data.date_added) this._parent._parent._parent.bottomPanel.label.text = name + " " + date_added + " " + image_size + " " + weight + " ( views:" + views + ", rating:" + s_rating + ", comments:" + comments + " )" } /** * double click on a thumb */ private function activatedThumb(mc:MovieClip):Void{ var data:Object = mc.__data__ var index:Number = mc.__index__ var panoramic:Number = mc.panoramic var base:MovieClip = this._parent._parent._parent base.initImageSliderListener(); base.imageSlider = base.createClassObject(it.sephiroth.imageSlider, "imageSlider", 20); base.imageSlider.thumbURL = base.thumbURL base.imageSlider.panoramic = panoramic; base.imageSlider._x = 0 base.imageSlider._y = 0 base.imageSlider.addEventListener("loaded", base.ls_imageSlider) base.imageSlider.addEventListener("change", base.ls_imageSlider) base.imageSlider.addEventListener("hide", base.ls_imageSlider) base.imageSlider.dataProvider = base.DB.record.image_list base.imageSlider.setSize(Stage.width, Stage.height ) base.imageSlider.setSelection(index); new Tween(base.imageSlider, "_alpha", Regular.easeOut, 0, 100, .5, true); // setting pause for thumbListener base.findWindowByName("thumbListener").pause = true; } public function displayImageLink(fid:Number, id:Number){ setImageAutoOpen( id ); start(fid, true); } /** * find a movieclip in the gallery */ public function findWindowByName(n:String){ return this[n]; } /** * initialize the image slider listener */ private function initImageSliderListener():Void{ ls_imageSlider = new Object(); ls_imageSlider.target = this; // imageSlider is opened ls_imageSlider.loaded = function(evt:Object){ evt.target.setSize(Stage.width - (iGallery.left_margin+10), Stage.height ) } ls_imageSlider.change = function(evt:Object){ evt.target.show(evt.target.selectedIndex) this.target.getItemAt(evt.target.selectedIndex).views += 1 } // hide the imageSlider ls_imageSlider.hide = function(evt:Object){ this.target.findWindowByName("thumbListener").unpause() this.target.findWindowByName("thumbLoader").isModal = false this.target.findWindowByName("thumbLoader").invalidate() } } /** * return current album image at index */ public function getItemAt( index:Number ):Object{ return DB.record['image_list'].result.getItemAt( index ); } /** * Read from server all the image comments */ public function getImageComments(id:Number):Void{ var pc:PendingCall = $serv.GetImageComments(id); pc.responder = new RelayResponder(this, "onImageCommentsResult", "onImageCommentsFault"); } /** * send vote for an image */ public function RateImage(id:Number, rating:Number):Void{ if($user.getVote(id)){ ErrorMessage("An error occurred, probably you already sent vote for this image!", 2.5); return; } else { var pc:PendingCall = $serv.RateImage(id, Number(rating)); pc.responder = new RelayResponder(this, "onRatingResult", "onRatingFault"); $user.setVote(id); modalLoader = this.createClassObject(mloaderWindow, "modalLoader", iGallery.modal_depth) modalLoader.setStyle("borderColor", 0x006699) modalLoader.addEventListener("close", ls_thumbloader) //modalLoader._x = Math.round(Stage.width/2 - (modalLoader._width/2)) //modalLoader._y = Math.round(Stage.height/2 - (modalLoader._height/2)) modalLoader.label = "Sending Vote...." modalLoader.progressBar = false; modalLoader.open(true, false, true); } } /** * Send comment to server */ public function SendComment(name:String, message:String, id:Number):Void{ $user.username = name; var pc:PendingCall = $serv.SendComment(id, name, message); pc.responder = new RelayResponder(this, "onSendCommentResult", "onSendCommentFault"); modalLoader = this.createClassObject(mloaderWindow, "modalLoader", iGallery.modal_depth) modalLoader.setStyle("borderColor", 0x006699); modalLoader.addEventListener("close", ls_thumbloader) modalLoader.label = "Sending Comment...." modalLoader.progressBar = false; modalLoader.open(true, false, true); } /** * Send an ecard to the server */ public function Send_ECard( id:Number, fid:Number, from_name:String, from_email:String, to_name:String, to_email:String, message:String, w:Number, h:Number, linkURL:String):Void{ trace('Send_ECard'); var d:Number = new Date().getTime() //trace([d - $user.last_ecard, iUser.ecard_delay]) if(d - $user.last_ecard < iUser.ecard_delay){ ErrorMessage("You must wait at least " + (iUser.ecard_delay/60/1000) + " minute(s) before send another E-Card", 2.5); return; } $user.last_ecard = d; $user.username = from_name; $user.email = from_email; var pc:PendingCall = $serv.SendECard(to_name, to_email, from_name, from_email, message, id, w, h, linkURL) pc.responder = new RelayResponder(this, "onSendECardResult", "onSendEcardFault"); modalLoader = this.createClassObject(mloaderWindow, "modalLoader", iGallery.modal_depth) modalLoader.setStyle("borderColor", 0x006699); modalLoader.addEventListener("close", ls_thumbloader) modalLoader.label = "Sending E-Card...." modalLoader.progressBar = false; modalLoader.open(true, false, true); } /** * Display the error message */ public function ErrorMessage(msg:String, openDuration:Number){ if(openDuration == undefined) openDuration = 2; var modal = findWindowByName("modalLoader"); var tLoader = findWindowByName("thumbLoader"); if(tLoader != undefined){ tLoader.close(); } if(modal != undefined){ modal.label = msg; modal.setStyle("borderColor", 0xFF0000); } else { modal = this.createClassObject(mloaderWindow, "modalLoader", iGallery.modal_depth); modal.label = msg; modal.progressBar = false; modal.addEventListener("close", ls_thumbloader) modal.open(true, false, true); } modal.close(openDuration); } public function setFolderId(id:Number){ folder_id = id; } public function getFolderId():Number{ return folder_id; } public function getPanoramic():Number{ return panoramic; } public function setPanoramic(n:Number){ panoramic = n; } public function setFolderAutoOpen( id:Number ){ folder_auto_open = id; } public function getFolderAutoOpen():Number{ return folder_auto_open; } public function setImageAutoOpen( id:Number ){ image_auto_open = id; } public function getImageAutoOpen():Number { return image_auto_open; } // **** AMFPHP responder **** // /** * results from GetImageList remote method */ private function onImageCommentsResult(rs:ResultEvent):Void{ DB.record['image_comments'] = rs.result; // store record var result = rs.result.result dispatchEvent({type:"image_comments", target:this, id:rs.result.image_id, result:result}); } /** * Vote has been sent to server */ private function onRatingResult(rs:ResultEvent){ if(rs.result.type == "ERROR"){ this.ErrorMessage(rs.result.description, 2); } else { var modal = findWindowByName("modalLoader"); modal.label = "Yuor vote has been sent succesfully!"; modal.setStyle("borderColor", 0x009900); modal.close(2); var result = rs.result.result this.dispatchEvent({type:"image_rated", target:this, id:rs.result.image_id, rating:rs.result.result.rating, votes:rs.result.result.votes}); } } /** * An error occurred while sending vote to server */ private function onRatingFault(rs:FaultEvent){ ErrorMessage("An error occurred, probably you already sent vote for this image!", 2.5); } /** * Comment has been sent to server */ private function onSendCommentResult(rs:ResultEvent){ if(rs.result.type == "ERROR"){ this.ErrorMessage(rs.result.description, 2); } else { var modal = findWindowByName("modalLoader"); modal.label = "Done!"; modal.setStyle("borderColor", 0x009900); modal.close(1); var result = rs.result.result this.dispatchEvent({type:"image_commented", target:this, id:rs.result.image_id}); } } /** * An error occurred while sending comment to server */ private function onSendCommentFault(rs:FaultEvent){ ErrorMessage(rs.fault.faultstring, 2.5); } /** * Comment has been sent to server */ private function onSendECardResult(rs:ResultEvent){ if(rs.result.type == "ERROR"){ this.ErrorMessage(rs.result.description, 2); } else { var modal = findWindowByName("modalLoader"); modal.label = "Your e-card has been succesfully sent!"; modal.setStyle("borderColor", 0x009900); modal.close(1); var result = rs.result.result this.dispatchEvent({type:"ecard_sent", target:this, id:rs.result.image_id}); } } /** * An error occurred while sending e-card to server */ private function onSendECardFault(rs:FaultEvent){ ErrorMessage(rs.fault.faultstring, 2.5); } /** * received data from server: list of categories/folders */ public function onAlbumListResult(rs:ResultEvent):Void { if(findWindowByName("thumbLoader") != undefined){ if(findWindowByName("thumbLoader").isModal != true){ findWindowByName("thumbLoader").close(); } } var auto_open_fid = getFolderAutoOpen(); var auto_open_id = getFolderAutoOpen(); var auto_open_node; if(rs.result.type == "RESULT"){ $user.sessionid = rs.result.sessionid DB.record['album_list'] = rs.result; // store record var name, id, count, item, description, newNode, panoramic for(var a in rs.result.result){ name = rs.result.result[a].name id = rs.result.result[a].cid item = albumList.addTreeNode(name, id) for(var b in rs.result.result[a].folders){ name = rs.result.result[a].folders[b].folder_name id = rs.result.result[a].folders[b].fid count = rs.result.result[a].folders[b].images_count description = rs.result.result[a].folders[b].description panoramic = rs.result.result[a].folders[b].panoramic newNode = item.addTreeNode(name + " (" + count + ")", id) newNode.attributes.description = description newNode.attributes.name = name newNode.attributes.count = count newNode.attributes.panoramic = panoramic if( id == auto_open_fid ){ auto_open_node = newNode } } albumList.setIsOpen(item, true, false, false) } } else { ErrorMessage(rs.result.description, 2.5); } if(auto_open_node != undefined){ albumList.selectedNode = auto_open_node ls_album.change({target:albumList}) } else { if(auto_open_fid != undefined){ ErrorMessage("Invalid album id passed, cannot find album informations", 3); } } } public function onAlbumListFault(rs:FaultEvent){ if(findWindowByName("thumbLoader") != undefined){ findWindowByName("thumbLoader").close(); } ErrorMessage(rs.fault.faultstring, 2.5); } /** * results from GetImageList remote method */ private function onImageListResult(rs:ResultEvent):Void{ tmanager.stopAll(); if(rs.result.type == "RESULT"){ if(mainPanel.content.welcome_clip){ mainPanel.content.welcome_clip.unloadMovie(); } mainPanel.content.sortbyBtn._visible = true mainPanel.content.searchBar._visible = true if( mainPanel.content.searchResult._visible == true ){ mainPanel.content.searchResult.result_txt.text = "Search result: " + rs.result.result.getLength() + " images found"; } Selection.setFocus(null); DB.record['image_list'] = rs.result; // store record var result = rs.result.result var rows:Number = 0 var cols:Number = 0 var path:String thumbListener = new Object(); thumbListener.target = this thumbListener.pause = false thumbListener.unpause = function(){ this.pause = false; var tg = this.target.findWindowByName("mainPanel").content['loader_' + this.target.getItemAt(this.target.findWindowByName("thumbLoader").loaded).id].image var path = this.target.findWindowByName("mainPanel").content['loader_' + this.target.getItemAt(this.target.findWindowByName("thumbLoader").loaded).id].path var image = new image(tg, path) image.addEventListener("complete", this) image.load() } thumbListener.complete = function(evt:Object){ var movie:MovieClip var nextMovie:MovieClip this.target.thumbLoader.loaded++ this.target.thumbLoader.value = Math.round((this.target.thumbLoader.loaded/this.target.thumbLoader.total)*100) movie = evt.target.movie movie._parent.activate() nextMovie = this.target.mainPanel.content.getInstanceAtDepth(movie._parent.getDepth()+1) if(nextMovie){ if(this.pause != true){ var image = new image(nextMovie.image, nextMovie.path) image.addEventListener("complete", this) image.load() } } else { delete this.target.thumbListener this.target.thumbLoader.close() } } for(var a = 0; a < result.getLength(); a++){ if((cols+1)*(iGallery.t_width+10) > (Stage.width-220)){ cols = 0 rows++ } path = thumbURL + "?id=" + result.getItemAt(a).id + "&mode=thumb&width=" + iGallery.t_width + "&height=" + iGallery.t_height if(this.getPanoramic() == 1){ path += "&panoramic=1"; } var mc = mainPanel.content.attachMovie('singleThumbMovieClip', 'loader_' + result.getItemAt(a).id, 100+(a+1)) result.getItemAt(a).unix_timestamp = Number(result.getItemAt(a).unix_timestamp) mc.__data__ = result.getItemAt(a) mc.__index__ = a; mc.ID = result.getItemAt(a).id mc.path = path mc.panoramic = this.getPanoramic(); mc._x = cols*(iGallery.t_width+10) + 20 mc._y = rows*(iGallery.t_height+10) + 40 mc.showDescription = showThumbDescription; mc.clicked = activatedThumb; mc.parent = this; cols++ if(getImageAutoOpen() == result.getItemAt(a).id and getFolderAutoOpen() == getFolderId()){ thumbListener.pause = true; // set the loading process in pause... mc.clicked(mc); } } var image = new image(mainPanel.content["loader_" + result.getItemAt(0).id].image, mainPanel.content["loader_" + result.getItemAt(0).id].path) image.addEventListener("complete", thumbListener) image.load() mainPanel.invalidate() thumbLoader.total = result.getLength() thumbLoader.loaded = 0 thumbLoader.value = 0 } else { ErrorMessage(rs.result.description, 2.5); } } }