function TaggingSuggestion(a,b){this.name=a;this.popularity=b}TaggingSuggestion.prototype.toString=function(){return this.name};function TaggingSuggestionsContainer(a){this.firstText=a;this.suggestionsByKey={};this.suggestionsByPopularity=new Array()}TaggingSuggestionsContainer.prototype.hasKey=function(a){var b=a.length>1?a.charAt(0):a;if(this.suggestionsByKey[b]){return true}return false};TaggingSuggestionsContainer.prototype.getSuggestions=function(c,e){var d=c.length>1?c.charAt(0):c;if(!e||e<=0){e=10}var a=new Array();if(this.firstText){if(this.hasKey(d)){for(var b=0;b<this.suggestionsByKey[d].length;b++){if(this.suggestionsByKey[d][b].name.indexOf(c)!=-1){a.push(this.suggestionsByKey[d][b]);if(a.length==e){break}}}}}else{for(var b=0;b<this.suggestionsByPopularity.length;b++){if(this.suggestionsByPopularity[b].name.indexOf(c)!=-1){a.push(this.suggestionsByPopularity[b]);if(a.length==e){break}}}}return a};TaggingSuggestionsContainer.prototype.getSuggestionsAsStrings=function(d,e){var b=this.getSuggestions(d,e);var a=new Array();for(var c=0;c<b.length;c++){a.push(b[c].name)}return a};TaggingSuggestionsContainer.prototype.addSuggestions=function(d,a){var f=d.length>1?d.charAt(0):d;if(!a){a=[]}if(!this.hasKey(f)){this.suggestionsByKey[f]=a;if(this.suggestionsByPopularity.length>0&&a.length>0){a.reverse();var e=a.pop();for(var c=0;c<this.suggestionsByPopularity.length;c++){if(this.suggestionsByPopularity[c].popularity<=e.popularity){var b=this.suggestionsByPopularity[c].name+"-"+this.suggestionsByPopularity[c].popularity;this.suggestionsByPopularity.splice(c,0,e);e=a.pop()}else{if(c==this.suggestionsByPopularity.length-1){this.suggestionsByPopularity.push(e);while(e=a.pop()){this.suggestionsByPopularity.push(e)}}}if(!e){break}}}else{if(this.suggestionsByPopularity.length==0){this.suggestionsByPopularity=a}}}else{}};document.suggestionsContainer=new TaggingSuggestionsContainer();function TaggingSuggestionBox(c,b,e,d,a,f){this.inputId=c;this.container=b;this.onEnter=a;this.onDone=f;this.suggestionUrl=e;this.appID=d||"retail";this.data=new Array();this.selectedRow=-1;this.key=""}TaggingSuggestionBox.prototype.init=function(b,c,a){if(b==undefined){b=true}b==b||true;if(c==undefined){c=true}if(a==undefined){a=false}this.alignLeft=c;this.allowEnter=a;this.inputBox=document.getElementById(this.inputId);if(!this.inputBox||"useNewAQ" in TaggingOptions){return}this.inputBox.setAttribute("autocomplete","off");TaggingUtils.observe(this.inputBox,"keydown",TaggingUtils.bindAsEventListener(function(d){if(TaggingUtils.isIE){var e=TaggingUtils.getEventKeyCode(d);if(this.isVisible()){if(e==38){this.highlightPrev();return}else{if(e==40){this.highlightNext();return}}}}TaggingInputKeyDown(d,this.allowEnter)},this),false);TaggingUtils.observe(this.inputBox,"keypress",TaggingUtils.bindAsEventListener(function(d){if(!TaggingUtils.isIE){var e=TaggingUtils.getEventKeyCode(d);if(this.isVisible()){if(e==38){this.highlightPrev();return}else{if(e==40){this.highlightNext();return}}}}TaggingInputKeyPress(d,b,(this.allowEnter&&!this.isVisible()))},this),false);TaggingUtils.observe(this.inputBox,"keyup",TaggingUtils.bindAsEventListener(function(d){var e=TaggingUtils.getEventKeyCode(d);if(this.isVisible()){if(e==38){return}else{if(e==40){return}else{if(e==13){if(this.selectedRow!=-1){this.inputBox.value=this.replaceLastTagFromInput(this.inputBox.value,this.data[this.selectedRow])}else{this.onEnter(this)}this.hide();TaggingUtils.stopEvent(d);return}}}}else{if(e==13){this.onEnter(this);TaggingUtils.stopEvent(d);return}}this.trigger=true},this),false);TaggingUtils.observe(this.inputBox,"blur",TaggingUtils.bindAsEventListener(function(){setTimeout(TaggingUtils.bindAsEventListener(function(){this.hide()},this),100)},this),false);this.triggerFetchSuggestions()};TaggingSuggestionBox.prototype.triggerFetchSuggestions=function(){if(this.trigger&&this.inputBox.value){this.trigger=false;var b=this.inputBox.value.toLowerCase().split(",");var a=TaggingUtils.sanitizeTag(b[b.length-1]);if(a!=this.key){this.hide();this.key=a;if(a&&a.length!=0){this.startFetchSuggestions(a)}}}setTimeout(TaggingUtils.bindAsEventListener(this.triggerFetchSuggestions,this),100)};TaggingSuggestionBox.prototype.reset=function(){this.selectedRow=-1;this.key="";this.removeData()};TaggingSuggestionBox.prototype.isVisible=function(){var a=document.getElementById("suggest-table");return(a&&a.style.display!=""&&a.style.display!="none")};TaggingSuggestionBox.prototype.removeData=function(){var a=document.getElementById("suggest-table");if(a){document.body.removeChild(a)}};function parse(b,a){var c="";var d=b.indexOf(a);c=b.substring(0,d);c+="<font style='text-decoration:underline;font-weight:bold;'>";c+=a;c+="</font>";c+=b.substring(d+a.length,b.length);return c}TaggingSuggestionBox.prototype.addData=function(){if(this.data.length>0){var e=document.createElement("table");e.cellSpacing="0px";e.cellPadding="2px";e.style.position="absolute";e.style.zIndex="105";e.id="suggest-table";var a=document.getElementById("suggest-table-iframe");if(!a){if(TaggingUtils.isIE&&TaggingUtils.isMinIE5_5){iframe=document.createElement("iframe");iframe.id="suggest-table-iframe";iframe.frameborder="0px";iframe.scrolling="no";iframe.src="javascript:false;";iframe.style.position="absolute";iframe.style.zIndex=104;iframe.style.display="none";iframe.style.borderStyle="none";document.body.appendChild(iframe)}}for(var d=0;d<this.data.length;d++){var f=e.insertRow(-1);var b=f.insertCell(-1);f.position=d;f.suggestion=this.data[d].name;b.innerHTML=parse(this.data[d].name,this.key);var c=f.insertCell(-1);c.align="right";c.innerHTML=this.data[d].popularity+" "+(this.data[d].popularity>1?TaggingOptions.strings.usages:TaggingOptions.strings.usage);TaggingUtils.observe(f,"mouseover",TaggingUtils.bindAsEventListener(this.highlightOnMouseOver,this),false);TaggingUtils.observe(f,"mousedown",TaggingUtils.bindAsEventListener(this.selectOnClick,this),false)}document.body.appendChild(e)}};TaggingSuggestionBox.prototype.startFetchSuggestions=function(a){if(this.container.hasKey(a)){this.data=this.container.getSuggestions(a,20);this.show()}else{var c=a.length>1?a.charAt(0):a;if(this.fetchingChar!=c){this.fetchingChar=c;var b={method:"GET",asynchronous:true,sameInstance:true,parameters:"appID="+this.appID+"&key="+encodeURIComponent(c),key:a,onSuccess:TaggingUtils.bind(function(e){this.successFetchSuggestions(e,b)},this),onError:TaggingUtils.bind(function(e){this.failedFetchSuggestions(e,b)},this),onTimeout:TaggingUtils.bind(function(e){this.failedFetchSuggestions(e,b)},this)};var d=new TaggingAjax.Request(b);d.makeRequest(this.suggestionUrl)}}};TaggingSuggestionBox.prototype.successFetchSuggestions=function(xmlObj,options){var response=TaggingUtils.trim(xmlObj.responseText);if(response.indexOf("Error")!=0&&response.indexOf("[")==0&&response.lastIndexOf("]")==response.length-1){var tmp=eval(xmlObj.responseText);this.container.addSuggestions(options.key,tmp);var keys=TaggingUtils.trim(this.inputBox.value.toLowerCase()).split(",");var currentUserValue=keys[keys.length-1];if(currentUserValue&&currentUserValue.length>0){currentUserValue=TaggingUtils.trim(currentUserValue);if(currentUserValue.charAt(0)==options.key.charAt(0)){this.data=this.container.getSuggestions(currentUserValue,20);this.show()}}}};TaggingSuggestionBox.prototype.failedFetchSuggestions=function(b,a){this.hide()};TaggingSuggestionBox.prototype.show=function(){if(this.data.length>0){var c=TaggingUtils.trim(this.inputBox.value.toLowerCase()).split(",");this.key=c[c.length-1];this.addData();var e=document.getElementById("suggest-table");e.style.display=(TaggingUtils.isIE||TaggingUtils.isOpera)?"block":"table";var d=TaggingUtils.getPageTop(this.inputBox,"offsetTop")+this.inputBox.offsetHeight-1+"px";var b;if(this.alignLeft==true){b=TaggingUtils.getPageLeft(this.inputBox,"offsetLeft")+"px"}else{b=TaggingUtils.getPageLeft(this.inputBox,"offsetLeft")+this.inputBox.offsetWidth-e.offsetWidth+"px"}e.style.left=b;e.style.top=d;var a=document.getElementById("suggest-table-iframe");if(a){a.style.top=d;a.style.left=b;a.style.width=e.offsetWidth;a.style.height=e.offsetHeight;a.style.display="block";a.style.zIndex=e.style.zIndex-1}}};TaggingSuggestionBox.prototype.hide=function(){var b=document.getElementById("suggest-table");if(b){b.style.display="none";document.body.removeChild(b)}var a=document.getElementById("suggest-table-iframe");if(a){a.style.display="none"}this.reset()};TaggingSuggestionBox.prototype.selectOnClick=function(a){this.inputBox.value=this.replaceLastTagFromInput(this.inputBox.value,this.data[this.selectedRow]);this.hide()};TaggingSuggestionBox.prototype.highlightOnMouseOver=function(b){var a=0;var c;if(window.event){a=window.event.srcElement.parentNode.position;c=window.event.srcElement}else{a=b.target.parentNode.position;c=b.target}while(c.tagName.toLowerCase()!="tr"){c=c.parentNode}a=c.position;var d=document.getElementById("suggest-table");if(this.selectedRow!=-1){d.rows[this.selectedRow].className=""}this.selectedRow=a;d.rows[this.selectedRow].className="hovered"};TaggingSuggestionBox.prototype.highlightNext=function(a){if(this.data&&this.data.length){var b=document.getElementById("suggest-table");if(this.selectedRow!=-1){b.rows[this.selectedRow].className=""}this.selectedRow++;if(this.selectedRow>=this.data.length){this.selectedRow=this.data.length-1}if(!a){this.inputBox.value=this.replaceLastTagFromInput(this.inputBox.value,this.data[this.selectedRow])}b.rows[this.selectedRow].className="hovered"}};TaggingSuggestionBox.prototype.highlightPrev=function(a){if(this.data&&this.data.length){if(this.selectedRow<=-1){return}var b=document.getElementById("suggest-table");b.rows[this.selectedRow].className="";this.selectedRow--;if(this.selectedRow<0){this.selectedRow=-1;this.inputBox.value=this.replaceLastTagFromInput(this.inputBox.value,this.key)}else{if(!a){this.inputBox.value=this.replaceLastTagFromInput(this.inputBox.value,this.data[this.selectedRow])}b.rows[this.selectedRow].className="hovered"}}};TaggingSuggestionBox.prototype.replaceLastTagFromInput=function(c,a){if(!c){return a}var b=c.split(",");b[b.length-1]=a;return b.join(",")};function TaggingProductTags(a){this.asin=a.asin;this.image=a.image;this.title=a.title;this.authors=a.authors;this.appID=a.appID||("defaultAppID" in TaggingOptions?TaggingOptions.defaultAppID:"retail");if(a.popupTitle){this.popupTitle=a.popupTitle}else{if(TaggingOptions.strings){this.popupTitle=TaggingOptions.strings.defaulPopupTitle}}this.onTagAdded=a.onTagAdded;this.onTagRemoved=a.onTagRemoved;this.onTagRenamed=a.onTagRenamed;this.onTagReplaced=a.onTagReplaced;this.popupOnCloseListeners=[];if(a.tags){this.tags=a.tags}else{this.tags=new Array()}var b=this;this.suggestBox=new TaggingSuggestionBox(this.asin+"-tag-input",document.suggestionsContainer,TaggingOptions.suggestionUrl,this.appID,function(c){b.startTagProduct(c,TaggingOptions.tagObjectUrl)},function(e,d,c){e.hide();c.focus();c.focus()});document[this.asin]=this}TaggingProductTags.prototype.addOnPopupCloseListener=function(a){this.popupOnCloseListeners.push(a);a.productTags=this};TaggingProductTags.prototype.notifyOnPopupClose=function(){for(var a=0;a<this.popupOnCloseListeners.length;a++){if(this.popupOnCloseListeners[a].notify){this.popupOnCloseListeners[a].notify()}}};TaggingProductTags.prototype.initHandlers=function(g){this.useShortcut=g||TaggingOptions.useTTShortcut;var b=document.getElementById(this.asin+"-compact-edit");if(b){b.href="javascript:void(0)";b.onclick=null;if(!TaggingUtils.TaggingPopUpPanelDocEventRegistered){TaggingUtils.observe(document.body,"mousemove",TaggingUtils.bindAsEventListener(TaggingPopUpPanel.onMouseDrag,window),false,this.popupTitle);TaggingUtils.TaggingPopUpPanelDocEventRegistered=true}TaggingUtils.observe(b,"click",TaggingUtils.bindAsEventListener(this.showEditPopup,this),false)}var f=document.getElementById(this.asin+"-compact-add");if(f){f.href="javascript:void(0)";f.onclick=null;if(!TaggingUtils.TaggingPopUpPanelDocEventRegistered){TaggingUtils.observe(document.body,"mousemove",TaggingUtils.bindAsEventListener(TaggingPopUpPanel.onMouseDrag,window),false,this.popupTitle);TaggingUtils.TaggingPopUpPanelDocEventRegistered=true}TaggingUtils.observe(f,"click",TaggingUtils.bindAsEventListener(this.showAddPopup,this),false)}var a=document.getElementById(this.asin+"-edit");if(a){var c=TaggingUtils.findNodes(a,"a",null)[0];c.href="javascript:void(0)";c.onclick=function(){return false};if(!TaggingUtils.TaggingPopUpPanelDocEventRegistered){TaggingUtils.observe(document.body,"mousemove",TaggingUtils.bindAsEventListener(TaggingPopUpPanel.onMouseDrag,window),false,this.popupTitle);TaggingUtils.TaggingPopUpPanelDocEventRegistered=true}TaggingUtils.observe(a,"click",TaggingUtils.bindAsEventListener(this.showEditPopup,this),false);if(this.useShortcut){var d=this;if(amznJQ!=="undefined"){amznJQ.available("JQuery",function(){jQuery(document).bind("keyup",function(j){var i=TaggingUtils.getEventKeyCode(j);if(i==27&&TaggingProductTags.editPanel){TaggingProductTags.editPanel.hide();TaggingProductTags.editPanel.input.blur();d.popupSuggestBox.hide();TaggingProductTags.editPanel=null;TaggingUtils.stopEvent(j);return}if(i==84){var l=TaggingUtils.getEventTarget(j);var m=l.nodeName.toUpperCase();if(m=="INPUT"||m=="TEXTAREA"){return}if(TaggingProductTags.addTagInProgress){return}if(d.shortcutTimeout){clearTimeout(d.shortcutTimeout);d.shortcutTimeout=null;var k=d.createPopup(j,d.useShortcut,true);if(k){k.show(null);k.showAddTab();k.disableEditTab(d.tags.length==0)}}else{d.shortcutTimeout=setTimeout(TaggingUtils.bind(function(){d.shortcutTimeout=null},d),300)}}})})}}else{TaggingUtils.observe(document,"keyup",TaggingUtils.bindAsEventListener(function(j){var i=TaggingUtils.getEventKeyCode(j);if(i==27&&TaggingProductTags.editPanel){TaggingProductTags.editPanel.hide();TaggingProductTags.editPanel=null}},this),false)}}var h=document.getElementById(this.asin+"-tag-add");if(h){var e=this;h.onclick=function(){e.startTagProduct(e.suggestBox,TaggingOptions.tagObjectUrl);return false}}if(this.suggestBox){this.suggestBox.init()}};TaggingProductTags.prototype.addTag=function(a){if(!this.containsTag(a)){this.tags[this.tags.length]=a}};TaggingProductTags.prototype.containsTag=function(a){var b;if(this.tags){for(b=0;b<this.tags.length;b++){if(this.tags[b]==a){return 1}}}return 0};TaggingProductTags.prototype.tagsReplaced=function(a){var c=document.getElementById(this.asin+"-tags");while(c.firstChild){c.removeChild(c.firstChild)}for(var b=0;b<a.length;b++){this.addTagAnchor(a[b]);this.addTag(a[b])}};TaggingProductTags.prototype.addTagAnchor=function(a){var d=document.getElementById(this.asin+"-tags");var b=document.createElement("A");var c=TaggingOptions.trimmedTagLength||40;var e=a.length>c?(a.substring(0,c)+"..."):a;e=e.replace(new RegExp(" ","g"),"&nbsp;");b.innerHTML=e;b.setAttribute("href",TaggingOptions.tagUrl.replace("TAG",encodeURIComponent(a)));b.setAttribute("alt",a);if(this.tags.length>0){d.appendChild(document.createTextNode(", "))}d.appendChild(b)};TaggingProductTags.prototype.nukeTwister=function(){try{if("gbEnableTwisterJS" in window){console.info("Tags is cleaning Twister BTF cache");DetailPage.Model.clearCache(this.asin,"btf")}}catch(a){}};TaggingProductTags.prototype.startReplaceTags=function(c,f,g,j,b){var d="appID="+this.appID+"&ASIN="+this.asin;for(var e=0;e<c.length;e++){d+="&tgTag="+encodeURIComponent(c[e])}var a={method:"POST",asynchronous:true,sameInstance:true,parameters:d,replacingTags:c,removedTags:f,renamedTags:g,onDone:b,onSuccess:TaggingUtils.bind(function(p){var n=a.renamedTags;var o=a.removedTags;if(this.onTagRenamed){var m=this.tags.length;for(var l=0;l<m;l++){var k=this.tags[l];if(n[k]){this.onTagRenamed(this,k,n[k])}}}if(this.onTagRemoved){for(var l=0;l<o.length;l++){this.onTagRemoved(this,o[l])}}this.successReplaceTags(p,a);if(this.onTagReplaced){this.onTagReplaced(this)}if(a.onDone){a.onDone(p,a)}},this),onError:TaggingUtils.bind(function(i){this.failedReplaceTags(i,a);if(a.onDone){a.onDone(i,a)}},this),onTimeout:TaggingUtils.bind(function(i){this.failedReplaceTags(i,a);if(a.onDone){a.onDone(i,a)}},this)};var h=new TaggingAjax.Request(a);h.makeRequest(j)};TaggingProductTags.prototype.successReplaceTags=function(f,b){var a=TaggingUtils.trim(f.responseText);if(a.indexOf("ok")==0){var d=this.tags;this.tags=new Array();this.tagsReplaced(b.replacingTags);if(this.onTagsReplaced){this.onTagsReplaced(this,d,this.tags)}}var c=document.getElementById(this.asin+"-edit");if(c&&this.tags.length==0){c.style.display="none"}var e=document.getElementById(this.asin+"-compact-edit");if(e&&this.tags.length==0){e.style.display="none"}};TaggingProductTags.prototype.failedReplaceTags=function(b,a){};TaggingProductTags.prototype.startTagProduct=function(d,j){if(TaggingProductTags.addTagInProgress){return}var b=document.getElementById(this.asin+"-tag-add-rn");if(b){window.location=b.href}else{var h=d.inputBox;if(h){if(h.readOnly){return}var m=TaggingUtils.trim(h.value);m=m.toLowerCase();m=TaggingProcessInput(m);if(m){var l=m.split(",");m=null;for(var c=0;c<l.length;c++){var k=TaggingUtils.sanitizeTag(l[c]);if(!this.containsTag(k)){if(m){m+=","+k}else{m=k}}}}if(!m){try{h.value=""}catch(f){}return}else{h.value=m}h.blur();h.readOnly=true;TaggingProductTags.addTagInProgress=true;var a={method:"POST",asynchronous:true,sameInstance:true,suggest:d,tags:m,parameters:"appID="+this.appID+"&tgTag="+encodeURIComponent(m)+"&ASIN="+this.asin,onSuccess:TaggingUtils.bind(function(e){this.successTagProduct(e,a)},this),onError:TaggingUtils.bind(function(e){this.failedTagProduct(e,a)},this),onTimeout:TaggingUtils.bind(function(e){this.failedTagProduct(e,a)},this)};var g=new TaggingAjax.Request(a);g.makeRequest(j);return true}return false}};TaggingProductTags.prototype.successTagProduct=function(f,n){var h=0;var a=TaggingUtils.trim(f.responseText);var j=n.suggest.inputBox;var o=n.tags.split(",");var c=false;for(var b=0;b<o.length;b++){var m=decodeURIComponent(o[b]);if(a.indexOf(m+":"+this.asin+":ok")!=-1){this.addTagAnchor(m);this.addTag(m);this.nukeTwister();if(this.onTagAdded){this.onTagAdded(this,m)}c=true}else{h++}}try{j.value="";if(tagsPiles!=="undefined"){var l="&nbsp;";if(h){if(TaggingOptions.maxTags-this.tags.length<=0){if(TaggingOptions.strings.maxTagsReached!=="undefined"){l=TaggingOptions.strings.maxTagsReached}}else{l=TaggingOptions.piles.errorMsg}tagsPiles.updateNotify(l,true)}else{tagsPiles.updateNotify(l,false)}}}catch(d){}if(c){var g=document.getElementById(this.asin+"-edit");if(g){g.style.display=""}var k=document.getElementById(this.asin+"-compact-edit");if(k){k.style.display=""}}j.readOnly=false;TaggingProductTags.addTagInProgress=false;if(n.suggest.onDone){n.suggest.onDone(n.suggest,true,j)}};TaggingProductTags.prototype.failedTagProduct=function(c,a){var b=a.suggest.inputBox;b.readOnly=false;TaggingProductTags.addTagInProgress=false;if(a.suggest.onDone){a.suggest.onDone(a.suggest,false)}};TaggingProductTags.prototype.showEditPopup=function(b){if(TaggingProductTags.addTagInProgress){return}var c=this.createPopup(b,this.useShortcut,false);var a=TaggingUtils.getEventTarget(b);if(c){c.show(a);c.showEditTab();c.disableEditTab(this.tags.length==0)}TaggingUtils.stopEvent(b);return false};TaggingProductTags.prototype.showAddPopup=function(b){if(TaggingProductTags.addTagInProgress){return}var c=this.createPopup(b,this.useShortcut,false);var a=TaggingUtils.getEventTarget(b);if(c){c.show(a);c.showAddTab();c.disableEditTab(this.tags.length==0)}TaggingUtils.stopEvent(b);return false};TaggingProductTags.prototype.createPopup=function(h,m,l){var j=this;if(TaggingProductTags.editPanel){TaggingProductTags.editPanel.hide()}var b=new TaggingPopUpPanel("editTagsLayer",this,m,this.popupTitle);TaggingProductTags.editPanel=b;if(this.suggestBox){b.inputBox=this.suggestBox.inputBox}b.showFromShortcut=l;this.populateEditPanel(b);this.populateAddPanel(b);this.popupSuggestBox=new TaggingSuggestionBox(b.name+":tabs:addTab:input",document.suggestionsContainer,b.showFromShortcut?TaggingOptions.suggestionUrlQP:TaggingOptions.suggestionUrl,this.appID,function(i){if(j.startTagProduct(i,b.showFromShortcut?TaggingOptions.tagObjectUrlQP:TaggingOptions.tagObjectUrl)){if(TaggingUtils.isIE&&!TaggingUtils.isMinIE6){b.addButton.style.width="0px";b.input.style.width="0px"}else{b.addButton.style.display="none";b.input.style.display="none"}b.addProgress.style.display=""}},function(o,n,i){o.hide();b.addProgress.style.display="none";if(TaggingUtils.isIE&&!TaggingUtils.isMinIE6){b.addButton.style.width="";b.input.style.width=""}else{b.addButton.style.display="";b.input.style.display=""}j.populateAddPanel(b);j.populateEditPanel(b);if(b.visible){if(document.getElementById(b.name+":tabs:editTab").style.display=="none"){if(i){i.focus();i.focus()}}}b.disableEditTab(j.tags.length==0)});this.popupSuggestBox.init();var k=j.title;var c=j.image;if((c&&c.length>0)||(k&&k.length>0)){if(k){var a=TaggingOptions.trimmedTitleLength||55;k=k.length>a?(k.substring(0,a)+"..."):k}var e='<table cellspacing="0" cellpadding="0"><tr><td>';if(c&&c.length>0){e+='<img align="left" src="'+c+'" style="margin-right: 10px">'}e+="</td><td>";if(k&&k.length>0){e+='<b class="small">'+k+"</b>"}if(j.authors&&j.authors.length>0){e+="<br> ";var g="";for(var d=0;d<j.authors.length;d++){if(d==0){g+=j.authors[d]}else{g+=", "+j.authors[d]}}g=g.length>30?(g.substring(0,30)+"..."):g;var f=TaggingOptions.strings.byAuthors.replace("AUTHOR",g);e+=f}e+="</td></tr></table>";b.prodInfoSpan.innerHTML=e}else{b.prodInfoSpan.innerHTML=""}b.saveProgress.style.display="none";b.addProgress.style.display="none";if(TaggingUtils.isIE&&!TaggingUtils.isMinIE6){b.addButton.style.width="";b.input.style.width="";b.saveEditButton.style.width="";b.cancelButton.style.width=""}else{b.addButton.style.display="";b.input.style.display="";b.saveEditButton.style.display="";b.cancelButton.style.display=""}if(b.addButton){b.addButton.onclick=function(){if(j.startTagProduct(j.popupSuggestBox,b.showFromShortcut?TaggingOptions.tagObjectUrlQP:TaggingOptions.tagObjectUrl)){if(TaggingUtils.isIE&&!TaggingUtils.isMinIE6){b.addButton.style.width="0px";b.input.style.width="0px"}else{b.addButton.style.display="none";b.input.style.display="none"}b.addProgress.style.display=""}}}if(b.closeButton){b.closeButton.onclick=function(i){b.hide();TaggingProductTags.editPanel=null;TaggingUtils.stopEvent(h);return false}}if(b.cancelButton){b.cancelButton.onclick=function(i){b.hide();TaggingProductTags.editPanel=null;TaggingUtils.stopEvent(h);return false}}if(b.saveEditButton){b.saveEditButton.onclick=function(){var q=true;var x=b.editTagsSpan.childNodes;var t=new Array();var u={};var p=new Array();var y=false;var n={};for(var r=0;r<x.length;r++){var o=x[r];if(o.nodeName.toUpperCase()=="DIV"){var w=o.firstChild;var A=TaggingUtils.sanitizeTag(w.value);n[o.id]=A}}var z=j.tags.length;for(var s=0;s<z;s++){var v=true;if(n["t"+s]){v=false;var A=n["t"+s];A=A.toLowerCase();if(!A){v=true}else{if(A!=j.tags[s]){u[j.tags[s]]=A;y=true}}if(!v&&!TaggingUtils.isInArray(p,A)){p.push(A)}}if(v){t.push(j.tags[s])}}if(t.length>0||y){if(TaggingUtils.isIE&&!TaggingUtils.isMinIE6){b.saveEditButton.style.width="0px";b.cancelButton.style.width="0px"}else{b.saveEditButton.style.display="none";b.cancelButton.style.display="none"}b.saveProgress.style.display="";j.startReplaceTags(p,t,u,b.showFromShortcut?TaggingOptions.replaceUrlQP:TaggingOptions.replaceUrl,function(){b.saveProgress.style.display="none";if(TaggingUtils.isIE&&!TaggingUtils.isMinIE6){b.saveEditButton.style.width="";b.cancelButton.style.width=""}else{b.saveEditButton.style.display="";b.cancelButton.style.display=""}j.populateAddPanel(b);j.populateEditPanel(b);b.disableEditTab(j.tags.length==0)})}}}return b};TaggingProductTags.prototype.populateAddPanel=function(e){var d=e.addTagsSpan;e.addTagsSpan.innerHTML="";for(var b=0;b<this.tags.length;b++){var a=this.tags[b];var c=document.createElement("A");var f=a.length>25?(a.substring(0,25)+"..."):a;f=f.replace(new RegExp(" ","g"),"&nbsp;");c.innerHTML=f;c.setAttribute("href",TaggingOptions.tagUrl.replace("TAG",encodeURIComponent(a)));c.title=a;if(b>0){d.appendChild(document.createTextNode(", "))}d.appendChild(c)}};TaggingProductTags.prototype.populateEditPanel=function(f){f.editTagsSpan.innerHTML="";var b=0;for(b=0;b<this.tags.length;b++){var a=this.tags[b];var e=document.createElement("DIV");e.className="tagEdit";e.id="t"+b;f.editTagsSpan.appendChild(e);var d=document.createElement("INPUT");d.type="text";d.value=a;d.maxLength=128;d.className="tiny edit-tag";d.style.width="220px";d.onkeydown=TaggingUtils.bindAsEventListener(TaggingInputKeyDown,window);d.onkeypress=TaggingUtils.bindAsEventListener(TaggingInputKeyPress,window);d.oncontextmenu=function(){return false};e.appendChild(d);e.appendChild(document.createTextNode(" "));var c=document.createElement("A");c.href="javascript:void(0)";c.id=a;c.onclick=function(){var k=this.parentNode.id;var j=f.editTagsSpan;var h=j.childNodes;for(b=0;b<h.length;b++){if(h[b].id==k){var i=h[b];j.removeChild(i);return i}}};var g=document.createElement("IMG");g.align="absmiddle";g.title=TaggingOptions.strings.removeTitle;g.src=TaggingOptions.removeImgUrl;g.style.border=0;c.appendChild(g);e.appendChild(c);e.appendChild(document.createElement("br"))}};function TaggingPopUpPanel(b,e,g,f){this.name=b;this.productTags=e;this.showTabs=g;this.title=f;var a=document.getElementById(b);if(a){a.parentNode.removeChild(a)}TaggingPopUpPanel.createWindow(b,this.title);var c=TaggingPopUpPanel.createTabs(b+":tabs",TaggingOptions.strings.addTags,TaggingOptions.strings.editTags,g);document.getElementById(this.name+":content").appendChild(c);this.whichDog=document.getElementById(b);this.iFrame=document.getElementById(b+":iframe");if(!this.iFrame){if(TaggingUtils.isIE&&TaggingUtils.isMinIE5_5){var d=document.createElement("iframe");d.id=b+":iframe";d.frameborder="0px";d.scrolling="no";d.src="javascript:false;";d.style.position="absolute";d.style.display="none";d.style.borderStyle="none";document.body.appendChild(d);this.iFrame=d}}this.titleBar=document.getElementById(b+":titleBar");this.addProgress=document.getElementById(b+":tabs:addTab:addProgress");this.saveProgress=document.getElementById(b+":tabs:editTab:saveProgress");this.closeButton=document.getElementById(b+":closeButton");this.saveEditButton=document.getElementById(b+":tabs:editTab:saveButton");this.cancelButton=document.getElementById(b+":tabs:editTab:cancelButton");this.addButton=document.getElementById(b+":tabs:addTab:addButton");this.input=document.getElementById(b+":tabs:addTab:input");this.input.value="";this.tagsSpan=document.getElementById(b+":tabs:addTab:tags");this.prodInfoSpan=document.getElementById(b+":tabs:addTab:prodInfo");this.addTagsSpan=document.getElementById(b+":tabs:addTab:tags");this.editTagsSpan=document.getElementById(b+":tabs:editTab:tags");if(g){this.addTabTitle=document.getElementById(b+":tabs:addTab:title");this.editTabTitle=document.getElementById(b+":tabs:editTab:title");this.editTabTitleDisabled=document.getElementById(b+":tabs:editTab:titleDisabled");this.addTabTitle.onclick=TaggingUtils.bindAsEventListener(this.showAddTab,this);this.editTabTitle.onclick=TaggingUtils.bindAsEventListener(this.showEditTab,this)}this.titleBar.onmousedown=TaggingUtils.bindAsEventListener(this.titleBarMouseDown,this);this.titleBar.onmouseup=TaggingUtils.bindAsEventListener(this.titleBarMouseUp,this);this.disableEdit=false}TaggingPopUpPanel.prototype.titleBarMouseDown=function(a){this.offsetx=TaggingUtils.getEventPageX(a);this.offsety=TaggingUtils.getEventPageY(a);this.nowX=parseInt(this.whichDog.style.left);this.nowY=parseInt(this.whichDog.style.top);this.okToMove=TaggingUtils.isLeftClick(a)};TaggingPopUpPanel.prototype.titleBarMouseUp=function(a){if(TaggingUtils.isLeftClick(a)){this.okToMove=false}};TaggingPopUpPanel.onMouseDrag=function(a){var b=TaggingProductTags.editPanel;if(b){if(b.visible&&b.okToMove){b.whichDog.style.left=b.nowX+TaggingUtils.getEventPageX(a)-b.offsetx;b.whichDog.style.top=b.nowY+TaggingUtils.getEventPageY(a)-b.offsety;if(b.iFrame){b.iFrame.style.top=b.whichDog.style.top;b.iFrame.style.left=b.whichDog.style.left}}return true}};TaggingPopUpPanel.prototype.showAddTab=function(a){document.getElementById(this.name+":tabs:editTab").style.display="none";document.getElementById(this.name+":tabs:addTab").style.display="block";setTimeout(TaggingUtils.bind(function(){this.input.focus()},this),10);this.productTags.populateAddPanel(this);this.productTags.populateEditPanel(this);try{if(this.input.focus){this.input.focus()}if(this.input.blur){this.input.blur()}}catch(b){}if(this.iFrame){this.iFrame.style.width=this.whichDog.offsetWidth;this.iFrame.style.height=this.whichDog.offsetHeight}if(a){TaggingUtils.stopEvent(a)}return false};TaggingPopUpPanel.prototype.showEditTab=function(a){if(this.disableEdit){return}document.getElementById(this.name+":tabs:editTab").style.display="block";document.getElementById(this.name+":tabs:addTab").style.display="none";this.productTags.populateAddPanel(this);this.productTags.populateEditPanel(this);try{if(this.saveEditButton.focus){this.saveEditButton.focus()}if(this.saveEditButton.blur){this.saveEditButton.blur()}}catch(b){}if(this.iFrame){this.iFrame.style.width=this.whichDog.offsetWidth;this.iFrame.style.height=this.whichDog.offsetHeight}if(a){TaggingUtils.stopEvent(a)}return false};TaggingPopUpPanel.prototype.disableEditTab=function(a){this.disableEdit=a;if(this.showTabs){this.editTabTitle.style.disabled=this.disableEdit;if(this.disableEdit){this.showAddTab();this.editTabTitle.style.display="none";this.editTabTitleDisabled.style.display=""}else{this.editTabTitle.style.display="";this.editTabTitleDisabled.style.display="none"}}};TaggingPopUpPanel.prototype.hide=function(){this.whichDog.style.display="none";if(this.iFrame){this.iFrame.style.display="none"}this.visible=false;if(this.inputBox){this.inputBox.readOnly=false}this.productTags.notifyOnPopupClose()};TaggingPopUpPanel.prototype.show=function(g){this.whichDog.style.zIndex=100;this.whichDog.style.display="block";this.visible=true;if(g){var f=TaggingUtils.getPageLeft(g);var e=(TaggingUtils.getPageTop(g)+g.offsetHeight);var b=TaggingUtils.getPageSizeWithScroll();if(f+this.whichDog.offsetWidth>b.width){f=b.width-this.whichDog.offsetWidth-40}if(e+this.whichDog.offsetHeight>b.height){e=b.height-this.whichDog.offsetHeight-40}this.whichDog.style.top=e+"px";this.whichDog.style.left=f+"px"}else{var h=document.all?document.body.clientWidth:window.innerWidth;var c=document.all?document.body.clientHeight:window.innerHeight;var d=(document.compatMode&&document.compatMode!="BackCompat")?document.documentElement:document.body;var f=document.all?d.scrollLeft:pageXOffset;var e=document.all?d.scrollTop:pageYOffset;f=(h/2+f-parseInt(this.whichDog.offsetWidth)/2);e=(c/2+e-parseInt(this.whichDog.offsetHeight)/2);if(e<0){e=0}if(f<0){f=0}this.whichDog.style.left=f+"px";this.whichDog.style.top=e+"px"}if(this.iFrame){this.iFrame.style.width=this.whichDog.offsetWidth;this.iFrame.style.height=this.whichDog.offsetHeight;this.iFrame.style.zIndex=this.whichDog.style.zIndex-1;this.iFrame.style.top=this.whichDog.style.top;this.iFrame.style.left=this.whichDog.style.left;this.iFrame.style.display="block"}if(this.inputBox){this.inputBox.readOnly=true}};TaggingPopUpPanel.createWindow=function(c,a){var b=document.createElement("DIV");b.style.position="absolute";b.style.borderWidth="1px";b.style.borderStyle="solid";b.style.borderColor="#2A2A19";b.style.backgroundColor="white";b.style.visibility="visible";b.style.display="none";b.id=c;b.innerHTML='<table width="300px" cellspacing="0" cellpadding="0"> <tr>   <td>     <table style="color: white; padding: 0 0 2px 5px;" bgcolor="#CC6600" width="100%" cellspacing="0" cellpadding="0">       <tr>           <td id="'+c+':titleBar" style="cursor: move" width="100%">               <b class="tiny">'+a+'</b>            </td>            <td style="cursor: hand" valign="top">                <a href="#">                    <img border="0" align="absbottom" id="'+c+':closeButton" title="'+TaggingOptions.strings.altCloseWindow+'"                          src="'+TaggingOptions.closeImgUrl+'">               </a>           </td>        </tr>     </table>    </td>  </tr>  <tr>    <td>      <div style="border: solid 3px #EFEDD4; padding:  15px 11px 11px 11px" id="'+c+':content"></div>    </td>  </tr></table>';document.body.insertBefore(b,document.body.firstChild);return b};TaggingPopUpPanel.createTabs=function(f,d,b,c){var e=document.createElement("DIV");e.id=f;var a='<div id="'+f+':addTab:prodInfo" class="tinyproduct"></div><div id="'+f+':addTab" border="0" style="width:100%">  <table class="tinytabs" cellspacing="0" border="0" width="100%">';if(c){a+='<tr>  <td class="spacing"></td>  <td class="on"><a href="javascript:void(0)" onclick="return false">'+d+'</a></td>  <td class="off"><a href="javascript:void(0)" id="'+f+':editTab:title">'+b+'</a><span style="display:none;color:gray;" id="'+f+':editTab:titleDisabled">'+b+'</span></td>  <td width="5px"></td></tr><tr class="top">  <td class="border-topleft">&nbsp;</td>  <td>&nbsp;</td>  <td class="border-top">&nbsp;</td>  <td class="border-topright">&nbsp;</td></tr>'}else{a+='<tr class="top">  <td class="border-topleft">&nbsp;</td>  <td class="border-top" width="100%">&nbsp;</td>  <td class="border-top">&nbsp;</td>  <td class="border-topright">&nbsp;</td></tr>'}a+='  </table>  <div class="tinytabs" style="width:100%">    <div class="border-bottom" style="padding: 12px;">    <table cellspacing="0" cellpadding="0" class="tags">    <tr valign="top">      <td style="line-height: 1.2em"><b class="tiny" style="white-space: nowrap;">'+TaggingOptions.strings.yourTags+':&nbsp;</b></td>      <td class="tiny" style="line-height: 1.5em">        <span id="'+f+':addTab:tags"></span>        <span style="white-space: nowrap;padding-left:3px;">          <input id="'+f+':addTab:input" style="width: 100px;" class="tiny" value="" align="absbottom" maxlength="128">          <input id="'+f+':addTab:addButton" title="'+TaggingOptions.strings.altAddTags+'" type="image" src="'+TaggingOptions.addImgUrl+'" align="absmiddle" border="0">          <img id="'+f+':addTab:addProgress" src="'+TaggingOptions.progressImgUrl+'" style="display:none;">        </span>      </td>    </tr>    </table>    <div class="tiny" style="color: #666666; padding: 5px 0 0 0;">('+TaggingOptions.strings.hint+')</div>   </div>  </div></div><div id="'+f+':editTab" style="display: none;" style="width:100%">  <table class="tinytabs" cellspacing="0" border="0" width="100%">';if(c){a+='<tr>  <td class="spacing"></td>  <td class="off"><a href="javascript:void(0)" id="'+f+':addTab:title">'+d+'</a></td>  <td class="on"><a href="javascript:void(0)" onclick="return false">'+b+'</a></td>  <td width="5px"></td></tr><tr class="top" style="background: #F5F5F5">  <td class="border-topleft">&nbsp;</td>  <td class="border-top">&nbsp;</td>  <td>&nbsp;</td>  <td class="border-topright">&nbsp;</td></tr>'}else{a+='<tr class="top">  <td class="border-topleft">&nbsp;</td>  <td class="border-top" width="100%">&nbsp;</td>  <td class="border-top">&nbsp;</td>  <td class="border-topright">&nbsp;</td></tr>'}a+='  </table>  <div class="tinytabs" style="width:100%">    <div class="border-bottom" style="background: #F5F5F5">    <div style="background: #F5F5F5; height: 124px; overflow: auto; " id="'+f+':editTab:tags" >    </div>    <div style="background: #F5F5F5; text-align: right; padding: 7px;">       <input id="'+f+':editTab:saveButton" title="'+TaggingOptions.strings.altSaveChanges+'" type="image" align="absmiddle" src="'+TaggingOptions.saveChangesImgUrl+'" border="0">       <img id="'+f+':editTab:saveProgress" src="'+TaggingOptions.progressImgUrl+'" style="display:none;">       <input id="'+f+':editTab:cancelButton" title="'+TaggingOptions.strings.altCancelChanges+'" type="image" align="absmiddle" src="'+TaggingOptions.cancelImgUrl+'" border="0">    </div>    </div>  </div></div>';e.innerHTML=a;return e};function startTag(a,f){var c=document[f];c.addTagInProgress=true;var e=document.getElementById(f+"-snake");if(e){e.style.display="inline"}var b={method:"POST",asynchronous:true,sameInstance:true,tag:a,asin:c.asin,parameters:"appID="+c.appID+"&tgTag="+encodeURIComponent(a)+"&ASIN="+c.asin,onSuccess:TaggingUtils.bind(function(g){successTagAdd(g,b)},this),onError:TaggingUtils.bind(function(g){failTagAdd(g,b)},this),onTimeout:TaggingUtils.bind(function(g){failTagAdd(g,b)},this)};var d=new TaggingAjax.Request(b);d.makeRequest(TaggingOptions.tagObjectUrl);return true}function successTagAdd(b,h){var i=h.tag;var c=document[h.asin];var a=document.getElementById(i+"-"+h.asin+"-suggestion-grey");var d=document.getElementById(i+"-"+h.asin+"-suggestion-link");if(a&&d){a.style.display="";d.style.display="none"}var e=document.getElementById(h.asin+"-snake");if(e){e.style.display="none"}if(c&&!c.containsTag(i)){c.addTagAnchor(i);c.addTag(i);var f=document.getElementById(h.asin+"-edit");if(f){f.style.display=""}var g=document.getElementById(h.asin+"-compact-edit");if(g){g.style.display=""}}c.addTagInProgress=false}function failTagAdd(d,a){var c=document.getElementById(a.asin+"-snake");if(c){c.style.display="none"}var b=document[a.asin];b.addTagInProgress=false}function tagging_quickTagMessage(b){b=b||productTags.asin||null;if(b){var a=document.getElementById("quick-add-guide-"+b);return jQuery(a).show().find("a:first").get(0)}}var TagsEditor=function(){return{instances:{count:0},attach:function(b,d){var a=this;var e=jQuery(b).add(tagging_quickTagMessage());var c={title:(typeof TaggingOptions!=="undefined")?TaggingOptions.strings.defaulPopupTitle:"Tag this product",destination:"/gp/tagging/utils/tags-editor/popover-ui.html",cacheable:true,draggable:true,modal:false,width:500,locationElement:e.filter(":last").get(0),group:"TagsEditor",onShow:function(){a.instances.count++},onHide:function(){a.instances.count--}};jQuery.extend(c,d);if(c.cacheable&&"cacheKey" in d){c.destination=c.destination+"?key="+d.cacheKey}amznJQ.available("popover",function(){e.amazonPopoverTrigger(c);var f=function(g){return(function(i,j,h){if(h&&g.count<1){jQuery.AmazonPopover.displayPopover(jQuery.extend(c,{modal:true}))}return null})};TaggingProductTags.prototype.createPopup=f(a.instances);amznJQ.available("tt.tagging",function(){TaggingProductTags.prototype.createPopup(null,null,1)})})}}}();if(typeof amznJQ!=="undefined"){amznJQ.declareAvailable("your-tags.tagging")};
