/* modules-portals
 
@author Jacob at Goby
 @version 09/02/11
@svn goby_-150
*/

var flashmapPortals=[];function PortalFlashmap(params)
{for(var i in PortalTab.prototype)
this[i]=PortalTab.prototype[i];this.cbID=flashmapPortals.length;flashmapPortals[this.cbID]=this;this._construct(params);this.display=function()
{var content=this.drawContent();content.innerHTML=initFlashMap(this.params.regionID,false,'flashmapPortals['+this.cbID.toString()+'].setPortalArea');}
this.setPortalArea=function(data)
{try
{var params={node_value:data.label,node_id:data.id,level:data.level,action:"getLocationByMap"}
var request=new AjaxRequest(AJAX_PATH+"search_requests.php",{object:this,method:"suggestNode"},params,"GET");request.makeRequest();}
catch(e)
{alert(e.message);}}
this.suggestNode=function(data)
{if((!data.full_name)||(!data.id))
{if(data.error!=null)
alert(data.error)
return false;}
var searchField=Goby.get("searchbox").getField("where");searchField.setValue(data.full_name);searchField.setID(data.id);}}
function PortalGoogle(params)
{for(var i in PortalTab.prototype)
this[i]=PortalTab.prototype[i];this._construct(params);this.display=function()
{this.drawContent();Goby.get("MapLoader").loadMap({object:this,method:"renderMap"});}
this.renderMap=function()
{try
{var location=this.mgr.getLocation();var mapNode=new Div({className:'map_item'});this.content.appendChild(mapNode);this.map=new mapHandler({type:this.params.type?this.params.type:"portal",results:this.params.results?this.params.results:null,location:location,noDrag:(this.params.drag?false:true),container:mapNode,widget:this,size:{x:300,y:260},callback:this.params.callback});this.map.widget=this;if(this.params.results)
for(var i in this.params.results)
this.setPoint(this.params.results[i]);}
catch(e)
{Goby.reportError(e);}}
this.setPoint=function(result){this.map.setPoint(result);}
this.getNode=function(id)
{switch(id)
{case"big":return document.getElementById("map");break;case"small":default:return this.mgr.getContainer();break;}}
this.changeSize=function(label)
{var node=this.getNode(label);var content=new Div({className:'map_item'});this.content.appendChild(content);if(node)
node.appendChild(this.content);this.map.reformat({size:(label=='big'?{x:945,y:480}:{x:300,y:260}),container:content,type:label});}
this.pinCallback=function()
{}
this.resetCenter=function(data)
{if(this.map)
{this.map.resetCenter({'lat':data.lat,'lng':data.lng});}}}
function PortalPhotos(params)
{if((typeof WidgetMgr!="undefined")&&(params.mgr instanceof WidgetMgr))
{for(var i in WidgetTab.prototype)
this[i]=WidgetTab.prototype[i];}
else
{for(var i in PortalTab.prototype)
this[i]=PortalTab.prototype[i];}
this._construct(params);this.display=function()
{this.content=this.drawContent();this.content.id="portalPhotos";var location=this.mgr.getLocation();if(this.params.images!=null)
this.load(this.params);else
var request=this.makeRequest({object:this,method:"load"},{locationId:location.id});}
this.load=function(data)
{if(data.images==null)
{this.close();return false;}
var list=document.createElement("ul");list.id="creationImages";$(list).css({width:this.params.size.width,height:this.params.size.height+48});this.content.appendChild(list);this.content.appendChild(getClear());this.slideshow=new SlideShowWrapper({container:list,size:this.params.size,resize:(this.params.resize==null||this.params.resize==true?true:false),portalArea:this.content,images:data.images});}}
function SlideShowWrapper(params)
{this.images=params.images;this.container=params.container;this.portalArea=params.portalArea;this.size=params.size;this.resize=params.resize;this.portalArea.insertBefore(this.renderControls(),this.container);for(var i in this.images)
this.container.appendChild(this.display(this.images[i]));if(this.container)
this.slideshow=new SlideShow(this.container,this.ctrl);}
SlideShowWrapper.prototype={renderControls:function()
{var controls=document.createElement("div");controls.id="ctrl";var next=document.createElement("a");var prev=document.createElement("a");next.className="next creationButton";prev.className="prev creationButton";var uh=document.createElement("span");prev.appendChild(uh);uh.innerHTML="prev";var uh=document.createElement("span");next.appendChild(uh);uh.innerHTML="next";controls.appendChild(prev);controls.appendChild(next);var ctrlBnds=document.createElement("div");ctrlBnds.id="ctrlBounds";this.portalArea.appendChild(controls);this.portalArea.appendChild(ctrlBnds);var ctrlCss={height:this.size.height,width:(this.size.width/2)}
nextCss={height:this.size.height,width:(this.size.width/2)};prevCss={height:this.size.height,width:(this.size.width/2)};var prevHeight=((ctrlCss.height/2)-18);var ctrlWidth=(ctrlCss.width-25);var ctrlHeight=(ctrlCss.height/2)-18;nextCss.backgroundPosition=ctrlWidth+"px"+" "+ctrlHeight+"px";prevCss.backgroundPosition="0px"+" "+ctrlHeight+"px";$(next).css(nextCss);$(prev).css(prevCss);$(controls).css(this.size);this.ctrl=controls;return controls;},display:function(i)
{var content=document.createElement("li");content.className="mainImage";var img=document.createElement("img");var caption=document.createElement("div");if(this.resize)
img.src=compileThumbnail(i.path,null,this.size.width+"x"+this.size.height);else
img.src=i.path;img.width=this.size.width;img.height=this.size.height;$(img).css(this.size);img.alt=i.caption;img.className="img";if(i.author)
{var watermark=document.createElement("div");watermark.className="watermark";watermark.author=document.createElement("a");watermark.author.src=i.link;watermark.author.className="author";watermark.author.innerHTML="Photo&nbsp;By&nbsp;"+i.author;if(i.watermark)
{watermark.licence=document.createElement("a");watermark.licence.className="license";watermark.licence.href=i.watermark.link;watermark.appendChild(watermark.licence);}
$(watermark).css({width:this.size.width-10,marginTop:this.size.height-32});watermark.appendChild(watermark.author);var border=document.createElement("div");var borderImg="getImg=slideshow/photoBorder_"+this.size.width+"x"+this.size.height;border.className="photoBorder";$(border).css(this.size);content.appendChild(border);border.appendChild(watermark);}
content.appendChild(img);if(caption)
{caption.className="caption";caption.innerHTML=i.caption;content.appendChild(caption);}
$(content).css({width:this.size.width});return content;}}
PortalForm=function(params){this.__run(params);}
PortalForm.prototype=Class({inherits:PortalTab,methods:{display:function()
{var content=this.drawContent();this.load();return content;},load:function()
{if(this.params.format=="bookmark")
Goby.set('result',new Results.Bookmark(this.params.result,this));else if(this.params.result)
Goby.set('result',new Result(this.params.result,this));else
Goby.set('result',new DummyResult(this.params.type));this.form=new ResultForm({},Goby.get('result'));this.content.appendChild(this.form);this.form.display();},close:function()
{this.form.close();if(this.hasSynopsis())
this.synopsis.remove();$(this.link.parentNode).removeClass("sel");if(this.content.parentNode!=null)
this.content.parentNode.removeChild(this.content);},getModule:function()
{return{};},finishEditing:function()
{var link=new Link({text:this.params.redirect.title,href:this.params.redirect.url});var data=new Div({className:"result-update-instructions"});data.appendChild(new P({nodes:[new Span({text:'nice, now why dont you continue searching:'}),link]}));$main=$("#wrapper");$main.children().remove();$main.append(data);}}});function PortalShoutbox(params)
{for(var i in PortalTab.prototype)
this[i]=PortalTab.prototype[i];this._construct(params);this.display=function()
{var content=this.drawContent();if(this.params.type=="facebook")
this.form=new ShoutboxFacebookForm({values:this.params},this);else
this.form=new ShoutboxForm({values:this.params},this);content.appendChild(this.form);this.form.display();var authorize=new Ajax(Goby.conf('path.ajax')+"widget/shoutbox",{object:this,method:'verifyAuthorize'},{action:'authorize',type:this.params.type},"POST");var footer=new P({className:"shoutbox_link",nodes:[new Head({type:6,text:"Copy Link:"}),new Span({className:'',text:this.params.copy_url})]});this.form.childNodes[0].appendChild(footer);return content;}
this.getAttachment=function()
{return this.params.attachment}
this.verifyAuthorize=function(data)
{if(!data)
return null;var data=(data.msg?data.msg:data.error);}
this.authorize=function(data)
{switch(this.params.type)
{case"twitter":this.oauth=new OAuthTwitter(this,data);break;case"facebook":this.oauth=new OAuthFacebook(this,data);break;}}
this.close=function()
{this.form.close();if(this.hasSynopsis())
this.synopsis.remove();$(this.link.parentNode).removeClass("sel");if(this.content.parentNode!=null)
this.content.parentNode.removeChild(this.content);}
this.displayMsg=function(data)
{flash(data);}}
function ShoutboxForm(params,admin)
{if(params!=null)
return this.construct(params,admin);}
ShoutboxForm.prototype=new GrilleForm(null);ShoutboxForm.prototype.construct=function(params,admin)
{this.fields={'type':new HiddenField({label:"type",name:"type"})}
if(admin.params.type=="email")
this.fields.email=new PrettyField({name:"email",label:'email',value:"email address",default_value:"email address",v:'[email:1]'});if(admin.params.listID)
this.fields.listID=new HiddenField({name:"listID",label:'listID',value:''});this.fields.copy_url=new HiddenField({name:"copy_url",label:'copy_url'});this.fields.message=new TextareaField({label:"your message",name:"message",default_value:'',v:'[all:1]','max':admin.params.max?admin.params.max:500});this.makeButton('submit',admin.params.submit_txt?admin.params.submit_txt:'preview post',function(){this.form.submit(1);});this.actions={submit:"submit"};return this._construct(params,admin);}
ShoutboxForm.prototype.url="widget/shoutbox";ShoutboxForm.prototype.ende=function(data)
{var data=(data.msg?data.msg:data.error);if(data.code!=200)
{if(data.code==401)
this.admin.authorize(data.message);this.admin.displayMsg(data.message);}
else
{this.admin.displayMsg(data.message);}}
function OAuthTwitter(admin,data)
{this.admin=admin;this.data=data;this.prompt();}
OAuthTwitter.prototype={prompt:function()
{this.win=window.open(Goby.conf('path.oauth')+"twitter?action=reauthorize",'twitterOauth','width=800,height=400,screenX=100');if(this.win)
{if(navigator.isBrowser(browser.CHROME))
{this.win.widget=this;this.win.onload=function(){if(this.screenX===0){flash("Please disable popup blocking and resubmit")}else{konsole.log(this.screenX);this.widget.check();}}}
else
this.check();}
else
flash("Please disable popup blocking and resubmit")},loadCheck:function(data)
{if(data&&data.state=='authorized')
{this.win=null;flash("Sucessfully authorized!");this.admin.form.submit();}
else if(this.win&&!this.win.closed)
{var oauth=this;window.setTimeout(function(){oauth.check();},1000);}},check:function()
{new Ajax(Goby.conf("path.oauth")+"/twitter",{object:this,method:"loadCheck"},{action:'check',type:"twitter"},"POST");}}
function ShoutboxFacebookForm(params,admin)
{return this.construct(params,admin);}
ShoutboxFacebookForm.prototype=new ShoutboxForm(null);ShoutboxFacebookForm.prototype.submit=function()
{var data=this.validate();var form=this;var params={method:'stream.publish',display:'popup',message:this.fields.message.getValue()};if(this.admin.getAttachment())
params.attachment=this.admin.getAttachment();var msg=params.message;Facebook.postShoutbox(params,function(response)
{if(response&&response.post_id)
{new Ajax("widgets/shoutbox",{object:form,method:'ende'},{type:"facebook",action:'save',message:response.post_id,listID:(Goby.get("bookmarkList")?Goby.get("bookmarkList").getID():null)},"POST");}
else
{konsole.log('Post NOT published');}});}
