(function(sh){
 	var DEFAULT_PAGECONTAINER_VIEW_COUNT = 5;
	var DEFAULT_VIEW_COUNT = 5;
	var DEFAULT_CONTENT_KEY = 'table';
	var OPTIONAL_PARAMNAME = 'uri';
	var layout_set = {pageContainer:{low1:'li',low2:'div'}};

	var page_set = [
		{url_regex:/\/WishListSet\.servlet/,value:'read_fav'}
	];
	
	var context_base = '';
	var script_base = context_base + '/readhistory/';
	var _src_base = 'http://www.nissen.co.jp/';
	var domain_set = ["#d#",'http://www.nissen.co.jp/'],
		url_set = ["#u#",'http://www.nissen.co.jp/s/r/'],
		src_set = ["#s#",'http://www.nissen.co.jp/sho_item/regular/sho_images/'],
		short_hand = 0, long_hand = 1;
	var head = document.getElementsByTagName('head')[0];
	window.sharedHistory = sh = function(){
		head || (head = document.getElementsByTagName('head')[0]);
		return sh;
	};
	sh.opparam;
	sh.initOptional = function(){
		var url = sh.getLocation();
		for (var i = 0; i < page_set.length; i++) {
			var page = page_set[i];
			if (page.url_regex) {
				if (page.url_regex.test(url)) sh.opparam = page.value;
			}
		}
	};
	sh.getQuery = function(){
		var query;
		if(location.href.match(/\?(.+)/) && location.href.match(/\?(.+)/)[1]){
/*** Test 2010.12.06 Comment Out
		    query = location.href.match(/\?(.+)/)[1];
***/

/*** Test 2010.12.06 Add Start ***/
			for (var k in window.RecommenderOptionObject) {
				var val = window.RecommenderOptionObject[k];
				if (val) {
					if (query) {
						query += '&' + k + '=' + val;
					} else {
						query = k + '=' + val;
					}
				}
			}
/*** Test 2010.12.06 Add End ***/
		}else if (window.RecommenderOptionObject) {
			for (var k in window.RecommenderOptionObject) {
				var val = window.RecommenderOptionObject[k];
				if (val) {
					if (query) {
						query += '&' + k + '=' + val;
					} else {
						query = k + '=' + val;
					}
				}
			}
		}
		return query;
	};
	sh.addOptionalParam = function(url) {
		var query = sh.getQuery();
		if (query) {
			return sh.addUrlQuery(url,query);
		} else {
			return sh.addUrlParam(url,OPTIONAL_PARAMNAME,sh.opparam);
		}
	};
	sh.addUrlQuery = function(url,query){
		if (!url || !query) {
		} else if (url.lastIndexOf('&') > -1 && url.lastIndexOf('&') != url.length
		    || url.lastIndexOf('?') > -1 && url.lastIndexOf('?') != url.length) {
		    url += '&' + query;
		} else if(url.length > 0) {
		    url += '?' + query;
		}
		return url;
	};
	sh.addUrlParam = function(url,paramName,paramValue){
		if (!url || !paramName || !paramValue) {
		} else if (url.lastIndexOf('&') > -1 && url.lastIndexOf('&') != url.length
		    || url.lastIndexOf('?') > -1 && url.lastIndexOf('?') != url.length) {
		    url += '&' + paramName + '=' + paramValue;
		} else if(url.length > 0) {
		    url += '?' + paramName + '=' + paramValue;
		}
		return url;
	};
	sh.getLocation = function(){
		if (sh.isAllVewPage()) {
			return location.href;
		} else {
			return document.referrer;
		}
	};
	sh.isAllVewPage = function(){
		return (/readhistory(\/?$|\/index\.htm)/.test(location.href));
	};
	sh.data = [];
	sh.fl = function(vars){
		sh.result = document.getElementById('sharedHistoryResult');
		var fdiv = sh.flashDiv || document.getElementById('sharedHistoryFlash');
		if (window.ActiveXObject) {
			fdiv.innerHTML = '<object id="sharedHistorySwf" style="visibility: visible" height="1" width="1" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"><param name="FlashVars" value=""><param name="Movie" value="'+script_base+'swf/sharedHistory.swf?' + vars + "&" + 1*new Date + '"><param name="Src" value="'+script_base+'swf/sharedHistory.swf?' + vars + "&" + 1*new Date + '"><param name="WMode" value="Window"><param name="Play" value="0"><param name="Loop" value="-1"><param name="Quality" value="Low"><param name="AllowScriptAccess" value=""><param name="Scale" value="ShowAll"><param name="EmbedMovie" value="0"><param name="SWRemote" value=""><param name="MovieData" value=""><param name="AllowNetworking" value="all"><param name="AllowFullScreen" value="false"></object>';
			sh.swf = document.getElementById('sharedHistorySwf');
		} else {
			var embed = document.createElement('embed');
			embed.type = 'application/x-shockwave-flash';
			embed.height = 1;
			embed.width = 1;
			embed.quality = 'low';
			embed.bgcolor = '#ffffff';
			embed.id = 'sharedHistorySwf';
			embed.src = script_base + 'swf/sharedHistory.swf?' + vars + "&" + 1*new Date;
			fdiv.appendChild(embed);
			sh.swf = embed;
		}
		return sh;
	};
	sh.needFlash = function(){
		sharedHistory.nowork();
	};
	sh.selectAll = function(){
		var checks = document.getElementsByName('sh_selects');
		for (var i = 0,l = checks.length; i < l; i++) {
			checks[i].checked = true;
		}
	};
	sh.deSelect = function(){
		var checks = document.getElementsByName('sh_selects');
		for (var i = 0,l = checks.length; i < l; i++) {
			checks[i].checked = false;
		}
	};
	sh.deleteBy = function(){
		var checks = document.getElementsByName('sh_selects');
		var hash = {}, isDel;
		for (var i = 0,l = checks.length; i < l; i++) {
			var ck = checks[i];
			if (ck.checked) {
				var val = ck.value.replace(src_set[long_hand], src_set[short_hand]).replace(domain_set[long_hand], domain_set[short_hand]);
				hash[encodeURIComponent(val)] = true;
				isDel = true;
				sh.current.length--;
			}
		}
		if (isDel) {
			sh.swf.deleteByHash(hash);
			if (sh.page && sh.current.length) {
				setTimeout(function(){
					var cul = sh.current;
					var _l = cul.length / cul.par + 1;
					sh.page(_l <= cul.page ? 1 : cul.page);
				},100);
			} else if (!sh.current.length) {
				if (sh.trs && sh.trs.length) {
					for (var j = 0,L=sh.trs.length;j<L;j++) {
						sh.tbody.removeChild(sh.trs[j]);
					}
				}
				sh.nowork();
				var zero = document.getElementById("sharedHistory_zero");
				if (zero) zero.style.display = 'block';
			}
		}
	};
	sh.page = function(index,par,contentKey,specificLow1,specificLow2){
		var cul = sh.current;
		if (index) {
			cul.page = index;
		} else {
			if (sh.current.length <= sh.current.end) {
				cul.page = Math.floor(cul.length / cul.par) + 1;
			}
			index = cul.page;
		}
		if (par && parseInt(par,10)) {
			cul.par = par;
		}
		cul.start = (index - 1) * cul.par + 1;
		cul.end = index * cul.par <  cul.length ? index * cul.par : cul.length;
		var navis = sh.getNavis(contentKey);
		var naviObject = sh.getNaviObject(contentKey,navis);
		sh.pager(navis,naviObject,contentKey);
		var data = sh.swf.getListByRange(cul.start-1, cul.end);
		if (data && data.length) {
			sh.detailShow(data,contentKey,specificLow1,specificLow2);
		}
	};

	sh.pager = function(navis,naviObject,contentKey){
		var pagerObjects = {
			table:'pagerTable',
			pageContainer:'pagerPageContainer'
		};
		contentKey = contentKey || DEFAULT_CONTENT_KEY;
		navis = navis || sh.getNavis();
		naviObject = naviObject || sh.getNaviObject();
		var cul = sh.current,diff;
		cul.nextpager = (diff = cul.length - cul.end) < cul.par ? diff : cul.par;
		cul.nextpage  = cul.page + 1;
		cul.prevpager = cul.par;
		cul.prevpage  = cul.page - 1;
		var pagerObject = sh[pagerObjects[contentKey]];
		pagerObject(navis,naviObject,cul);
	};
	sh.pagerTable = function (navis,naviObject,cul) {
		var likers = ['<ul class="sharedHistoryLinker">'];
		var _l = cul.length / cul.par;
		if (cul.prevpage <= 0) {
		} else {
			likers.push('<li class="prev">&nbsp;' + sh.replace(naviObject.prevpager.tm,cul) + '&nbsp;</li>');
		}
		for (var j = 0,J=1; j < _l; j++) {
			if ( (J = j+1) != cul.page) {
				likers.push('<li class="page'+(j+1)+'">&nbsp;<a href="javascript:sharedHistory.page(' + J + ');">'+ J +'</a>&nbsp;</li>');
			} else {
				likers.push('<li class="page'+(j+1)+' current_page">&nbsp;'+J+'&nbsp;</li>');
			}
		}
		if (cul.nextpager <= 0) {
		} else {
			likers.push('<li class="next">&nbsp;' + sh.replace(naviObject.nextpager.tm,cul) + '&nbsp;</li>');
		}
		likers.push('</ul>');
		cul.linker = likers.join("\n");
		var elementKeys = ['counter','linker'];
		for (var i = 0; i < navis.length; i++) {
			var type = navis[i];
			for (var j = 0; j < elementKeys.length; j++) {
				if (naviObject[elementKeys[j]]) {
					naviObject[elementKeys[j]].elem[type].innerHTML = sh.replace(naviObject[elementKeys[j]].tm,cul);
				}
			}
		}	
	};
	sh.pagerPageContainer = function (navis,naviObject,cul) {
		if (cul.prevpage <= 0) {
			naviObject.prevpager.tm = '';
		}
		if (cul.nextpager <= 0) {
			naviObject.nextpager.tm = '';
		}
		var elementKeys = ['nextpager','prevpager'];
		for (var i = 0; i < navis.length; i++) {
			var type = navis[i];
			for (var j = 0; j < elementKeys.length; j++) {
				if (naviObject[elementKeys[j]]) {
					naviObject[elementKeys[j]].elem[type].innerHTML = sh.replace(naviObject[elementKeys[j]].tm,cul);
				}
			}
		}	
	};
	sh.initCurrent = function(length,par) {
		par = par || 10;
		if (sh.current) {
			sh.current.length || (sh.current.length = length);
		} else {
			sh.current = {page:1,start:1,end:10,length:length,par:par};
		}
		return sh.current;
	};
	sh.getNavis = function (contentKey) {
		var key = contentKey || DEFAULT_CONTENT_KEY;
		var navis = {
			table:['top','bottom'],
			pageContainer:['pageContainer']
		};
		return navis[key];
	};
	sh.getNaviObject = function(contentKey,navis) {
		var key = contentKey || DEFAULT_CONTENT_KEY;
		navis = navis || sh.getNavis();
		var naviObject = {
			table:{
				counter:{
					id:'sharedHistory_counter_',
					tm:'${start}件〜${end}件（全${length}件）',
					elem:{}
				},
				nextpager:{
					id:'sharedHistory_nextpager_',
					tm:'<a href="javascript:sharedHistory.page(${nextpage});" class="sh_next">次＞＞</a>',
					elem:{}
				},
				prevpager:{
					id:'sharedHistory_prevpager_',
					tm:'<a href="javascript:sharedHistory.page(${prevpage});" class="sh_prev">＜＜前</a>',
					elem:{}
				},
				linker:{
					id:'sharedHistory_linker_',
					tm:'${linker}',
					elem:{}
				}
			},
			pageContainer:{
					nextpager:{
						id:'sharedHistory_nextpager_',
						tm:'<a href="javascript:sharedHistory.page(${nextpage},false,\'pageContainer\');" class="sh_next"><span>次＞＞</span></a>',
						elem:{}
					},
					prevpager:{
						id:'sharedHistory_prevpager_',
						tm:'<a href="javascript:sharedHistory.page(${prevpage},false,\'pageContainer\');" class="sh_prev"><span>＜＜前</span></a>',
						elem:{}
					}
				      }
		};
		var resultObject = naviObject[key];
		resultObject = sh.convertNaviObject(navis,resultObject);
		return resultObject;
	};
	sh.convertNaviObject = function (navis,naviObject) {
		var keys = ['counter','nextpager','prevpager','linker'];
		for (var i = 0; i < navis.length; i++) {
			var type = navis[i];
			for (var j = 0; j < keys.length; j++) {
				if (naviObject[keys[j]]) {
					naviObject[keys[j]].elem[type] = document.getElementById(naviObject[keys[j]].id + type);
				}
			}
		}
		return naviObject;
	};
	sh.initPager = function(length,par,contentKey){
		sh.current = sh.initCurrent(length,par);
		var navis = sh.getNavis(contentKey);
		var naviObject = sh.getNaviObject(contentKey,navis);
		sh.pager(navis,naviObject);
	};
	sh.viewCount = function(selects){
		var ops = selects.getElementsByTagName("option");
		for (var i = 0,l = ops.length; i < l;i++) {
			if (ops[i].selected) {
				var par = parseInt(ops[i].value);
				if (par) {
					sh.current.par = par;
					sh.page(1);
				}
			}
		}
	};
	sh.sortKeys = [{key:'date',order:1},{key:'date',order:-1},{key:'price',order:-1},{key:'price',order:1}];
	sh.sort = function(selects){
		var ops = selects.getElementsByTagName("option");
		for (var i = 0,l = ops.length; i < l;i++) {
			if (ops[i].selected) {
				sh.swf.sortBy(sh.sortKeys[i].key,sh.sortKeys[i].order);
				sh.page();
			}
		}
	};
	sh.replace = function(tmpl, obj){
		return tmpl.replace(/\$\{([^\}]+)\}/g,function(m,m1){
			return obj[m1] || "";
		});
	};
	sh.nowork = function(){
		var note = document.getElementById('sharedHistoryNotice');
		var contents = document.getElementById('sharedContents');
		contents.style.display = 'none';
		note.style.display = 'block';
	};
	sh.nouse = function(){
		var note = document.getElementById('sharedHistoryNotUse');
		var contents = document.getElementById('sharedContents');
		contents.style.display = 'none';
		note.style.display = 'block';
	};
	sh.rest = function(data, length){
		sh.initOptional();
		if (sh.table) {
			try{
				if (data && data.length > 0) {
					sh.initPager(length);
					sh.detailShow(data);
					if (document.getElementById('sharedSortBy').selectedIndex)
						sh.sort(document.getElementById('sharedSortBy'));
				} else {
					var zero = document.getElementById("sharedHistory_zero");
					if (zero) zero.style.display = 'block';
					sh.nowork();
				}
			} catch (e){
				alert(e);
			}
		}
		if (sh.container) {
			sh.listShow(data,length);
		}
		if (sh.pageContainer) {
			try{
				if (data && data.length > 0) {
					sh.pageContainerShow(data,length,DEFAULT_PAGECONTAINER_VIEW_COUNT);
				} else {
					sh.pageContainerHide();
				}
			} catch (e){
				alert(e);
			}
		}
	};
	sh.listShow = function(data, length){
		var ul = document.createElement('ul');
		ul.id = 'sharedHistoryResultList';
		if (!data.length) {
			if (sh.container)
				sh.container.style.display = 'none';
			return;
		}
		if (sh.count && data.length > sh.count) {
			sh.data = data;
			data = data.slice(0,sh.count);
		}
		var tags = [];
		for (var i = 0,l = data.length;i<l;i++) {
			var item = data[i];
			var url = decodeURIComponent(item.href).replace(url_set[short_hand], url_set[long_hand]).replace(domain_set[short_hand], domain_set[long_hand]);
			var src = decodeURIComponent(item.src).replace(src_set[short_hand], src_set[long_hand]).replace(domain_set[short_hand], domain_set[long_hand]);
			var name = decodeURIComponent(item.name);
			url = sh.addOptionalParam(url);
			tags.push([
				'<li class="sh_product',(i+1==l) ? ' lastitem' : '' ,'" id="sharedHistoryItem', i, '">',
					'<div class="sh_item_image">',
						'<a href="', url , '" target="_top"><img alt="', name , '" src="', src, '" width="70" height="70"></a>',
					'</div>',
					'<div class="sh_item_name"><a href="', url, '" target="_top">', name, '</a></div>',
					'<div class="sh_item_price"><a href="', url, '" target="_top">&yen;', sh.comma(item.price), '〜 （税込）</a></div>',
				'</li>'
				].join(''));
		}
		if (sh.data) {
			tags.push('<li class="sh_more"><a href="' + script_base + 'index.htm" target="_top">商品をもっと見る</a></li>');
		}
		var title = document.createElement('div');
		title.className = "sh_history_title";
		title.innerHTML = '<h3>最近チェックした商品</h3>';
		ul.innerHTML = tags.join('\n');
		sh.result.appendChild(title);
		sh.result.appendChild(ul);
		sh.rest = function(){};
	};
	sh.pageContainerShow = function(data,length,par){
		sh.pageContainerInit();
		par = par || 5;
		sh.initPager(length,par,'pageContainer');
		var specificTmplKey = 'pageContainer';
		sh.page(1,par,specificTmplKey);
	};
	sh.pageContainerInit = function(){
		var nodes = ['sharedHistoryA','sharedHistoryB'];
		var initTemp = [
		"<div class='sh_history_title'><p><span>最近チェックした商品</span></p></div>",
		"<div class='sh_history_content'>",
		"<div class='back_button' id='sharedHistory_prevpager_pageContainer'>&nbsp;</div>",
		"<div class='sharedHistoryResultList'><ul id='sharedHistoryBody'></ul></div>",
		"<div class='next_button' id='sharedHistory_nextpager_pageContainer'>&nbsp;</div>",
		"<p class='sh_more'><a href='/readhistory/index.htm' target='_top'><span>すべての閲覧履歴</span></a></p>",
		"</div></div>"].join('');
		for (var i = 0; i < nodes.length; i ++) {
			if (document.getElementById(nodes[i])) {
				var node = document.getElementById(nodes[i]);
				node.innerHTML = initTemp;
				break;
			}
		}
	};
	sh.pageContainerHide = function(){
	};
	sh.more = function(){
		return false;
	};
	sh.allOff = function(){
		if (sh.swf.delAll) {
			sh.swf.delAll();
			if (sh.trs && sh.trs.length) {
				for (var j = 0,L=sh.trs.length;j<L;j++) {
					sh.tbody.removeChild(sh.trs[j]);
				}
			}
		}
		sh.swf.shoff();
		sh.nouse();
		if (sh.isClose) sh.prompt.close();
	};
	sh.activate = function(){
		sh.swf.onn(1);
		if (sh.isClose) sh.prompt.close();
		sh.nowork();
		var zero = document.getElementById("sharedHistory_zero");
		if (zero) zero.style.display = 'block';
		var off = document.getElementById("sharedHistoryNotUse");
		if (off) off.style.display = 'none';
	};
	sh.notuse = function(){
		sh.disable = true;
		if (sh.container)
			sh.container.style.display = 'none';
		if (sh.table) sh.nouse();
	};
	sh.viewStock = function(uri){
		sh.popup(_src_base + "GetItemStockInfo.servlet?method_flg=1&" + uri, 850, 410);
	};
	sh.popup = function(url,width,height,name){
		var left = (screen.width-width)/2;
		var top  = (screen.height-height)/2;
		var param = ['menubar=no','toolbar=no','scrollbars=yes', 'width='+width, 'height='+height,'left='+left,'top='+top].join(',');
		return window.open(url, name || '_blank', param);
	};
	sh.AddToFavorite = function(wid){
		sh.popup(_src_base + "WishListAdd.servlet?refererFlg=1&siteFlg=&size=&color=&wishItemNo=" + wid + "&key="+Math.random(), 260, 130);
	};
	sh.getTmpls = function (contentKey) {
		contentKey = contentKey || DEFAULT_CONTENT_KEY;
		var tmpls = {
			table:[
				{tm:'<input type="checkbox" name="sh_selects" value="${src}">', className:'sh_item_selects'},
				{tm:'<a href="${href}"><img alt="${name}" width="70" height="70" src="${src}"></a>', className:'sh_item_image'},
				{tm:'<a href="${href}">${name}</a>'                         , className:'sh_item_name'},
				{tm:'&yen;${price}〜 （税込）'                                              , className:'sh_item_price'},
				{tm:'<a href="javascript:sharedHistory.viewStock(\'&book_no=${book_no}&sho_no=${sho_no}\');"><img src="http://www.nissen.co.jp/Fali/images/btn_zaiko.gif" alt="在庫を見る"></a>', className:'sh_item_stock'},
				{tm:'<a href="javascript:sharedHistory.AddToFavorite(\'${book_no}${sho_no}\');" onclick="tool(\'閲覧履歴「お気に入りリスト」に追加\');"><img src="http://www.nissen.co.jp/cms_common/nol/common/img/btn_link_bookmark.gif" alt="お気に入りに追加"/></a>', className:'sh_item_favs'}
		],
			pageContainer:[
				{tm:'<a href="${href}" target="_top"><img alt="${name}" width="70" height="70" src="${src}"></a>', className:'sh_item_image'},
				{tm:'<a href="${href}" target="_top">${name}</a>'                         , className:'sh_item_name'},
				{tm:'&yen;${price}〜 （税込）'                                              , className:'sh_item_price'},
				{tm:'<a href="javascript:sharedHistory.AddToFavorite(\'${book_no}${sho_no}\');" onclick="tool(\'閲覧履歴「お気に入りリスト」に追加\');"><span>お気に入りに追加</span></a>', className:'sh_item_btn'}
				]
		};
		return tmpls[contentKey];

	};
	sh.detailShow = function(data,specificTmplKey,specificLow1,specificLow2){
		var tbody = sh.tbody || (sh.tbody = document.getElementById("sharedHistoryBody"));
		var low1 = "tr";
		var low2 = "td";
		if (specificLow1 && specificLow2) {
			low1 = specificLow1;
			low2 = specificLow2;
		} else if (specificTmplKey) {
			if (layout_set[specificTmplKey]) {
				low1 = layout_set[specificTmplKey].low1;
				low2 = layout_set[specificTmplKey].low2;
			}
		}
		var tmpls = sh.getTmpls(specificTmplKey);
			if (sh.trs && sh.trs.length) {
			for (var j = 0,L=sh.trs.length;j<L;j++) {
				tbody.removeChild(sh.trs[j]);
			}
		}
		sh.trs = [];
		for (var i = 0,l = data.length;i<l;i++) {
			var item = data[i], _item = {};
			_item.src = decodeURIComponent(item.src).replace(src_set[short_hand], src_set[long_hand]).replace(domain_set[short_hand], domain_set[long_hand]);
			_item.href = decodeURIComponent(item.href).replace(url_set[short_hand], url_set[long_hand]).replace(domain_set[short_hand], domain_set[long_hand]);
			_item.href = sh.addOptionalParam(_item.href);
			var srcs = _item.src.match(/\/sho_images\/(\w+)_(\d+)/) || [];
			_item["book_no"] = srcs[1];
			_item["sho_no"] = srcs[2];
			_item.name = decodeURIComponent(item.name);
			_item.price = sh.comma(decodeURIComponent(item.price));
			if (specificTmplKey == 'pageContainer'){
				_item.src = sh.urlHttpsConverter(_item.src);
			}
			var tr = document.createElement(low1);
			tr.className = 'sh_product';
			for (var j=0,l2 = tmpls.length; j < l2; j++) {
				var td = document.createElement(low2);
				td.innerHTML = sh.replace(tmpls[j].tm, _item);
				td.className = tmpls[j].className;
				tr.appendChild(td);
			}
			sh.trs.push(tr);
			tbody.appendChild(tr);
		}
	};
	sh.urlHttpsConverter = function(url) {
		return url.replace(/^(http|https):/,'');
	};
	sh.comma = function (from){
		var to = from + "", tmp = "";
		while (to != (tmp = to.replace(/^([+-]?\d+)(\d\d\d)/,"$1,$2"))){
			to = tmp;
		}
		return to;
	}
	sh.view = function(count){
		sh.count = count || DEFAULT_VIEW_COUNT;
		sh.fl('sh_count=' + count);
		return sh;
	};
	sh.addEvent = function (target,type,listener,useCapture) {
		var func;
		if (window.addEventListener) {
			func = function(target,type,listener,useCapture){
				target.addEventListener(type,listener, useCapture);
			}
		} else if (window.attachEvent) {
			func = function(target,type,listener){
				target.attachEvent('on'+type,listener);
			}
		} else {
			func = function(target,type,listener){
				target['on'+type] = listener;
			}
		}
		func(target,type,listener,useCapture);
		sh.addEvent = func;
	};
	var ver = getPlayerVersion();
	var req = new deconceptPlayerVersion([8,0,0]);
	if (versionIsValid(ver,req)) {
		sh.noflash = true;
		sh.disable = true;
		var fp = document.getElementById("sharedHistoryFlplayer");
		if (fp) fp.style.display = 'block';
		var thmb = document.getElementById('sharedHistoryContainer');
		if (thmb)
			thmb.style.display = 'none';
	}
	sh.init = function(data,soon){
		var fn = function(){
			sh.flashDiv = document.body.appendChild(document.createElement('div'));
			sh.fl("log=1");
		};
		if (soon) fn();
		else sh.addEvent(window,'load',fn,false);
	};
	sh.logged = function(f){
		if (sh.flashDiv && sh.swf && window.RecommenderHistoryObject) {
			var o = {}, d = window.RecommenderHistoryObject;
			for (var k in d) if (!o[k]) {
				var val = d[k];
				if ( k=='url' || k == 'src') {
					val = val.replace(url_set[long_hand],url_set[short_hand]);
					val = val.replace(src_set[long_hand],src_set[short_hand]);
					val = val.replace(domain_set[long_hand],domain_set[short_hand]);
				}
				o[k] = encodeURIComponent(val);
			}
			sh.swf.add(o);
			setTimeout(function(){
				if (typeof f == "function") {
					f();
				} else {
					sh.flashDiv.parentNode.removeChild(sh.flashDiv);
				}
			},1000);
		}
	};
	sh.prompt = function (flag) {
		var win = sh.popup('setting.htm#'+flag,500,250,'HistorySettingWindow');
	};
	sh.table = document.getElementById('sharedHistoryTable');
	sh.container = document.getElementById('sharedHistoryContainer');
	sh.Contents = document.getElementById('sharedContents');
	sh.pageContainer = document.getElementById('sharedHistoryPageContainer');
	if (sh.disable) {
		if (sh.table) sh.nowork();
		if (sh.Contents) {
			if (sh.Contents.style)
				sh.Contents.style.display = 'none';
		}
	} else if (sh.table) {
		sh.fl("detail=1&count=10");
	} else if (sh.container){
		sh.fl('detail=1&count=5');
	} else if (sh.pageContainer){
		sh.fl('detail=1&count=5');
	} else if (window.RecommenderHistoryObject) {
		sh.init(window.RecommenderHistoryObject);
	} else {
		var fn = function() {
			if (window.RecommenderHistoryObject) {
				sh.init(window.RecommenderHistoryObject,true);
			}
		};
		sh.addEvent(window,'load',fn,false);
	}
/**
 * SWFObject v1.5: Flash Player detection and embed - http://blog.deconcept.com/swfobject/
 *
 * SWFObject is (c) 2007 Geoff Stearns and is released under the MIT License:
 * http://www.opensource.org/licenses/mit-license.php
 *
 */
/* ---- detection functions ---- */
function getPlayerVersion(){
	var PlayerVersion = new deconceptPlayerVersion([0,0,0]);
	if(navigator.plugins && navigator.mimeTypes.length){
		var x = navigator.plugins["Shockwave Flash"];
		if(x && x.description) {
			PlayerVersion = new deconceptPlayerVersion(x.description.replace(/([a-zA-Z]|\s)+/, "").replace(/(\s+r|\s+b[0-9]+)/, ".").split("."));
		}
	}else if (navigator.userAgent && navigator.userAgent.indexOf("Windows CE") >= 0){ // if Windows CE
		var axo = 1;
		var counter = 3;
		while(axo) {
			try {
				counter++;
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash."+ counter);
//				document.write("player v: "+ counter);
				PlayerVersion = new deconceptPlayerVersion([counter,0,0]);
			} catch (e) {
				axo = null;
			}
		}
	} else { // Win IE (non mobile)
		// do minor version lookup in IE, but avoid fp6 crashing issues
		// see http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
		try{
			var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
		}catch(e){
			try {
				var axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
				PlayerVersion = new deconceptPlayerVersion([6,0,21]);
				axo.AllowScriptAccess = "always"; // error if player version < 6.0.47 (thanks to Michael Williams @ Adobe for this code)
			} catch(e) {
				if (PlayerVersion.major == 6) {
					return PlayerVersion;
				}
			}
			try {
				axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
			} catch(e) {}
		}
		if (axo != null) {
			PlayerVersion = new deconceptPlayerVersion(axo.GetVariable("$version").split(" ")[1].split(","));
		}
	}
	return PlayerVersion;
}
function deconceptPlayerVersion(arrVersion){
	this.major = arrVersion[0] != null ? parseInt(arrVersion[0]) : 0;
	this.minor = arrVersion[1] != null ? parseInt(arrVersion[1]) : 0;
	this.rev = arrVersion[2] != null ? parseInt(arrVersion[2]) : 0;
}
function versionIsValid(fv,_fv){
	if(_fv.major < fv.major) return false;
	if(_fv.major > fv.major) return true;
	if(_fv.minor < fv.minor) return false;
	if(_fv.minor > fv.minor) return true;
	if(_fv.rev < fv.rev) return false;
	return true;
}

})();

