// ==UserScript==
// @name           DeVill's ThumbTools
// @namespace      http://rdevill.deviantart.com/
// @description    A helper for thumbsharing
// @include        http://*.deviantart.com/favourites/
// @include        http://*.deviantart.com/gallery/
// ==/UserScript==

/*
var scripts = [
    'http://script.aculo.us/prototype.js',
    'http://script.aculo.us/effects.js',
    'http://script.aculo.us/controls.js'
];
for (i in scripts) {
    var script = document.createElement('script');
    script.src = scripts[i];
    document.getElementsByTagName('head')[0].appendChild(script);
}

scriptText="plusdevwatch = function(){ alert('test2');new Ajax.Request('/',{onSuccess: function(transport) { alert('test3'); }});};";
var script = document.createElement('script');
script.appendChild(document.createTextNode(scriptText));
document.getElementsByTagName('head')[0].appendChild(script);
*/



devarttools_addcheckboxes = function(){
	document.getElementById('ThumbToolsButtons').style.display='inline';
	var lol = location.href;var devname = lol.substring(7,lol.indexOf('.dev'));
	var mydevname=document.getElementsByClassName('u')[0].innerHTML;
	
	var allElements, thisElement;
	allElements = document.getElementsByTagName('a');
	grepid=new RegExp(/deviantart\.com\/art\/[\w\d\-]+\-(\d+)$/);
	for (var i = 0; i < allElements.length; i++) {
		thisElement = allElements[i];
		if(thisElement.innerHTML.match(/img\s/) && !thisElement.parentNode.innerHTML.match(/input/) && thisElement.href.match(/deviantart\.com\/art\/[\w\d\-]+\-\d+$/)){
			deviationid=grepid.exec(thisElement.href);
			thisElement.id="deviationthumb"+deviationid[1];
		}
	}
	
	for (var i = 0; i < allElements.length; i++) {
		thisElement = allElements[i];
		
		if(!thisElement.innerHTML.match(/img\s/) && !thisElement.parentNode.innerHTML.match(/input/) && thisElement.href.match(/deviantart\.com\/art\/[\w\d\-]+\-\d+$/)){
			deviationid=grepid.exec(thisElement.href);
			if(i==0) document.getElementById('latestThumbToolElement').value=deviationid;
			
			var thumblink=document.getElementById('deviationthumb'+deviationid[1]).firstChild.nextSibling.src;
			
			var expansion="<span class='thumbtoolstuff'><input type='checkbox' value='"+deviationid[1]+"' onclick='document.getElementById(\"latestThumbToolElement\").value=\""+deviationid[1]+"\"'/>";
			var selfv="var latestThumbToolElement=document.getElementById(\"latestThumbToolElement\").value;var allElements, thisElement, inside;inside=false;allElements = document.getElementsByTagName(\"input\");for (var i = 0; i < allElements.length; i++) {thisElement = allElements[i];if(thisElement.value==latestThumbToolElement||thisElement.value==\""+deviationid[1]+"\"){inside=!inside;thisElement.checked=true;}if(!inside){thisElement.checked=true;}}"
			var unselfv="var latestThumbToolElement=document.getElementById(\"latestThumbToolElement\").value;var allElements, thisElement, inside;inside=false;allElements = document.getElementsByTagName(\"input\");for (var i = 0; i < allElements.length; i++) {thisElement = allElements[i];if(thisElement.value==latestThumbToolElement||thisElement.value==\""+deviationid[1]+"\"){inside=!inside;thisElement.checked=false;}if(!inside){thisElement.checked=false;}}"
			expansion+=" <a onclick='"+selfv+"'> <img src=\"http://i170.photobucket.com/albums/u277/devillmeister/selto_end.png\" alt=\"Select To\"/></a> <a onclick='"+unselfv+"'><img src=\"http://i170.photobucket.com/albums/u277/devillmeister/selto_end_2.png\" alt=\"UnSelect To\"/></a>";
			if(devname==mydevname && lol.indexOf(".deviantart.com/gallery/") != -1)expansion+=" <a href='http://www.deviantart.com/submit/deviation?deviationId="+deviationid[1]+"'><img src=\"http://i170.photobucket.com/albums/u277/devillmeister/edit.png\" alt=\"Edit\"/></a>";
			expansion+="<input type='text' value=':thumb"+deviationid[1]+":' onclick='this.select();' id='dathumbs"+deviationid[1]+"'/>";
			expansion+="<input type='text' style='display:none' value='&lt;a href=\""+ thisElement.href+"\"&gt;"+thisElement.innerHTML+"&lt;/a&gt;' onclick='this.select();'  id='htmltext"+deviationid[1]+"'/>";
			
			var htmlimgcode="&lt;a href=\""+ thisElement.href+"\" title=\""+thisElement.innerHTML+"\"&gt;";
			 htmlimgcode+="&lt;img src=\""+thumblink+"\" border=\"0\"&gt;&lt;/a&gt;";
			
			expansion+="<input type='text' style='display:none' value='"+htmlimgcode+"' onclick='this.select();'  id='htmlimg"+deviationid[1]+"'/>";
			expansion+="<input type='text' style='display:none' value='[link url=\""+ thisElement.href+"\"]"+thisElement.innerHTML+"[/link]' onclick='this.select();'  id='bbtext"+deviationid[1]+"'/>";
			
			var htmlimgcode="[link url=\""+ thisElement.href+"\"]";
			 htmlimgcode+="[img]"+thumblink+"[/img][/link]";
			
			expansion+="<input type='text' style='display:none' value='"+htmlimgcode+"' onclick='this.select();'  id='bbimg"+deviationid[1]+"'/>";
			
			thisElement.parentNode.innerHTML=thisElement.parentNode.innerHTML+expansion;
		}
	}
	
}

devarttools_copythumbs = function(){
	var allElements, thisElement;
	allElements = document.getElementsByTagName('input');
	grepid=new RegExp(/deviantart\.com\/art\/[\w\d\-]+\-(\d+)$/);
	retval="";
	for (var i = 0; i < allElements.length; i++) {
		thisElement = allElements[i];
		if(thisElement.type=='checkbox' && thisElement.checked==true){
			deviationid=grepid.exec(thisElement.href);
			retval=retval+":thumb"+thisElement.value+": ";
		}
	}
	//alert(retval+"\n<sub>Generated with <b>the ThumbshareTool</b> http://rdevill.deviantart.com/art/DeviantArt-Thumbshare-Tool-108494740</sub>");
	document.getElementById('thumbsretarea').value=retval+"\n<sub>Generated with <b>the ThumbshareTool</b> http://rdevill.deviantart.com/art/DeviantArt-Thumbshare-Tool-108494740</sub>";
	document.getElementById('thumbsretarea').style.display='block';
	document.getElementById('thumbsrethelp').style.display='none';
	document.getElementById('thumbsretbox').style.display='block';
}



devarttools_copyhtmtext = function(){
	var allElements, thisElement;
	allElements = document.getElementsByTagName('input');
	grepid=new RegExp(/deviantart\.com\/art\/[\w\d\-]+\-(\d+)$/);
	retval="";
	for (var i = 0; i < allElements.length; i++) {
		thisElement = allElements[i];
		if(thisElement.type=='checkbox' && thisElement.checked==true){
			deviationid=grepid.exec(thisElement.href);
			retval=retval+document.getElementById("htmltext"+thisElement.value).value+" ";
		}
	}
	//alert(retval+"<br/><sub>Generated with <a href='http://rdevill.deviantart.com/art/DeviantArt-Thumbshare-Tool-108494740'><b>the ThumbshareTool</b></a></sub>");
	document.getElementById('thumbsretarea').value=retval+"<br/><sub>Generated with <a href='http://rdevill.deviantart.com/art/DeviantArt-Thumbshare-Tool-108494740'><b>the ThumbshareTool</b></a></sub>"
	document.getElementById('thumbsretarea').style.display='block';
	document.getElementById('thumbsrethelp').style.display='none';
	document.getElementById('thumbsretbox').style.display='block';
}

devarttools_copyhtmthumb = function(){
	var allElements, thisElement;
	allElements = document.getElementsByTagName('input');
	grepid=new RegExp(/deviantart\.com\/art\/[\w\d\-]+\-(\d+)$/);
	retval="";
	for (var i = 0; i < allElements.length; i++) {
		thisElement = allElements[i];
		if(thisElement.type=='checkbox' && thisElement.checked==true){
			deviationid=grepid.exec(thisElement.href);
			retval=retval+document.getElementById("htmlimg"+thisElement.value).value+" ";
		}
	}
	//alert(retval+"<br/><sub>Generated with <a href='http://rdevill.deviantart.com/art/DeviantArt-Thumbshare-Tool-108494740'><b>the ThumbshareTool</b></a></sub>");
	document.getElementById('thumbsretarea').value=retval+"<br/><sub>Generated with <a href='http://rdevill.deviantart.com/art/DeviantArt-Thumbshare-Tool-108494740'><b>the ThumbshareTool</b></a></sub>"
	document.getElementById('thumbsretarea').style.display='block';
	document.getElementById('thumbsrethelp').style.display='none';
	document.getElementById('thumbsretbox').style.display='block';
}

devarttools_copybbtext = function(){
	var allElements, thisElement;
	allElements = document.getElementsByTagName('input');
	grepid=new RegExp(/deviantart\.com\/art\/[\w\d\-]+\-(\d+)$/);
	retval="";
	for (var i = 0; i < allElements.length; i++) {
		thisElement = allElements[i];
		if(thisElement.type=='checkbox' && thisElement.checked==true){
			deviationid=grepid.exec(thisElement.href);
			retval=retval+document.getElementById("bbtext"+thisElement.value).value+" ";
		}
	}
	//alert(retval+"\nGenerated with [link url='http://rdevill.deviantart.com/art/DeviantArt-Thumbshare-Tool-108494740']the ThumbshareTool[/link]");
	document.getElementById('thumbsretarea').value=retval+"\nGenerated with [link url='http://rdevill.deviantart.com/art/DeviantArt-Thumbshare-Tool-108494740']the ThumbshareTool[/link]"
	document.getElementById('thumbsretarea').style.display='block';
	document.getElementById('thumbsrethelp').style.display='none';
	document.getElementById('thumbsretbox').style.display='block';
}

devarttools_copybbthumb = function(){
	var allElements, thisElement;
	allElements = document.getElementsByTagName('input');
	grepid=new RegExp(/deviantart\.com\/art\/[\w\d\-]+\-(\d+)$/);
	retval="";
	for (var i = 0; i < allElements.length; i++) {
		thisElement = allElements[i];
		if(thisElement.type=='checkbox' && thisElement.checked==true){
			deviationid=grepid.exec(thisElement.href);
			retval=retval+document.getElementById("bbimg"+thisElement.value).value+" ";
		}
	}
	//alert(retval+"\nGenerated with [link url='http://rdevill.deviantart.com/art/DeviantArt-Thumbshare-Tool-108494740']the ThumbshareTool[/link]");
	document.getElementById('thumbsretarea').value=retval+"\nGenerated with [link url='http://rdevill.deviantart.com/art/DeviantArt-Thumbshare-Tool-108494740']the ThumbshareTool[/link]"
		document.getElementById('thumbsretarea').style.display='block';
	document.getElementById('thumbsrethelp').style.display='none';
	document.getElementById('thumbsretbox').style.display='block';
}

devarttools_count= function(){
	var allElements, thisElement;
	allElements = document.getElementsByTagName('input');
	grepid=new RegExp(/deviantart\.com\/art\/[\w\d\-]+\-(\d+)$/);
	retval=0;
	for (var i = 0; i < allElements.length; i++) {
		thisElement = allElements[i];
		if(thisElement.type=='checkbox' && thisElement.checked==true){
			retval+=1;
		}
	}
	alert(retval);
}
devarttools_showcodes= function(){
	var allElements, thisElement;
	allElements = document.getElementsByTagName('input');
	for (var i = 0; i < allElements.length; i++) {
		thisElement = allElements[i];
		thisElement.style.display='inline';
	}
}
devarttools_showhelp= function(){
	document.getElementById('thumbsretarea').style.display='none';
	document.getElementById('thumbsrethelp').style.display='block';
	document.getElementById('thumbsretbox').style.display='block';
}

devarttools_addwatch = function(){
	document.getElementById('watch-form').submit();
	if (window.event)event.cancelBubble=true;
	return false;
}



devarttools_selectall = function(){
	select(true);
}

devarttools_selectnone = function(){
	select(false);
}

select = function(v){
	var allElements, thisElement;
	allElements = document.getElementsByTagName('input');
	retval="";
	for (var i = 0; i < allElements.length; i++) {
		thisElement = allElements[i];
		if(thisElement.type=='checkbox'){
			thisElement.checked=v;
		}
	}
}

devarttools_close = function(){
	document.getElementById('ThumbToolsButtons').style.display='none';
	allElements = document.getElementsByTagName('span');
	retval="";
	for (var i = 0; i < allElements.length; i++) {
		thisElement = allElements[i];
		if(thisElement.className=='thumbtoolstuff'){
			thisElement.parentNode.removeChild(thisElement);
		}
	}
}

window.addEventListener('load', function(event) {

	if(!document.getElementById('ThumbToolsButtons')){
			var logoutElement = document.getElementsByClassName('logout')[0].parentNode;
			
			var newelement=document.createTextNode(' | ');
			logoutElement.appendChild(newelement);

			var newelement=document.createElement('a');
			newelement.innerHTML='ThumbTools';
			newelement.addEventListener("click", devarttools_addcheckboxes, true);
			logoutElement.appendChild(newelement);
			
			var newelement=document.createElement('span');
			newelement.id='ThumbToolsButtons';
			newelement.style.display='none';
			logoutElement.appendChild(newelement);
			logoutElement=newelement;
			
			var newelement=document.createElement('a');
			newelement.innerHTML=' <img src="http://i170.photobucket.com/albums/u277/devillmeister/selto.png" alt="Select All"/>';
			newelement.addEventListener("click", devarttools_selectall, true);
			logoutElement.appendChild(newelement);

			var newelement=document.createElement('a');
			newelement.innerHTML=' <img src="http://i170.photobucket.com/albums/u277/devillmeister/unselto.png" alt="UnSelect All"/>';
			newelement.addEventListener("click", devarttools_selectnone, true);
			logoutElement.appendChild(newelement);

			var newelement=document.createElement('a');
			newelement.innerHTML=' <img src="http://i170.photobucket.com/albums/u277/devillmeister/dathumb.png" alt="dA Thumbs"/>';
			newelement.addEventListener("click", devarttools_copythumbs, true);
			logoutElement.appendChild(newelement);

			var newelement=document.createElement('a');
			newelement.innerHTML=' <img src="http://i170.photobucket.com/albums/u277/devillmeister/htmltext.png" alt="HTML Text"/>';
			newelement.addEventListener("click", devarttools_copyhtmtext, true);
			logoutElement.appendChild(newelement);
		

			var newelement=document.createElement('a');
			newelement.innerHTML=' <img src="http://i170.photobucket.com/albums/u277/devillmeister/htmlthumb.png" alt="HTML Thumb"/>';
			newelement.addEventListener("click", devarttools_copyhtmthumb, true);
			logoutElement.appendChild(newelement);
			
			var newelement=document.createElement('a');
			newelement.innerHTML=' <img src="http://i170.photobucket.com/albums/u277/devillmeister/bbtext.png" alt="BB Text"/>';
			newelement.addEventListener("click", devarttools_copybbtext, true);
			logoutElement.appendChild(newelement);
		

			var newelement=document.createElement('a');
			newelement.innerHTML=' <img src="http://i170.photobucket.com/albums/u277/devillmeister/bbthumb.png" alt="BB Thumb"/>';
			newelement.addEventListener("click", devarttools_copybbthumb, true);
			logoutElement.appendChild(newelement);
		

			var newelement=document.createElement('a');
			newelement.innerHTML=' <img src="http://i170.photobucket.com/albums/u277/devillmeister/count.png" alt="Count"/>';
			newelement.addEventListener("click", devarttools_count, true);
			logoutElement.appendChild(newelement);

			var newelement=document.createElement('a');
			newelement.innerHTML=' <img src="http://i170.photobucket.com/albums/u277/devillmeister/arrows.png" alt="Show codes"/>';
			newelement.addEventListener("click", devarttools_showcodes, true);
			logoutElement.appendChild(newelement);

			var newelement=document.createElement('a');
			newelement.innerHTML=' <img src="http://i170.photobucket.com/albums/u277/devillmeister/help.png" alt="Help"/>';
			newelement.addEventListener("click", devarttools_showhelp, true);
			logoutElement.appendChild(newelement);
			
			var newelement=document.createElement('a');
			newelement.innerHTML=' <img src="http://i170.photobucket.com/albums/u277/devillmeister/close.png" alt="Close"/>';
			newelement.addEventListener("click", devarttools_close, true);
			logoutElement.appendChild(newelement);
			
			var newelement=document.createElement('input');
			newelement.type='hidden';
			newelement.value='';
			newelement.id='latestThumbToolElement'
			logoutElement.appendChild(newelement);
			
			var outputelement=document.createElement('div');
			outputelement.style.position='absolute';
			outputelement.style.left='20px';
			outputelement.style.right='20px';
			outputelement.style.display='none';
			outputelement.style.border='1px solid #6B8075';
			outputelement.style.backgroundColor='#40534A';
			outputelement.style.padding='10px';
			outputelement.id='thumbsretbox';
			logoutElement.appendChild(outputelement);
			
			var newelement=document.createElement('div');
			newelement.id='thumbsrethelp';
			var tmp;
			tmp='<p><b>Toolbar buttons</b><br/> <img src="http://i170.photobucket.com/albums/u277/devillmeister/selto.png" alt="Select All"/> Select All deviations on page <br/> <img src="http://i170.photobucket.com/albums/u277/devillmeister/unselto.png" alt="UnSelect All"/> Unselect All deviations on page <br/> <img src="http://i170.photobucket.com/albums/u277/devillmeister/dathumb.png" alt="dA Thumbs"/> Generate dA Thumbcodes for selected deviations <br/> <img src="http://i170.photobucket.com/albums/u277/devillmeister/htmltext.png" alt="HTML Text"/> Generate HTML text links for selected deviations <br/> <img src="http://i170.photobucket.com/albums/u277/devillmeister/htmlthumb.png" alt="HTML Thumb"/> Generate HTML thumb links for selected deviations <br/> <img src="http://i170.photobucket.com/albums/u277/devillmeister/bbtext.png" alt="BB Text"/> Generate BB text links for selected deviations <br/> <img src="http://i170.photobucket.com/albums/u277/devillmeister/bbthumb.png" alt="BB Thumb"/> Generate BB thumb links for selected deviations <br/> <img src="http://i170.photobucket.com/albums/u277/devillmeister/count.png" alt="Count"/> Count the number of deviations selected <br/> <img src="http://i170.photobucket.com/albums/u277/devillmeister/arrows.png" alt="More codes"/> Shows HTML and BB codes for each thumb <br/> <img src="http://i170.photobucket.com/albums/u277/devillmeister/help.png" alt="Help"/> Show this help page :) <br/> <img src="http://i170.photobucket.com/albums/u277/devillmeister/close.png" alt="Close"/> Close thumbtools <br/> <br/> <b>Thumb buttons</b><br/> <img src="http://i170.photobucket.com/albums/u277/devillmeister/selto_end.png" alt="Select To"/> Select all deviations between this and last selected deviation <br/> <img src="http://i170.photobucket.com/albums/u277/devillmeister/selto_end_2.png" alt="UnSelect To"/> Unselect all deviations between this and last selected deviation <br/> <img src="http://i170.photobucket.com/albums/u277/devillmeister/edit.png" alt="Edit"/> Edit deviation <br/> <br/> Input fields below the thumbs contain codes for the individaual deviations for easy acces :) <br/> <b>NOTE: </b>When opening a new page of the gallery selections are lost, and thumbtools need to be reopened. This is a know limitation of the current version! If you want to select deviations from more pages, please select them individually form the separate pages, and copy/paste them together!<br/><br/>Developer: <a href="http://rdevill.deviantart.com">rdevill</a> - Icon designs:  <a href="http://iqk.deviantart.com">iqk</a></p>';
			newelement.innerHTML=tmp;
			outputelement.appendChild(newelement);
			
			var newelement=document.createElement('textarea');
			newelement.id='thumbsretarea';
			newelement.style.width='100%';
			newelement.style.height='200px';	
			newelement.addEventListener("click",function(){this.select();},true)			
			outputelement.appendChild(newelement);
			
			var newelement=document.createElement('br');
			outputelement.appendChild(newelement);
			
			var newelement=document.createElement('input');
			newelement.type='button';
			newelement.value='Close';
			newelement.addEventListener("click",function(){document.getElementById("thumbsretbox").style.display="none";},true)
			outputelement.appendChild(newelement);
			
	}
		
}, 'false');