// ==UserScript==
// @name		pick out ipad and ipod
// @namespace	http://www.kanasansoft.com/
// @copyright	2010+, Kanasansoft (http://www.kanasansoft.com/)
// @auther		Kanasansoft
// @version		1.0.201001282216
// @homepage	http://www.kanasansoft.com/
// @license		MIT; http://www.opensource.org/licenses/mit-license.php
// @description 
// @include		*
// ==/UserScript==
(
	function(){

		var undefined=void(0);

		var regSearch=/(ipod|ipad)/i;

		var changeString=function(param){
			var text=String(param);
			var outer=document.createElement("span");
			while(text.length>0){

				var match=text.match(regSearch);

				if(match&&match.length>0){

					var leftContext=RegExp.leftContext;
					var rightContext=RegExp.rightContext;
					var matchContext=match[0];

					if(leftContext.length>0){
						outer.appendChild(document.createTextNode(leftContext));
					}

					var fgcolor=undefined;
					var bgcolor=undefined;
					switch(matchContext.toLowerCase()){
					case "ipod":
						fgcolor="#ff0000";
						bgcolor="#ffcccc";
						break;
					case "ipad":
						fgcolor="#0000ff";
						bgcolor="#ccccff";
						break;
					}
					var inner=document.createElement("span");
					if(fgcolor){
						inner.style.color=fgcolor;
					}
					if(bgcolor){
						inner.style.backgroundColor=bgcolor;
					}
					inner.textContent=matchContext;
					outer.appendChild(inner);

					text=rightContext;

				}else{
					outer.appendChild(document.createTextNode(text));
					break;
				}

			}
			return outer;
		}

		var main=function(doc){
			var texts=
				document.evaluate(
					"//text()",
					doc,
					null,
					XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
					null
				);
			for(var i=texts.snapshotLength-1;i>=0;i--){
				var text=texts.snapshotItem(i);
				if(text.parentNode.nodeName.toLowerCase()=="title"||
				   text.parentNode.nodeName.toLowerCase()=="script"||
				   text.parentNode.nodeName.toLowerCase()=="style"||
				   text.parentNode.nodeName.toLowerCase()=="textarea"||
				   text.parentNode.nodeName.toLowerCase()=="option"||
				   !regSearch.test(text.nodeValue)){
					continue;
				}
				var ws=changeString(text.nodeValue);
				text.parentNode.replaceChild(ws,text);
			}
		}

		var onloadAutoPagerize=function(){
			window.AutoPagerize.addFilter(
				function(nodes){
					for(var i=0;i<nodes.length;i++){
						main(nodes[i]);
					}
				}
			);
		}

		var initialize=function(){
			main(document.body);
			if(window.AutoPagerize){
				onloadAutoPagerize();
			}else{
				window.addEventListener(
					'GM_AutoPagerizeLoaded',
					onloadAutoPagerize,
					false
				);
			}
		}

		window.addEventListener("load",initialize,false);

	}
)();
