
var Bookmarks=new Class({Extends:Widget,initialize:function(){this.cfg={hasRefreshBtn:false,title:loc.text("bookmarks_title"),module:"Bookmarks",saveMethod:"POST"}
this.tags={};this.defaultProfile["title"]=loc.text("bookmarks_title");this.defaultProfile["bgcolor"]="orig";this.defaultProfile["tags"]=['default'];this.defaultProfile["bookmarks"]=[];this.activeTag=0;this.editBookmarkId=null;},onBuildInterface:function(){var self=this;this.settings="<div>"+"<div class='settings_section' style='padding:4px 8px'>"+" <span class='settings_label'>"+loc.text("inp_title")+"</span>"+" <input type='text' name='title' size='15' class='settings_control'>"+"</div>"+"<div id='swimp' class='bevel_section' style='cursor:pointer'>"+loc.text("bookmarks_import")+"</div>"+"<div class='menu_panel' id='import' style='display:none'><iframe id='uiframe"+this.id+"' src='about:blank' name='uiframe"+this.id+"' style='width: 0px; height: 0px; border: 1px'></iframe><form method='post' target='uiframe"+this.id+"' action='bookmarks.php' enctype='multipart/form-data'><input type='hidden' name='MAX_FILE_SIZE' value='500000'><input type='hidden' name='wid' id='form_wid' value='"+this.id+"'><input type='hidden' id='form_user_id' value='"+ident.user.id+"' name='user_id'><input type='file' name='user_file' id='user_file'><input type='submit' value='"+loc.text("bookmarks_btn_import")+"'></form></div>"+"<div id='import_msg' style='width:100%;display:none'></div>"+"<div id='swdel' class='bevel_section' style='cursor:pointer;'>"+loc.text("bookmarks_sec_delete")+"</div>"+"<div id='delete' class='menu_panel' style='display:none'>"+" <input id='btn_del' type='button' value='"+loc.text("bookmarks_btn_delete_all")+"'>"+"</div>"+"<div id='add_bookmark' class='bevel_section' style='cursor:pointer'>"+loc.text("bookmarks_sec_add")+"</div>"+"<div id='add' class='menu_panel' style='display:none'>"+" <div class='menu_panel'>"+loc.text("bookmarks_inp_title")+"<input type='text' size='30' id='select_title'></div>"+" <div class='menu_panel'>"+loc.text("bookmarks_inp_url")+"<input type='text' size='30' id='select_url'></div>"+" <div class='menu_panel'>"+loc.text("bookmarks_inp_tags")+"<input type='text' size='30' id='select_tags'></div>"+" <div class='menu_panel'><input id='btn_save' type='button' value='"+loc.text("btn_save")+"'></div>"+"</div></div>"+this.changeColors;this.content="<div id='swedit' class='bevel_section' style='display:none;cursor:pointer'>"+loc.text("bookmarks_sec_edit")+"</div>"+"<div id='edit' class='menu_panel' style='display:none'>"+" <div class='menu_panel'>"+loc.text("bookmarks_inp_title")+"  <input type='text' size='30' id='edit_title'>"+" </div>"+" <div class='menu_panel'>"+loc.text("bookmarks_inp_url")+"  <input type='text' size='30' id='edit_url'>"+" </div>"+" <div class='menu_panel'>"+loc.text("bookmarks_inp_tags")+"  <input type='text' size='30' id='edit_tags'>"+" </div>"+" <div class='menu_panel'>"+"  <input type='button' id='btn_edit' value='"+loc.text("btn_save")+"'>"+" </div>"+"</div>"+"<div id='swtags' class='bevel_section' style='cursor:pointer'>"+loc.text("bookmark_sec_tags")+"</div>"+"<div id='tags' class='menu_panel' style='display:none'></div>"+"<hr width='100%'>"+"<div id='bookmarks' class='menu_panel'></div>";this.setSettings(this.settings);this.setContent(this.content);this.colorsAction();this.setBgColor(this.profile.bgcolor,1);this.tags['title']=this.mid.getElement('input[name=title]');this.tags['swtags']=this.mid.getElement('div[id=swtags]');this.tags['tags']=this.mid.getElement('div[id=tags]');this.tags['swdel']=this.mid.getElement('div[id=swdel]');this.tags['delete']=this.mid.getElement('div[id=delete]');this.tags['swimp']=this.mid.getElement('div[id=swimp]');this.tags['import']=this.mid.getElement('div[id=import]');this.tags['import_msg']=this.mid.getElement('div[id=import_msg]');this.tags['swedit']=this.mid.getElement('div[id=swedit]');this.tags['edit']=this.mid.getElement('div[id=edit]');this.tags['edit_tags']=this.mid.getElement('input[id=edit_tags]');this.tags['btn_save']=this.mid.getElement('input[id=btn_save]');this.tags['btn_del']=this.mid.getElement('input[id=btn_del]');this.tags['add_bookmark']=this.mid.getElement('div[id=add_bookmark]');this.tags['add']=this.mid.getElement('div[id=add]');this.tags['btn_edit']=this.mid.getElement('input[id=btn_edit]');this.tags['stitle']=this.mid.getElement('input[id=select_title]');this.tags['surl']=this.mid.getElement('input[id=select_url]');this.tags['stags']=this.mid.getElement('input[id=select_tags]');this.tags['title'].addEvent('keydown',function(e){if(e.key=='enter')
self.settingsSetTitle();});this.tags['title'].addEvent('blur',function(){self.settingsSetTitle();});this.tags['btn_edit'].addEvent('click',function(){self.processUpdate();});this.tags['swimp'].addEvent('click',function(){self.switchSection('import');});this.tags['swdel'].addEvent('click',function(){self.switchSection('delete');});this.tags['swtags'].addEvent('click',function(){self.switchSection('tags');});this.tags['swedit'].addEvent('click',function(){self.switchSection('edit');});this.tags['edit_tags'].addEvent('keydown',function(e){if(e.key=='enter')
self.processUpdate();});this.tags['btn_save'].addEvent('click',function(e){self.processAdd();});this.tags['btn_del'].addEvent('click',function(e){self.deleteBookmarks();});this.tags['add_bookmark'].addEvent('click',function(e){self.switchSection('add');});this.applyTag(0);this.tags['title'].value=this.profile.title;this.settingsSetTitle(this.profile.title);this.switchSection('tags');},onShowSettings:function(){this.closeEdit();},settingsSetTitle:function(){this.profile.title=trim(this.tags.title.value);this.setTitle(this.profile.title+": "+(this.activeTag==0?loc.text("bookmarks_default"):this.profile.tags[this.activeTag]));if(!ident.isPublic()||(ident.isPublic()&&ident.isPublicLogged())){this.save();}},switchSection:function(sid){if(this.tags[sid].style.display=='none'){showEl(this.tags[sid]);}else{hideEl(this.tags[sid]);}},uploadFile:function(){if(trim(this.elements.user_file.value)!=""){showEl(this.elements.import_msg);this.elements.import_msg.innerHTML=loc.text("bookmarks_msg_import");hideEl(this.elements.upload_submit_btn);this.elements.upload_form.submit();}},processImported:function(links){if(links){for(var i=0;i<links.length;i++){if(links[i][2]=="")
this.addBookmark(links[i][0],links[i][1],"default");else
this.addBookmark(links[i][0],links[i][1],links[i][2]);}
this.renderTags();showEl(this.tags['tags']);this.applyTag(this.activeTag);this.save();hideEl(this.tags['import_msg']);hideEl(this.tags['import']);this.isSettingsReduced=true;this.hideSettings();this.tags['import_msg'].innerHTML="";}else{this.tags['import_msg'].innerHTML=loc.text("bookmarks_msg_import_error");}},closeEdit:function(){if(this.editBookmarkId!=null){hideEl(this.tags['swedit']);hideEl(this.tags['edit']);this.isEditOpen=null;}},openEdit:function(id){this.editBookmarkId=id;var tags=[];for(var i=0;i<this.profile.bookmarks[id].tags.length;i++){tags.push(this.profile.tags[this.profile.bookmarks[id].tags[i]])}
this.mid.getElement('input[id=edit_title]').value=this.profile.bookmarks[id].title;this.mid.getElement('input[id=edit_url]').value=this.profile.bookmarks[id].url;this.mid.getElement('input[id=edit_tags]').value=tags.join(", ");showEl(this.tags['swedit']);showEl(this.tags['edit']);this.isSettingsReduced=true;this.hideSettings();},processUpdate:function(){if(this.editBookmarkId!=null){var title=trim(this.mid.getElement('input[id=edit_title]').value);var url=trim(this.mid.getElement('input[id=edit_url]').value);if(title!=""&&url!=""){this.updateBookmark(this.editBookmarkId,title,url,trim(this.mid.getElement('input[id=edit_tags]').value));this.applyTag(this.activeTag);this.save();}}
this.closeEdit();},deleteBookmarks:function(){for(var j=0;j<this.profile.bookmarks.length;j++){this.deleteBookmark(j);}
this.profile.bookmarks=this.defaultProfile["bookmarks"];this.profile.tags=this.defaultProfile["tags"];this.applyTag(0);this.save();this.isSettingsReduced=true;this.hideSettings();this.switchSection('delete');},processAdd:function(){var title=trim(this.tags['stitle'].value);var url=trim(this.tags['surl'].value);if(title!=""&&url!=""){this.closeEdit();this.addBookmark(title,url,trim(this.tags['stags'].value));this.save();this.applyTag(this.activeTag);this.tags['stitle'].value='';this.tags['surl'].value='';this.tags['stags'].value='';this.isSettingsReduced=true;this.hideSettings();this.switchSection('add');}},renderTags:function(){var row,self=this;this.tags['tags'].innerHTML='';for(var t=0;t<this.profile.tags.length;t++){if(this.profile.tags[t]!=undefined){if(this.activeTag!=t){row=new Element('a',{'href':'javascript:void(0);','html':(t==0?loc.text("bookmarks_default"):this.profile.tags[t]),'styles':{'margin':'4px'}});row.addEvent('click',function(e,t){self.applyTag(t);}.bindWithEvent(this,t));}else{row=new Element('span',{'html':(t==0?loc.text("bookmarks_default"):this.profile.tags[t]),'styles':{'margin':'4px'}});}
row.inject(this.tags['tags']);}}},applyTag:function(tagId){this.closeEdit();this.activeTag=tagId;this.setTitle(this.profile.title+": "+(tagId==0?loc.text("bookmarks_default"):this.profile.tags[tagId]));var list=this.getBookmarksByTagId(tagId);var bm=this.mid.getElement('div[id=bookmarks]');var item,row,box,self=this,x,url;bm.innerHTML='';for(var i=0;i<list.length;i++){x=list[i];url=this.profile.bookmarks[list[i]].url;if(url.indexOf('http')<0)
url='http://'+url;row=new Element('div',{'id':'item'+list[i],'styles':{'clear':'both','padding':'5px'}});item=new Element('div',{'class':'left','styles':{'width':'95%','display':'block'},'html':'<a id="item_title'+list[i]+'" href="'+url+'" target="_blank">'+this.profile.bookmarks[list[i]].title+'</a>'});item.inject(row);if(!ident.isPublic()||(ident.isPublic()&&ident.isPublicLogged())){item=new Element('div',{'class':'right'});box=new Element('img',{'src':'pix/edit.gif','styles':{'cursor':'pointer'}});box.addEvent('click',function(e,x){self.openEdit(x);}.bindWithEvent(this,x));box.inject(item);box=new Element('img',{'src':'pix/delete_link.gif','styles':{'cursor':'pointer'}});box.addEvent('click',function(e,x){self.deleteItem(x);}.bindWithEvent(this,x));box.inject(item);item.inject(row);}
row.inject(bm);}
this.renderTags();},deleteItem:function(id){if(confirm(loc.text("bookmarks_delete_prompt",this.profile.bookmarks[id].title))){this.closeEdit();this.deleteBookmark(id);if(this.profile.tags[this.activeTag]){this.applyTag(this.activeTag);}else{this.applyTag(0);}
this.save();}},updateBookmark:function(id,title,url,tags){this.deleteBookmark(id);this.addBookmark(title,url,tags);},addBookmark:function(title,url,tagsData){var newBookmark={title:title,url:url,tags:[]};if(typeof(tagsData)=="string"){var tags=tagsData!=""?tagsData.split(","):false;}else{var tags=tagsData;}
if(tags){for(var i=0;i<tags.length;i++){tags[i]=trim(tags[i]);var tn=arraySearch(tags[i],this.profile.tags)
if(tn!=undefined){newBookmark.tags.push(tn);}else{var idx=arrayFirstFree(this.profile.tags);this.profile.tags[idx]=tags[i];newBookmark.tags.push(idx);}}}else{newBookmark.tags=[0];}
this.activeTag=newBookmark.tags[0];this.profile.bookmarks[arrayFirstFree(this.profile.bookmarks)]=newBookmark;},deleteBookmark:function(id){if(this.profile.bookmarks[id]!=undefined){var tags=this.profile.bookmarks[id].tags;for(var i=0;i<tags.length;i++){if(tags[i]!=0){var count=0;for(var j=0;j<this.profile.bookmarks.length;j++){if(this.profile.bookmarks[j]&&arraySearch(tags[i],this.profile.bookmarks[j].tags)!=undefined){count++;}}
if(count<2){this.profile.tags[tags[i]]=undefined;}}}
this.profile.bookmarks[id]=undefined;}},getBookmarksByTagId:function(tagId){var res=[];for(var i=0;i<this.profile.bookmarks.length;i++){if(this.profile.bookmarks[i]&&this.profile.bookmarks[i].tags!=undefined&&arraySearch(tagId,this.profile.bookmarks[i].tags)!=undefined){res.push(i);}}
return res;},settingsAll:function(){this.settingsSetTitle();}});