if(!SAPO.Widget||typeof(SAPO.Widget)=='undefined'){SAPO.namespace('Widget');}
SAPO.Widget.Thumbs=function(options)
{if(SAPO.Exception&&typeof(SAPO.Exception)!='undefined'){this.exception=new SAPO.Exception('SAPO::Widget.Thumbs');}else{this.exception=false;}
if(options!='undefined'){this.init(options);}else{this.init({});}};SAPO.Widget.Thumbs.prototype={init:function(options)
{options=Object.extend({url:false,mail:false,ondemand:false,type:'thumbnail',instance:false,size:0,divid:false},arguments[0]||{});try{this.options=options;}catch(e){if(this.exception){this.exception.log(e);}}
if(options.instance===false){this.instance=Math.round(10000*Math.random());var cmd='pdf'+this.instance+'=this';eval(cmd);}
this.type=options.type;this.req=0;this.limitReq=100;this.stoReq=false;this.errorReq=0;this.limitErrorReq=10;this.stoErrorReq=false;this.rand=Math.round(10000*Math.random());this.jsonName='json'+this.rand;this.urlJSON=false;this.urlObject=false;this.u=options.url;if(options.url.length>0&&options.type=='pdf'){this.mail=options.mail;var html='<div class="pdfthumb">';html+='<div id="hiddenelement'+this.rand+'" style="display:none"></div>';html+='<div id="element'+this.rand+'" style="display:inline;height:20px;width:60px"></div>';html+='</div>';if(options.divid){document.getElementById(options.divid).innerHTML=html;}
else
{document.write(html);}
this.hiddenelement=document.getElementById('hiddenelement'+this.rand);this.element=document.getElementById('element'+this.rand);if(options.ondemand){this.element.innerHTML='<a href="javascript:pdf'+this.instance+'.renderObject()" class="pdf">Gerar PDF</a>';return;}}
if(options.url.length>0&&options.type=='thumbnail'){this.dimensions={0:[68,50],1:[111,82],2:[150,112],3:[200,150],4:[250,187],5:[300,225],6:[400,300]};this.w=this.dimensions[options.size][0];this.h=this.dimensions[options.size][1];this.f=options.size;html='<div class="webthumb">';html+='<div id="hiddenelement'+this.rand+'" style="display:none;height:'+this.h+'px;width:'+this.w+'px"></div>';html+='<div id="element'+this.rand+'" style="display:inline;height:'+this.h+'px;width:'+this.w+'px"></div>';html+='</div>';if(options.divid){document.getElementById(options.divid).innerHTML=html;}
else
{document.write(html);}}
this.hiddenelement=document.getElementById('hiddenelement'+this.rand);this.element=document.getElementById('element'+this.rand);this.renderObject();},sendMail:function(urlObject,url,id)
{mail=document.getElementById('mail'+id).value;form=document.getElementById('mf'+id);msg=document.getElementById('msg'+id);form.style.display='none';if(SAPO.Utility.Validator.mail(mail)===false){msg.innerHTML='E-mail inv&aacute;lido';msg.style.display='inline';return false;}
mailscript=document.createElement('SCRIPT');mailscript.type='text/javascript';mailscript.charset='utf-8';mailscript.src='http://webthumbs.sapo.pt/mailjson?mail='+mail+'&url='+encodeURIComponent(url)+'&referer='+encodeURIComponent(document.URL);document.getElementsByTagName('HEAD')[0].appendChild(mailscript);msg.innerHTML='PDF enviado por mail';msg.style.display='inline';return false;},renderObject:function()
{this.setUrl();this.createScriptTag();this.deb=true;},setUrl:function()
{if(!this.u.match(/^http:\/\/|^https:\/\//i)){this.u='http://'+this.u;}
if(this.type=='pdf'){this.urlJSON='http://webthumbs.sapo.pt/pdfjson?url='+encodeURIComponent(this.u)+'&jsonTag='+this.jsonName+'&rand='+Math.round(10000*Math.random());}
if(this.type=='thumbnail'){this.urlJSON='http://webthumbs.sapo.pt/json?size='+this.f+'&url='+encodeURIComponent(this.u)+'&jsonTag='+this.jsonName+'&rand='+Math.round(10000*Math.random());}},createScriptTag:function()
{this.script=document.createElement('SCRIPT');this.script.type='text/javascript';this.script.charset='utf-8';this.script.src=this.urlJSON;document.getElementsByTagName('HEAD')[0].appendChild(this.script);switch(this.type){case"pdf":this.getPDF();break;case"thumbnail":this.getImage();break;}},getPDF:function()
{try{if(this.req<this.limitReq){this.urlObject=eval(this.jsonName).pdf[0].i;if(eval(this.jsonName).pdf[0].x=='noavail'){this.errorReq++;if(this.errorReq<this.limitErrorReq){this.script.parentNode.removeChild(this.script);this.script=null;this.script=false;eval(this.jsonName).pdf=false;this.req=0;this.onLoading();if(this.stoErrorReq!==false){clearTimeout(this.stoErrorReq);}
this.setUrl();this.stoErrorReq=setTimeout(function(){this.createScriptTag();}.bindObj(this),4000);}else{this.onFail(unescape(this.u));this.script.parentNode.removeChild(this.script);}}else{this.onComplete(this.urlObject,unescape(this.u));this.script.parentNode.removeChild(this.script);}}else{this.onFail(unescape(this.u));this.script.parentNode.removeChild(this.script);}}catch(e){this.req++;if(this.stoReq!==false){clearTimeout(this.stoReq);}
this.stoReq=setTimeout(function(){this.getPDF();}.bindObj(this),100);}},getImage:function()
{try{if(this.req<this.limitReq){this.urlObject=eval(this.jsonName).image[0].i;if(eval(this.jsonName).image[0].x=='noavail'){this.errorReq++;if(this.errorReq<this.limitErrorReq){this.script.parentNode.removeChild(this.script);this.script=null;this.script=false;eval(this.jsonName).image=false;this.req=0;this.onLoading();if(this.stoErrorReq!==false){clearTimeout(this.stoErrorReq);}
this.setUrl();this.stoErrorReq=setTimeout(function(){this.createScriptTag();}.bindObj(this),4000);}else{this.onComplete(this.urlObject,unescape(this.u),eval(this.jsonName).image[0].w);this.script.parentNode.removeChild(this.script);}}else{this.onComplete(this.urlObject,unescape(this.u),eval(this.jsonName).image[0].w);this.script.parentNode.removeChild(this.script);}}else{this.urlObject='http://js.sapo.pt/Assets/Images/Thumbs/noavail_'+this.f+'.gif';this.onComplete(this.urlObject,unescape(this.u),0);this.script.parentNode.removeChild(this.script);}}catch(e){this.req++;if(this.stoReq!==false){clearTimeout(this.stoReq);}
this.stoReq=setTimeout(function(){this.getImage();}.bindObj(this),100);}},debug:function(txt)
{if(this.deb){document.getElementById('debug').innerHTML+=txt+'<br/>';}},onLoading:function()
{switch(this.type){case"pdf":this.element.innerHTML='<img src="http://js.sapo.pt/Assets/Images/Thumbs/mkpdf.png">A gerar PDF';break;case"thumbnail":var load='<img width='+this.w+' style="background: #eee url(\'http://js.sapo.pt/Assets/Images/Thumbs/bigwheel_'+this.f+'.gif\') no-repeat 50% 50%;" height='+this.h+' src="/rp/http_static/images/0.gif" alt="loading" />';this.element.innerHTML=load;break;}},onComplete:function(urlObject,url,failover)
{switch(this.type){case"pdf":if(this.mail){this.hiddenelement.innerHTML='<a href="'+urlObject+'" class="pdf" >Guardar</a><img OnClick="getElementById(\'mf'+this.instance+'\').style.display=\'inline\';getElementById(\'msg'+this.instance+'\').style.display=\'none\';" src="http://js.sapo.pt/Assets/Images/Thumbs/enviar.gif" border="0"><form style="display:none" id="mf'+this.instance+'" action="" method="post" onsubmit="pdf'+this.instance+'.sendMail(\''+urlObject+'\',\''+url+'\',\''+this.instance+'\');return false;"><input id="mail'+this.instance+'" type="text" size="13" name="m" value="e-mail de destino" style="color:#c0c0c0" autocomplete="off" onfocus="this.value=\'\';this.style.color=\'black\';"> <input type="submit" class="submit" value="OK"></form><div id="msg'+this.instance+'" style="display:inline"><a href="#" onClick="getElementById(\'mf'+this.instance+'\').style.display=\'inline\';getElementById(\'msg'+this.instance+'\').style.display=\'none\';return false;">Enviar por E-Mail</div>';}
else
{this.hiddenelement.innerHTML='<a href="'+urlObject+'"><img src="http://js.sapo.pt/Assets/Images/Thumbs/pdf.png" border="0">Guardar</a>';}
break;case"thumbnail":var link=document.createElement("a");link.setAttribute('href',this.u);link.setAttribute('target','_new');var scriptElement=document.createElement("img");scriptElement.src=urlObject;scriptElement.width=this.w;scriptElement.height=this.h;scriptElement.style.position='relative';scriptElement.style.left='0px';scriptElement.style.top='0px';
link.appendChild(scriptElement);this.hiddenelement.appendChild(link);break;}
this.switchDivs();},onFail:function(url)
{this.hiddenelement.innerHTML='<img src="http://js.sapo.pt/Assets/Images/Thumbs/warning.png">Ocorreu um erro';this.switchDivs();},switchDivs:function(){this.hiddenelement.style.display='inline';this.element.parentNode.replaceChild(this.hiddenelement,this.element);}};
