var Groopy={DEFAULT_ANIM_TIME:200,search:null};Groopy.performInlineLogin=function(formId){ActionRequest.loginUser(dojo.byId(formId),false,true)};Groopy.signupGroopAndUser=function(){var groopNameNode=dojo.byId("groop-name");var groopSubdomainNode=dojo.byId("groop-subdomain");Validator.validateField(groopNameNode);Validator.validateField(groopSubdomainNode);var newGroopName=groopNameNode.value;var newGroopSubdomain=groopSubdomainNode.value;if(newGroopName.length==0||newGroopSubdomain.length==0){Dialog.errorDialog.show("Vul beide velden in!");return }Standard.setCookie("finish-signup-groop","true",60*60*24,"/");Standard.setCookie("groop-name",newGroopName,60*60*24,"/");Standard.setCookie("groop-subdomain",newGroopSubdomain,60*60*24,"/");var time=400;dojo.html.hide(dojo.byId("signupGroopAndUser"));var anim=dojo.lfx.html.wipeIn([dojo.byId("signupUserFirst")],time);anim.play()};Groopy.showUserMenu=function(){var content=dojo.byId("user-menu-content").innerHTML;Dialog.standardDialog.showXhtml(content)};Groopy.showMessage=function(message,id){var div=xmlElement("div",{clazz:"message info",style:"display:none;"});div.innerHTML=message;dojo.dom.prependChild(div,dojo.byId("content"));if(id!=null){div.setAttribute("id",id)}var anim=dojo.lfx.html.fadeShow([div],Groopy.DEFAULT_ANIM_TIME);anim.play()};Groopy.showLoginRequiredMessage=function(){Dialog.warningDialog.showXhtml('Deze actie kunt je alleen uitvoeren als je bent ingelogd als gebruiker.<a href="#" onclick="Dialog.warningDialog.hide();Dialog.requestLogin(true);return false;">Log in</a> als gebruiker, of <a href="'+appUrl+'/signup.page">meld je aan</a> als gebruiker!')};Groopy.showNewMessageForm=function(messagesContainerId,datapath){var advice=function(p,formId){try{Groopy.updateMessagesFromServer();dojo.event.disconnect(ActionRequest,"createData",this)}catch(e){}};if(!Groopy.newMessageAdviceAdded){Groopy.newMessageAdviceAdded=true;dojo.event.connect(Dialog.okDialog,"okEvent",advice)}Form.showNewForm(messagesContainerId,datapath,true,false)};Groopy.updateMessagesFromServer=function(){var datapath=dojo.byId("messages-datapath").value;var lastId=dojo.byId("messages-last-id").value;if(!lastId||lastId==""){lastId=-1}else{lastId=parseInt(lastId)}var callback=function(json){var container=dojo.byId("messages-container");for(var i=json.collection.length-1;i>=0;i--){if(parseInt(json.collection[i].id)>lastId){var element=Groopy.fillMessageTemplate(json.collection[i],datapath);dojo.dom.prependChild(element,container);dojo.lfx.html.highlight([element],[255,255,0],1400).play()}}if(json.collection.length>0){lastId=json.collection[0].id;dojo.byId("messages-last-id").value=lastId}};Standard.retrieveJSON(datapath,callback,false,"size=2&order-by=time&order=desc&t="+(new Date()).getTime(),true)};Groopy.updateMessagesInterval=function(interval){if(!interval){interval=5000}window.setInterval(function(){Groopy.updateMessagesFromServer()},interval)};Groopy.fillMessageTemplate=function(messageJson,messagesDatapath){var messageId=messageJson.id;var title=messageJson.value.title;var time=messageJson.value.time;var content=messageJson.value.content;var userId=messageJson.value.user.id;var userName=messageJson.value.user.name;var html='<h4><img src="'+appUrl+'/img/comment.png">'+title+'<span class="time">'+time+'</span></h4><div class="marginize">'+content+'</div><div class="author"><div class="author">Door <a href="'+appUrl+"/users/user.page?id="+userId+'">'+userName+'</a></div> : <img src="'+appUrl+'/img/comments.png"><a href="javascript: Form.showNewForm(\'msg'+messageId+"-reply', '"+messagesDatapath+"("+messageId+')/comments\', true, false)"> Reageer</a></div><div id="msg'+messageId+'-reply"></div><div style="display: none;"></div>';var element=xmlElement("div",{clazz:"box message-item new-message-item"});element.innerHTML=html;return element};Groopy.performFormAction=function(formId,action){if(Validator.validateForm(formId)){ActionRequest.performRemoteFormAction(action,formId);return true}else{return false}};Groopy.genericJoinGroopAction=function(userId,groopId,member,node){if((""+userId).length==0){Groopy.showLoginRequiredMessage();return }var what="lid";if(member=="groopFriends"){what="een vriend"}var message="Weet je zeker dat je "+what+" wilt worden van deze groep?";var handler=function(isOk){if(!isOk){return }var action=appUrl+"/CreateRelationAction.do?data-path=/"+member+"&groop="+groopId+"&user="+userId;var callback=function(success,errorMsg,httpStatusCode){if(!success){if(errorMsg.indexOf("RelationPermissionException")!=-1){var message="Relatie kan niet worden gelegd: "+errorMsg;var alreadyExist=errorMsg.indexOf("does not exist")>-1;if(member=="userToGroopInvitations"&&alreadyExist){if(errorMsg.indexOf("groopMembers")>0){message="Je bent al lid van deze groep!"}else{message="Er is in het verleden al een uitnodiging verstuurd, er is nog niet gereageerd op die uitnodiging."}}if(member=="groopFriends"&&alreadyExist){message="Je bent al een vriend van deze groep!"}Dialog.errorDialog.show(message);return }return ActionRequest.defaultCallback(success,errorMsg,httpStatusCode)}try{dojo.lfx.html.fadeHide([node],400).play()}catch(e){}var msg="Verzoek met succes verstuurd";var callback=null;if(member=="userToGroopInvitations"){msg="Verzoek om lid te worden is met succes verstuurd, je verzoek moet goedgekeurd worden door de beheerder van de vriendengroep"}else{if(member=="groopFriends"){msg="Je bent een vriend geworden van deze groep!"}else{if(member=="groopMembers"){if(userId==Groopy.user.id){msg="Je bent lid van deze groep geworden"}else{msg="De uitnodiging is geaccepteerd. De gebruiker is nu lid van je groep."}}}}Dialog.okDialog.show(msg)};ActionRequest.performRemoteAction(action,callback)};if(member=="groopMembers"){handler(true)}else{Dialog.confirmDialog.show(message,handler)}return false};Groopy.joinGroop=function(userId,groopId,node){Groopy.genericJoinGroopAction(userId,groopId,"groopMembers",node)};Groopy.joinGroopAsFriend=function(userId,groopId,node){Groopy.genericJoinGroopAction(userId,groopId,"groopFriends",node)};Groopy.leaveGroop=function(){alert("Deze functie werkt nog niet..")};Groopy.inviteUserToGroop=function(userId,groopId,node){Groopy.genericJoinGroopAction(userId,groopId,"userToGroopInvitations",node)};Groopy.inviteGroopToUser=function(userId,groopId,node){Groopy.genericJoinGroopAction(userId,groopId,"groopToUserInvitations",node)};Groopy.genericJoinFriend=function(userId,friendId,member,node){if((""+userId).length==0){Groopy.showLoginRequiredMessage();return }if(userId==friendId){Dialog.errorDialog.show("Je kunt geen vriend van jezelf worden!");return }Dialog.confirmDialog.show("Weet je zeker dat je een vriend wilt worden?",function(isOk){if(!isOk){return }var action=appUrl+"/CreateRelationAction.do?data-path=/"+member+"&userA="+userId+"&userB="+friendId;var callback=function(success,errorMsg,httpStatusCode){if(!success){if(errorMsg.indexOf("RelationPermissionException")!=-1){if(errorMsg.indexOf("/friendInvitations")!=-1&&member=="friendInvitations"){Dialog.warningDialog.show("Er is al een vriend verzoek verstuurd in het verleden");return }if(errorMsg.indexOf("/friends")!=-1&&member=="friendInvitations"){Dialog.warningDialog.show("Je bent al vriend met deze persoon...");return }Dialog.errorDialog.show("Relatie kan niet worden gelegd: "+errorMsg);return }return ActionRequest.defaultCallback(success,errorMsg,httpStatusCode)}try{dojo.lfx.html.fadeHide([node],400).play()}catch(e){}var msg="Verzoek met succes verstuurd";if(member=="friends"){msg="Je bent een vriend geworden!"}Dialog.okDialog.show(msg)};ActionRequest.performRemoteAction(action,callback)});return false};Groopy.joinFriend=function(userId,friendId,node){Groopy.genericJoinFriend(userId,friendId,"friends",node)};Groopy.inviteFriend=function(userId,friendId,node){Groopy.genericJoinFriend(userId,friendId,"friendInvitations",node)};Groopy.ignoreInvitation=function(relationId){alert("Deze functie is nog niet ontwikkeld. In de toekomst zal het mogelijk zijn uitnodigingen te negeren.")};Groopy.makeAdmin=function(userId,groopId,node){var action=appUrl+"/ToggleGroopAdminRoleAction.do?user-id="+userId+"&groop-id="+groopId+"&admin=true";ActionRequest.performRemoteAction(action,function(success,errorMsg,httpStatusCode){if(!success){return ActionRequest.defaultCallback(success,errorMsg,httpStatusCode)}var tdNode=dojo.dom.prevElement(node.parentNode);tdNode.innerHTML='<img src="'+appUrl+'/img/star-gold.png" alt="Beheerder"/>';tdNode=node.parentNode;tdNode.innerHTML="";var anchor=xmlElement("a",{href:"#"},[textNode("Verwijder beheerders rechten")]);anchor.onclick=function(){Groopy.removeAdmin(userId,groopId,anchor)};tdNode.appendChild(anchor)})};Groopy.removeAdmin=function(userId,groopId,node){var action=appUrl+"/ToggleGroopAdminRoleAction.do?user-id="+userId+"&groop-id="+groopId+"&admin=false";ActionRequest.performRemoteAction(action,function(success,errorMsg,httpStatusCode){if(!success){return ActionRequest.defaultCallback(success,errorMsg,httpStatusCode)}var tdNode=dojo.dom.prevElement(node.parentNode);tdNode.innerHTML="";tdNode=node.parentNode;tdNode.innerHTML="";var anchor=xmlElement("a",{href:"#"},[textNode("Maak beheerder")]);anchor.onclick=function(){Groopy.makeAdmin(userId,groopId,anchor)};tdNode.appendChild(anchor)})};Groopy.finishSignupGroop=function(){Standard.setCookie("finish-signup-groop","false",1,"/");Dialog.waitDialog.show();window.location=appUrl+"/signupGroop.page"};Groopy.cancelSignupGroop=function(){Standard.setCookie("finish-signup-groop","false",1,"/");dojo.html.hide(dojo.byId("finish-groop-message"))};Groopy.initUser=function(userId,userName){Groopy.user.id=userId;Groopy.user.name=userName;if(Standard.getCookie("finish-signup-groop")=="true"){var groopName=Standard.getCookie("groop-name");Groopy.showMessage("Je was bezig met het aanmaken van vriendengroep "+groopName+'<br/>Wil je hiermee verdergaan?<br/><br/><center><a href="#" onclick="Groopy.finishSignupGroop();">Hiermee verdergaan</a> | <a href="#" onclick="Groopy.cancelSignupGroop();">Annuleren</center>',"finish-groop-message")}if(Standard.getCookie("login-performed")=="true"){Standard.setCookie("login-performed","false",1,"/");return false;var userToGroopInvitations=function(){var handler=function(groopId,next){return function(data){if(data.size>0){var pageUrl=appUrl+"/groops/groop/invitations.page?id="+groopId;Groopy.showMessage("Er zijn "+data.size+' mensen die lid willen worden van je vriendengroep, deze moeten nog <a href="'+pageUrl+'">afgehandeld worden</a>.')}if(next){next()}}};var nextRequest=null;var chainRequest=function(datapath,boundId,next){return function(){Standard.retrieveJSON(datapath,handler(boundId,next))}};for(var i=0;i<Groopy.user.roles.length;i++){var role=Groopy.user.roles[i];var match="/groops";var roleMatch="groopAdmin";if(role==null||!role.path||role.path.indexOf(match)!=0||role.name.indexOf(roleMatch)!=0){continue}var boundId=role.path.substring(role.path.indexOf("(")+1,role.path.length);boundId=boundId.substring(0,boundId.indexOf(")"));var datapath="/userToGroopInvitations("+boundId+")/user";nextRequest=chainRequest(datapath,boundId,nextRequest)}if(nextRequest){nextRequest()}};var datapath="/friendInvitations("+userId+")/userA";Standard.retrieveJSON(datapath,function(data){if(data.size>0){var pageUrl=appUrl+"/users/user/invitations.page?id="+userId;Groopy.showMessage("Je hebt "+data.size+' vriend uitnodigingen die nog <a href="'+pageUrl+'">afgehandeld moeten worden</a>.')}userToGroopInvitations()})}};Groopy.toggleSlidePane=function(id){dojo.require("dojo.lfx.html");var element=dojo.byId(id);var ids=["images-slide-pane","videos-slide-pane","mp3s-slide-pane"];var effect={show:"wipeIn",hide:"wipeOut"};var anim;if(dojo.html.isShowing(element)){dojo.html.show(element);anim=dojo.lfx.html[effect.hide](new Array(element),Groopy.DEFAULT_ANIM_TIME);anim.play();return }else{anim=dojo.lfx.html[effect.show](new Array(element),Groopy.DEFAULT_ANIM_TIME);anim.play();for(var i=0;i<ids.length;i++){if(ids[i]==id){continue}element=dojo.byId(ids[i]);if(dojo.html.isShowing(element)){anim=dojo.lfx.html[effect.hide](new Array(element),Groopy.DEFAULT_ANIM_TIME);anim.play()}}}};function initObjects(){initMenu("menu");initMenu("groop-menu");if(dojo.render.html.ie){var userMenu=submenus[0];var hideSelect=function(){dojo.html.hide(dojo.byId("search-target"))};dojo.event.connect(userMenu,"show",hideSelect);dojo.event.connect(userMenu,"stopCurrentAndShow",hideSelect);dojo.event.connect(userMenu,"hide",function(){dojo.html.show(dojo.byId("search-target"))})}var features=dojo.byId("features-animation");if(features){new SlideAnimation(features,"features").play()}Groopy.search=new SearchController()}function initMenu(menuId){var menu=dojo.byId(menuId);if(menu){for(var i=0;i<menu.childNodes.length;i++){var node=menu.childNodes.item(i);if(node.nodeType!=dojo.dom.ELEMENT_NODE){continue}var anchor=dojo.dom.getFirstChildElement(node);if(!anchor){continue}var submenu=dojo.dom.nextElement(anchor);if(!submenu||!submenu.className.contains("submenu")){continue}var animator=new Submenu(submenu,anchor);submenus[submenus.length]=animator}}}addOnDomLoad(initObjects);Groopy.invite={showInviteFromForm:function(service){var img=dojo.byId("selectedServiceImg");img.src=appUrl+"/img/import_from_"+service+".gif";dojo.byId("selectedService").value=service;var nameLabel="e-mail:";var type="email";var initValue="";if(service=="hyves"){nameLabel="Hyves gebruikersnaam:";type="string"}else{if(service=="live"){nameLabel="Hotmail e-mail: ";initValue="@hotmail.com"}else{if(service=="gmail"){nameLabel="Gmail e-mail: ";initValue="@gmail.com"}}}try{dojo.byId("invite-name-label").innerHTML=nameLabel;var usernameInput=dojo.byId("/username");usernameInput.setAttribute("form-type",type);if(usernameInput.value.length>0){Validator.validateField(usernameInput)}else{usernameInput.value=initValue}}catch(e){}dojo.html.hide(dojo.byId("selectService"));dojo.html.show(dojo.byId("inviteFriendsForm"))},selectService:function(){var time=400;dojo.html.hide(dojo.byId("inviteFriendsForm"));var anim=dojo.lfx.html.wipeIn([dojo.byId("selectService")],time);anim.play()},submitForm:function(formId){if(Validator.validateForm(formId)){ActionRequest.performRemoteFormAction("./InviteFriendsAction.do",formId,Groopy.invite.formHandler);return true}else{return false}},formHandler:function(success,errorMsg,httpStatusCode){if(!success){if(errorMsg.indexOf("AuthenticationException")>-1){Dialog.errorDialog.show("De gebruikersnaam/email en wachtwoord zijn onbekend bij deze service. Probeer het overnieuw met andere inlog-gegevens.");return }ActionRequest.defaultCallback(success,errorMsg,httpStatusCode)}else{var time=400;dojo.html.hide(dojo.byId("inviteFriendsForm"));var anim=dojo.lfx.html.wipeIn([dojo.byId("inviteFriendsDone")],time);anim.play()}}};var submenus=[];function Submenu(element,anchor){this.element=element;this.anchor=anchor;this.anim;this.nodeHeight=dojo.html.getBorderBox(this.element).height;this.element.style.display="none";this.showAnim=dojo.lfx.html.fadeShow([this.element],Submenu.ANIM_TIME);this.hideAnim=dojo.lfx.html.fadeHide([this.element],Submenu.ANIM_TIME);dojo.event.connect(anchor,"onmouseover",this,"show");dojo.event.connect(anchor,"onmouseout",this,"hide");dojo.event.connect(element,"onmouseout",this,"hide");dojo.event.connect(element,"onmouseover",this,"stopCurrentAndShow")}Submenu.ANIM_TIME=200;Submenu.prototype.stopCurrentAndShow=function(){this.stopCurrent(true)};Submenu.prototype.stopCurrent=function(show){try{if(this.anim){this.anim.gotoPercent(100,false);this.anim.stop()}}catch(e){}this.anim=null;if(show){dojo.html.clearOpacity(this.element);dojo.html.show(this.element)}else{dojo.html.hide(this.element)}};Submenu.prototype.show=function(){this.hideOthers();this.element.style.zIndex=140;if(dojo.html.isShowing(this.element)){this.stopCurrentAndShow()}else{this.stopCurrent(false);this.anim=this.showAnim;this.anim.play()}};Submenu.prototype.hide=function(){if(!dojo.html.isShowing(this.element)){return }this.element.style.zIndex=40;this.stopCurrentAndShow();this.anim=this.hideAnim;var me=this;window.setTimeout(function(){if(me.anim){me.anim.play()}},200)};Submenu.prototype.playAnim=function(){if(this.anim){this.anim.play()}};Submenu.prototype.hideOthers=function(){for(var i=0;i<submenus.length;i++){if(submenus[i]==this){continue}submenus[i].hide()}};function SlideAnimation(element,name){this.name=name;this.element=element;this.width=dojo.html.getBorderBox(this.element).width;this.index=0;this.panels=[];this.timeout=null;for(var i=0;i<element.childNodes.length;i++){var node=element.childNodes.item(i);if(node.nodeType!=dojo.dom.ELEMENT_NODE){continue}node.style.left=this.width+"px";this.panels[this.panels.length]=node}SlideAnimation.anims[name]=this}SlideAnimation.anims={};SlideAnimation.ANIM_TIME=1000;SlideAnimation.SHOW_TIME=5000;SlideAnimation.prototype.play=function(){this.showCurrent();var me=this;this.timeout=window.setTimeout(function(){me.showNext()},SlideAnimation.SHOW_TIME)};SlideAnimation.prototype.stopAnim=function(){if(this.timeout){window.clearTimeout(this.timeout)}};SlideAnimation.prototype.restartAnim=function(){this.showNext()};SlideAnimation.prototype.showNext=function(){this.show((this.index+1)%this.panels.length)};SlideAnimation.prototype.show=function(index){var prev=this.index;this.index=index;this.hidePanel(prev);this.showCurrent();this.play()};SlideAnimation.prototype.showCurrent=function(){var current=this.panels[this.index];var anim=dojo.lfx.combine(dojo.lfx.html.fadeShow([current],SlideAnimation.ANIM_TIME),dojo.lfx.html.slideTo([current],{top:0,left:0},SlideAnimation.ANIM_TIME));anim.play();var nav=dojo.byId(this.name+"-nav-"+this.index);if(nav){dojo.html.addClass(nav,"active")}};SlideAnimation.prototype.gotoSlide=function(index){this.stopAnim();this.show(index)};SlideAnimation.prototype.hidePanel=function(index){dojo.html.hide(this.panels[index]);this.panels[index].style.left=this.width+"px";var nav=dojo.byId(this.name+"-nav-"+index);if(nav){dojo.html.removeClass(nav,"active")}};function SearchController(){this.form=dojo.byId("search-form");this.input=dojo.dom.firstElement(this.form);this.input.value=SearchController.INIT_SEARCH_TEXT;this.navigator=null;this.navigatorElement=null;this.select=dojo.dom.nextElement(this.input);this.resultsContainer=null;this.searchResults=null;this.datapath=null;this.resultSize=-1;dojo.event.connect(this.form,"onsubmit",this,"doSearch");dojo.event.connect(this.input,"onfocus",this,"onFocus")}SearchController.INIT_SEARCH_TEXT="..zoeken..";SearchController.SUBSET_SIZE=8;addOnDomLoad(function(){SearchController.NO_AVATAR_IMG=xmlElement("img",{src:appUrl+"/img/no_photo.gif",width:120,height:140})});SearchController.prototype.isGroopsSelected=function(){return this.select.value=="groops"};SearchController.prototype.getSearchString=function(){return this.input.value};SearchController.prototype.reset=function(){this.resultsContainer=null};SearchController.prototype.doSearch=function(){this.reset();this.input.value=dojo.string.trim(this.input.value);var searchString=this.getSearchString();if(searchString.length<2){Dialog.warningDialog.show("De zoek-term '"+searchString+"' is te kort, gebruik minimaal 2 tekens om het zoekresultaat te beperken..");return }if(this.isGroopsSelected()){this.datapath="/groops"}else{this.datapath="/users"}var me=this;Standard.retrieveJSON(this.datapath,function(data){me.jsonHandler(data)},searchString,"size="+SearchController.SUBSET_SIZE)};SearchController.prototype.onFocus=function(){if(this.input.value==SearchController.INIT_SEARCH_TEXT){this.input.value=""}};SearchController.prototype.buildUI=function(){if(this.resultsContainer!=null){return }this.resultsContainer=xmlElement("div",{clazz:"results-container"});this.searchResults=xmlElement("div",{clazz:"search-results",style:"display:none;"},[xmlElement("h1",{},[textNode("Zoek resultaten voor "),xmlElement("i",{},[textNode(this.input.value)])])]);Standard.require("xdatasystem.collectionnavigator");this.navigatorElement=xmlElement("div");var navigateAction=function(index,callback){var me=this;Standard.retrieveJSON(this.datapath,function(data){me.jsonHandler(data)},this.getSearchString(),"size="+SearchController.SUBSET_SIZE+"&index="+index);callback()}.bind(this);this.navigator=new CollectionNavigator(this.navigatorElement,navigateAction,this.resultSize,0,SearchController.SUBSET_SIZE);this.navigator.buildNodes();this.searchResults.appendChild(this.resultsContainer);this.searchResults.appendChild(this.navigatorElement);var contentElement=dojo.byId("content");dojo.dom.removeChildren(contentElement);contentElement.appendChild(this.searchResults)};SearchController.prototype.jsonHandler=function(data){this.resultSize=data.size;this.buildUI();dojo.dom.removeChildren(this.resultsContainer);var data=data.collection;if(data.length==0){var message=xmlElement("div",{clazz:"message info"},[textNode("Zoekopdracht heeft geen resultaten opgeleverd")]);this.resultsContainer.appendChild(message)}else{for(var i=0;i<data.length;i++){var result=data[i];this.resultsContainer.appendChild(this.fillTemplate(result))}}var anim=dojo.lfx.html.fadeShow([this.searchResults],Groopy.DEFAULT_ANIM_TIME);anim.play()};SearchController.prototype.fillTemplate=function(data){var id=data.id;data=data.value;if(this.isGroopsSelected()){var img;if(data.photo==null){img=SearchController.NO_AVATAR_IMG}else{var photo=appUrl+"/"+data.photo+".border2_backgroundFFF_170x140.image";img=xmlElement("img",{src:photo})}return xmlElement("a",{href:appUrl+"/groops/groop.page?id="+id},[xmlElement("div",{clazz:"box column-cell-4 user"},[xmlElement("center",{},[xmlElement("h3",{},[textNode(data.name)]),xmlElement("br"),img])])])}else{var img;if(data.avatar==null){img=SearchController.NO_AVATAR_IMG}else{var photo=appUrl+"/"+data.avatar+".border2_backgroundFFF_170x140.image";img=xmlElement("img",{src:photo})}return xmlElement("a",{href:appUrl+"/users/user.page?id="+id},[xmlElement("div",{clazz:"box column-cell-4 user"},[xmlElement("center",{},[xmlElement("h3",{},[textNode(data.name)]),xmlElement("br"),img])])])}};Groopy.showYouTubeVideoForm=function(containerId,datapath){if(!dojo){alert("Wacht tot de pagina geladen is");return }new YouTubeForm(dojo.byId(containerId),datapath,Groopy.youTubeSubmitHandler)};Groopy.youTubeSubmitHandler=function(form,video){var datapath=form.datapath;var action=appUrl+"/CreateAction.do?data-path="+datapath;var addParam=function(name,value){action+="&"+name+"="+dojo.string.encodeAscii(value)};addParam("member-path",datapath);addParam(datapath+"/title","Video: "+video.getTitle());addParam(datapath+"/content",video.getEmbedCode());dojo.event.connect(Dialog.okDialog,"okEvent",function(isForm,callingFunction){Dialog.waitDialog.show();window.location.reload()});ActionRequest.triggerDataUpdate();ActionRequest.performRemoteFormAction(action,false,false,ActionRequest.createData)};function YouTubeForm(container,datapath,submitHandler){this.container=container;this.datapath=datapath;this.selectedMovie=false;this.searchForm;this.searchButton;this.searchInput;this.resultsContainer;this.submitHandler=submitHandler;this.buildDom();dojo.event.connect(this.searchForm,"onsubmit",this,"startSearch")}YouTubeForm.FORM_TITLE="YouTube video toevoegen";YouTubeForm.INSTRUCTION_MSG="Zoek naar de video die je plaatsen wilt";YouTubeForm.SEARCHING_MSG="Bezig met zoeken...";YouTubeForm.NO_RESULTS_MSG="Zoekopdracht heeft geen resultaten opgeleverd";YouTubeForm.SUBMIT_THIS_VIDEO_MSG="Deze video plaatsen";YouTubeForm.THUMBNAIL_WIDTH=120;YouTubeForm.THUMBNAIL_HEIGHT=90;YouTubeForm.CONTAINER_CSSCLASS="youTubeContainer f-class";YouTubeForm.SEARCH_INPUT_CSSCLASS="youTubeSearchInput";YouTubeForm.RESULTS_CSSCLASS="youTubeResults";YouTubeForm.VIDEO_ENTRY_CSSCLASS="youTubeEntry";YouTubeForm.prototype.buildDom=function(){this.container.appendChild(xmlElement("div",{clazz:"f-class-name"},[textNode(YouTubeForm.FORM_TITLE)]));this.searchButton=xmlElement("input",{type:"submit",clazz:"button",value:"Zoek Video"});this.searchInput=xmlElement("input",{clazz:YouTubeForm.SEARCH_INPUT_CSSCLASS});this.resultsContainer=xmlElement("div",{clazz:YouTubeForm.RESULTS_CSSCLASS},[this.getMessageNode(YouTubeForm.INSTRUCTION_MSG)]);this.searchForm=xmlElement("form",{action:"#"},[this.searchInput,xmlElement("div",{clazz:"button"},[this.searchButton])]);this.searchForm.onsubmit=function(){return false};var formContent=xmlElement("div",{clazz:"f-class-value"},[this.searchForm,this.resultsContainer,xmlElement("div",{style:"clear:both;float:none;"},[textNode(" ")])]);this.container.appendChild(formContent);var clazz="";if(this.container.className!=""){clazz=this.container.className+" "}this.container.className=clazz+YouTubeForm.CONTAINER_CSSCLASS};YouTubeForm.prototype.startSearch=function(){this.showMessage(YouTubeForm.SEARCHING_MSG);this.searchInput.value=dojo.string.trim(this.searchInput.value);var searchTerm=this.searchInput.value;var jsonUrl="http://gdata.youtube.com/feeds/api/videos?vq="+searchTerm+"&racy=include&orderby=viewCount&alt=json-in-script";var me=this;Standard.requestJSON(jsonUrl,function(data){me.jsonHandler(data)},true,"callback")};YouTubeForm.prototype.jsonHandler=function(data){dojo.html.hide(this.resultsContainer);dojo.dom.removeChildren(this.resultsContainer);var entryCount=0;var entry=true;if(data.feed.entry){for(var i=0,entry;entry=data.feed.entry[i];i++){this.resultsContainer.appendChild(this.fillVideoTemplate(new YouTubeVideo(entry)));entryCount++}}if(entryCount==0){this.showMessage(YouTubeForm.NO_RESULTS_MSG)}else{this.fadeShowResults()}};YouTubeForm.prototype.fadeShowResults=function(){var anim=dojo.lfx.html.fadeShow([this.resultsContainer],Groopy.DEFAULT_ANIM_TIME);anim.play()};YouTubeForm.prototype.fillVideoTemplate=function(video){var element=xmlElement("a",{href:"#",clazz:YouTubeForm.VIDEO_ENTRY_CSSCLASS},[xmlElement("img",{src:video.getThumbnail(),width:YouTubeForm.THUMBNAIL_WIDTH,height:YouTubeForm.THUMBNAIL_HEIGHT}),xmlElement("b",{},[textNode(video.getTitle())])]);var me=this;element.onclick=function(){me.selectVideo(video);return false};return element};YouTubeForm.prototype.selectVideo=function(video){dojo.dom.removeChildren(this.resultsContainer);dojo.html.hide(this.resultsContainer);this.resultsContainer.appendChild(xmlElement("h3",{},[textNode(video.getTitle())]));var flashContent=xmlElement("div");flashContent.innerHTML=video.getEmbedCode();this.resultsContainer.appendChild(flashContent);this.resultsContainer.appendChild(xmlElement("p",{},[textNode(video.getDescription())]));var submitVideoLink=xmlElement("input",{type:"button",clazz:"button f-button-submit",value:YouTubeForm.SUBMIT_THIS_VIDEO_MSG});var me=this;submitVideoLink.onclick=function(){me.submitVideo(video)};this.resultsContainer.appendChild(xmlElement("div",{clazz:"button f-button-submit"},[submitVideoLink]));this.fadeShowResults()};YouTubeForm.prototype.submitVideo=function(video){this.submitHandler(this,video)};YouTubeForm.prototype.getMessageNode=function(msg){return xmlElement("div",{clazz:"message info"},[textNode(msg)])};YouTubeForm.prototype.showMessage=function(msg){dojo.dom.removeChildren(this.resultsContainer);dojo.html.hide(this.resultsContainer);this.resultsContainer.appendChild(this.getMessageNode("Zoekopdracht heeft geen resultaten opgeleverd"));this.fadeShowResults()};function YouTubeVideo(entry){this.entry=entry}YouTubeVideo.FLASH_MIME_TYPE="application/x-shockwave-flash";YouTubeVideo.prototype.getTitle=function(){return this.entry.media$group.media$title.$t};YouTubeVideo.prototype.getThumbnail=function(){return this.entry.media$group.media$thumbnail[0].url};YouTubeVideo.prototype.getDescription=function(){return this.entry.media$group.media$description.$t};YouTubeVideo.prototype.getURL=function(){return this.findMediaContentHref(YouTubeVideo.FLASH_MIME_TYPE)};YouTubeVideo.prototype.findMediaContentHref=function(mimeType){var content=true;for(var i=0,content;content=this.entry.media$group.media$content[i];i++){if(content.type==mimeType){return content.url}}return null};YouTubeVideo.prototype.getEmbedCode=function(autoPlay,addRelated){var videoHref=this.getURL()+"&rel=";if(addRelated){videoHref+="1"}else{videoHref+="0"}videoHref+="&autoPlay=";if(autoPlay){videoHref+="1"}else{videoHref+="0"}var html=[];html.push('<object width="425" height="350"><param name="movie" value="');html.push(videoHref);html.push('"></param><param name="wmode" value="transparent">');html.push('</param><embed src="');html.push(videoHref);html.push('" type="application/x-shockwave-flash" ');html.push('wmode="transparent" width="425" height="350"></embed></object>');return html.join("")};self.AlbumUpload=function(datapath,progressContainer,buttonContainer,formId){FormUploader.FILE_TYPES.imagevideo=[FormUploader.FILE_TYPES.image+";"+FormUploader.FILE_TYPES.image,"Afbeeldingen en Videos"];FormUploader.call(this,["imagevideo"]);this.loadQueueUploadSupport();this.setMultiple(true);this.setSingleProgressBar(false);this.setProgressBarContainer(progressContainer);this.buttonContainer=buttonContainer;this.formId=formId;this.form=dojo.byId(formId);this.datapath=datapath;this.imagesCounter=1;this.videosCounter=1;this.buildDOM();this.buildSWFUpload();dojo.event.connect(this.swfupload.settings,"queue_complete_handler",this,"uploadQueueComplete")};AlbumUpload=self.AlbumUpload;if(dojo){dojo.inherits(AlbumUpload,FormUploader)}AlbumUpload.showForm=function(datapath,id){var formId=id+"-form";var form=dojo.byId(formId);new AlbumUpload(datapath,dojo.byId(id+"-progressContainer"),dojo.byId(id+"-buttonContainer"),formId);dojo.html.hide(dojo.byId(id+"-new-button-container"));var container=dojo.byId(id);var next=dojo.dom.nextElement(container);while(next&&next.nodeType){dojo.html.hide(next);next=dojo.dom.nextElement(next)}dojo.html.show(dojo.byId(id));WidgetLoader.replaceWidgets(form)};AlbumUpload.prototype.buildDOM=function(){this.browseButton=xmlElement("input",{type:"button",clazz:"button",value:"Selecteer foto's & videos"});this.buttonContainer.appendChild(xmlElement("div",{clazz:"button"},[this.browseButton]));this.uploadButton=xmlElement("input",{type:"button",clazz:"button",value:"Upload het album"});this.buttonContainer.appendChild(xmlElement("div",{clazz:"button"},[this.uploadButton]));dojo.event.connect(this.browseButton,"onclick",this,"onBrowseClick");dojo.event.connect(this.uploadButton,"onclick",this,"onUploadClick")};AlbumUpload.prototype.onBrowseClick=function(){this.swfupload.selectFiles()};AlbumUpload.prototype.onUploadClick=function(){if(this.getQueueSize()==0){Dialog.warningDialog.show("De wachtrij is leeg! Selecteer eerst een aantal foto's en videos.");return }if(Validator.validateForm(this.formId)){this.browseButton.disabled="true";this.uploadButton.disabled="true";this.startUpload()}};AlbumUpload.prototype.uploadSuccess=function(file,serverData){FormUploader.prototype.uploadSuccess.apply(this,[file,serverData]);if(serverData!==" "){this.addUploadedFileInput(serverData)}};AlbumUpload.prototype.addUploadedFileInput=function(filename){var path=this.datapath+"/images-"+this.imagesCounter;var inputEl=xmlElement("input",{type:"hidden",name:path,value:"true"});this.form.appendChild(inputEl);path=this.datapath+"/images-"+this.imagesCounter+"/image_file_name";inputEl=xmlElement("input",{type:"hidden",name:path,value:filename});this.form.appendChild(inputEl);this.imagesCounter++};AlbumUpload.prototype.uploadQueueComplete=function(){dojo.event.connect(Dialog.okDialog,"okEvent",function(isForm,callingFunction){Dialog.waitDialog.show();window.location.reload()});ActionRequest.createData(this.datapath,this.formId)};AlbumUpload.prototype.loadQueueUploadSupport=function(){if(typeof (SWFUpload)==="function"){SWFUpload.queue={};SWFUpload.prototype.initSettings=(function(oldInitSettings){return function(){if(typeof (oldInitSettings)==="function"){oldInitSettings.call(this)}this.customSettings.queue_cancelled_flag=false;this.customSettings.queue_upload_count=0;this.settings.user_upload_complete_handler=null;this.settings.upload_complete_handler=SWFUpload.queue.uploadCompleteHandler;this.settings.queue_complete_handler=this.settings.queue_complete_handler||null}})(SWFUpload.prototype.initSettings);SWFUpload.prototype.startUpload=function(fileID){this.customSettings.queue_cancelled_flag=false;this.callFlash("StartUpload",false,[fileID])};SWFUpload.prototype.cancelQueue=function(){this.customSettings.queue_cancelled_flag=true;this.stopUpload();var stats=this.getStats();while(stats.files_queued>0){this.cancelUpload();stats=this.getStats()}};SWFUpload.queue.uploadCompleteHandler=function(file){var user_upload_complete_handler=this.settings.user_upload_complete_handler;var continueUpload;if(file.file_status===SWFUpload.FILE_STATUS.COMPLETE){this.customSettings.queue_upload_count++}if(typeof (user_upload_complete_handler)==="function"){continueUpload=(user_upload_complete_handler.call(this,file)===false)?false:true}else{continueUpload=true}if(continueUpload){var stats=this.getStats();if(stats.files_queued>0&&this.customSettings.queue_cancelled_flag===false){this.startUpload()}else{if(this.customSettings.queue_cancelled_flag===false){this.queueEvent("queue_complete_handler",[this.customSettings.queue_upload_count]);this.customSettings.queue_upload_count=0}else{this.customSettings.queue_cancelled_flag=false;this.customSettings.queue_upload_count=0}}}}}};var album={};self.album=album;album.THUMB_WIDTH=-1;album.THUMB_HEIGHT=100;album.THUMB_PADDING=4;album.WIDTH=570;album.SLIDE_AMOUNT=400;album.SLIDESHOW_TIME=3000;album.INITIAL_NUM_THUMBS=16;album.Viewer=function(datapath,carouselContainer,imageContainer,prevButton,nextButton,slideshowButton,commentsContainer,ratingId,newCommentButtonId){this.datapath=datapath;this.albumCarousel=new album.Carousel(datapath,carouselContainer,this);this.imageContainer=imageContainer;this.prevButton=prevButton;this.nextButton=nextButton;this.slideshowButton=slideshowButton;this.commentsContainer=commentsContainer;this.ratingId=ratingId;this.newCommentButtonId=newCommentButtonId;this.newCommentButton=dojo.dom.firstElement(dojo.dom.firstElement(dojo.byId(newCommentButtonId)));dojo.event.connect(this.prevButton,"onclick",this.albumCarousel,"slidePrevious");dojo.event.connect(this.nextButton,"onclick",this.albumCarousel,"slideNext");if(this.slideshowButton){dojo.event.connect(this.slideshowButton,"onclick",this.albumCarousel,"startSlideshow")}};album.Viewer.prototype.showImage=function(image,index,callback){Dialog.waitDialog.show();var me=this;image.preloadBig(function(){var currentImage=dojo.dom.firstElement(me.imageContainer);Dialog.waitDialog.hide();var imageElement=image.getBigHtml();dojo.html.hide(imageElement);me.imageContainer.appendChild(imageElement);var anim1=dojo.lfx.html.fadeShow([imageElement],500);dojo.event.connect(anim1,"onEnd",function(){me.imageContainer.style.height="auto";dojo.dom.removeChildren(me.commentsContainer);me.commentsContainer.appendChild(image.getCommentsHtml());image.showRating(me.ratingId,me.datapath);if(Groopy.user.id){me.newCommentButton.onclick=function(){Form.showNewForm(me.newCommentButtonId,image.getDatapath(me.datapath)+"/comments",true,true)}}if(callback){callback()}});var anim2=dojo.lfx.html.fadeHide([currentImage],500);var height=dojo.html.getBorderBox(me.imageContainer).height;me.imageContainer.style.height=height+"px";dojo.event.connect(anim2,"onEnd",function(){dojo.dom.removeNode(currentImage);anim1.play()});anim2.play()})};album.Carousel=function(datapath,container,viewer){this.viewer=viewer;this.container=container;this.datapath=datapath;this.carouselList;this.images=[];this.anchorElements=[];this.currentIndex=0;var me=this;this.slideshowTimeout=null;Standard.retrieveJSON(datapath,function(data){window.setTimeout(function(){me.handleJSON(data)},10)})};album.Carousel.prototype.handleJSON=function(jsonAlbum){var i=0;for(i=0;i<jsonAlbum.images.collection.length;i++){this.images[this.images.length]=new album.AlbumImage(jsonAlbum.images.collection[i])}this.buildDOM()};album.Carousel.prototype.buildDOM=function(){var i=0;this.carouselList=xmlElement("div",{clazz:"carouselList"});for(i=0;i<this.images.length;i++){var image=this.images[i];var imageElement=image.getThumbHtml();image.thumbElement=imageElement;image.isLoaded=true;if(i>album.INITIAL_NUM_THUMBS){imageElement.src="";image.isLoaded=false}var anchor=xmlElement("a",{href:"javascript:;",clazz:"albumImageThumb"},[imageElement]);var me=this;anchor.onclick=function(index){return function(){me.selectImage(index);return false}}(i);this.anchorElements[this.anchorElements.length]=anchor;this.carouselList.appendChild(anchor)}this.container.appendChild(this.carouselList);var me=this;try{this.container.addEvent("mousewheel",function(e){e=new Event(e).stop();if(e.wheel>0){me.slideNext();if(e.wheel<0){me.slidePrevious()}}})}catch(e){}};album.Carousel.prototype.calculateWidthUntil=function(index){var width=0;var i=0;for(i=0;i<index;i++){var anchor=this.anchorElements[i];var box=dojo.html.getBorderBox(anchor);width+=box.width}return width};album.Carousel.prototype.preloadImages=function(){var i=0;var j=0;for(i=0;i<this.images.length;i++){var image=this.images[i];if(image.isLoaded){continue}if(j<5){image.thumbElement.src=image.getThumbURL();image.isLoaded=true;j++}}};album.Carousel.prototype.selectImage=function(index,callback){var doPreload=index>this.currentIndex;this.currentIndex=index;var image=this.images[index];this.viewer.showImage(image,index,callback);var left=this.calculateWidthUntil(index);var anim=dojo.lfx.html.slideTo([this.carouselList],{top:0,left:-left+350},800);if(doPreload){dojo.event.connect(anim,"onEnd",this,"preloadImages")}anim.play()};album.Carousel.prototype.startSlideshow=function(){if(this.slideshowTimout){this.stopSlideshow()}this.nextSlideshow()};album.Carousel.prototype.nextSlideshow=function(){var me=this;var callback=function(){me.slideshowTimeout=window.setTimeout(function(){me.nextSlideshow()},album.SLIDESHOW_TIME)};me.showNext(callback)};album.Carousel.prototype.stopSlideshow=function(){window.clearTimeout(this.slideshowTimeout)};album.Carousel.prototype.showNext=function(callback){this.currentIndex++;this.currentIndex%=this.images.length;this.selectImage(this.currentIndex,callback)};album.Carousel.prototype.slideNext=function(){this.slideNextPrevious(-1)};album.Carousel.prototype.slidePrevious=function(){this.slideNextPrevious(1)};album.Carousel.prototype.slideNextPrevious=function(direction){var left=this.getCarouselListLeft();left+=direction*(album.SLIDE_AMOUNT);var anim=dojo.lfx.html.slideTo([this.carouselList],{top:0,left:left},800);if(direction==-1){dojo.event.connect(anim,"onEnd",this,"preloadImages")}anim.play()};album.Carousel.prototype.getCarouselListLeft=function(){var left=this.carouselList.style.left;var index=left.indexOf("px");if(index>0){left=parseInt(left.substring(0,index))}return left};album.AlbumImage=function(image){this.id=image.id;this.description=image.value.descr;this.time=image.value.time;this.rating=image.value.rating;this.comments=image.value.comments.collection;this.imagePath=image.value.image;this.image=null;this.thumb=null};album.AlbumImage.prototype.getURL=function(){return appUrl+"/repository/"+this.imagePath};album.AlbumImage.prototype.getThumbURL=function(){return appUrl+"/"+this.imagePath+"."+album.THUMB_WIDTH+"x"+album.THUMB_HEIGHT+".image?usePng=false"};album.AlbumImage.prototype.getThumbHtml=function(){return xmlElement("img",{src:this.getThumbURL(),clazz:"albumImageThumb"})};album.AlbumImage.prototype.getBigURL=function(){return appUrl+"/"+this.imagePath+".border2_"+album.WIDTH+"x-1.image?usePng=false"};album.AlbumImage.prototype.getBigHtml=function(){return xmlElement("a",{href:this.getURL()},[xmlElement("img",{src:this.getBigURL(),clazz:"albumImageBig"})])};album.AlbumImage.prototype.preloadThumb=function(handler){this.thumb=new Image();if(handler){this.thumb.onload=handler}this.thumb.src=this.getThumbURL()};album.AlbumImage.prototype.preloadBig=function(handler){this.image=new Image();if(handler){this.image.onload=handler}this.image.src=this.getBigURL()};album.AlbumImage.prototype.getCommentsHtml=function(){var container=xmlElement("div");var i=0;for(i=0;i<this.comments.length;i++){var value=this.comments[i].value;var commentDiv=xmlElement("div",{clazz:"comment"});commentDiv.appendChild(xmlElement("img",{src:appUrl+"/img/comment.png"}));var p=xmlElement("p");p.innerHTML=value.comment;commentDiv.appendChild(p);var author=xmlElement("div",{clazz:"author"},[xmlElement("a",{href:appUrl+"/users/user.page?id="+value.user.id},[textNode("Door "+value.user.name)])]);commentDiv.appendChild(author);container.appendChild(commentDiv)}return container};album.AlbumImage.prototype.showRating=function(ratingId,albumDatapath){var ratingEl=dojo.byId(ratingId+"-widget");dojo.dom.removeChildren(ratingEl);var numVotesEl=dojo.byId(ratingId+"-num-votes");dojo.dom.removeChildren(numVotesEl);var index=this.rating.indexOf(" ");var numVotes=0;var currentRating=0;if(index>0){currentRating=parseInt(this.rating.substring(0,index));numVotes=parseInt(this.rating.substring(index+1))}numVotesEl.appendChild(textNode(""+numVotes));var datapath=this.getDatapath(albumDatapath)+"/rating";new AjaxRatingWidget(ratingId,datapath,"rating",currentRating)};album.AlbumImage.prototype.getDatapath=function(albumDatapath){return albumDatapath+"/images("+this.id+")"};