// JavaScript Document


/**************************
* called from top page
**************************/

function tpChangeSkin(){
	DetailGlobal.main.setSkin();
}

function tpIsDetailPage(){
	return true;
}

function tpUpdateShelves(){
	ShelfManager.loadAllShelfData();
}




var DetailPageType = {
	BOOK	:0,
	WORK	:1,
	CREATOR	:2
}




var DetailConfig = {
	ID_BOOK_PRE			:"jsid-detailBook-",
	ID_WORK_PRE			:"jsid-detailWork-",
	ID_CREATOR_PRE		:"jsid-detailCreator-",
	ID_TAB_PRE			:"jsid-tab",
	ID_TAB_GROUP		:"jsid-detailTabGroup",
	ID_TAB_TITLE		:"jsid-detailTabTitle",
	ID_LEFT_BTN			:"jsid-detailLeftBtn",
	ID_RIGHT_BTN		:"jsid-detailRightBtn",
	ID_SHELF_SELECT		:"jsid-detailShelfSelect",
	ID_BOOK_RESULT_LIST	:"jsid-detailBookResult",
	ID_BOOK_RESULT_AREA	:"jsid-detailBookResultArea",
	ID_WIKI_RESULT_LIST	:"jsid-detailWikipediaResult",
	ID_WIKI_RESULT_AREA	:"jsid-detailWikiResultArea",
	ID_MORE_BTN			:"jsid-detailMoreButton",
	ID_TOTAL_NUM		:"jsid-detailTotalNum",
	ID_MAIN_TEXT		:"jsid-detailMainText",
	ID_SHELF_BTN		:"jsid-detailShelfBtn",
	ID_BOOK_WORK_BTN	:"jsid-detailBookWorkBtn",
	ID_BOOK_CREATOR_BTN	:"jsid-detailBookCreatorBtn",
	ID_WORK_CREATOR_BTN	:"jsid-detailWorkCreatorBtn",
	ID_THUMB_IMG		:"jsid-detailThumbImg",
	ID_LOGO				:"jsid-detailLogo",
	ID_TOP_BTN			:"jsid-detailTopBtn",
	ID_LOCATION			:"jsid-detailLocation",
	ID_IFRAME			:"jsid-detailIframe",
	ID_ALT_TEXT			:"jsid-detailAltText",
	
	CLS_LOADING		:"wcp-Functional-004",
	CLS_OPENELEM	:"openElem",
	CLS_ACCORD_HEAD	:"jscls-accordHead",
	CLS_ACCORD_ELEM	:"jscls-accordElem",
	CLS_ACTIVE_TAB	:"cur",
	CLS_FADER		:"fader",
	CLS_SET_ERROR	:"set-Error",
	
	IMG_ACTIVE_FADER	:"/externals/images/prt-fader-02.png",
	IMG_NORMAL_FADER	:"/externals/images/prt-fader-01.png",
	IMG_ICON_BOOK_PRE	:"/externals/images/icn-detail-book",
	IMG_ICON_WORK_PRE	:"/externals/images/icn-detail-work",
	IMG_ICON_CREATOR_PRE:"/externals/images/icn-detail-creator",
	
	HTML_TAB:"<a href='javascript:void(0);' onclick='DetailGlobal.main.removeTab(\"#{id}\")' class='closer'>"+
			"<img src='#{icon}' alt='' width='18' height='17' />"+
			"<img src='/externals/images/icn-close-01.png' alt='タブを閉じる' width='18' height='17' style='display:none;' /></a>"+
			"<a href='#{url}' class='pname' title='#{name}'>#{name}</a><span class='fader'>"+
			"<img src='#{image}' alt='' width='30' height='30' /></span>",
			
	HTML_BOOK_RESULT:"<li><h3><a href='#{url}' target='_self'>#{title}</a></h3><p>#{creator}#{publish}</p></li>",
	HTML_WIKIPEDIA_RESULT:'<li><a href="javascript:void(0);" onclick="DetailGlobal.main.wikipediaSearch(\'#{id}\')">#{title}</a><a href="#{url}" target="wiki"><img src="/externals/images/icn-window-01.gif" alt=" " width="8" height="10" class="indicator" /></a></li>',
	
	INFO_SEPARATOR	:/<div class=["']separater["']>[\s\n\r\t\f]*<hr(\s\/)?>[\s\n\r\t\f]*<\/div>/gi,
	
	DEFAULT_TAB_WIDTH		:126,
	DEFAULT_TAB_AREA_WIDTH	:758,
	MAX_TAB_NUM				:6,
	MAX_BOOK_NUM			:5,
	LIMIT_TAB_NUM			:30,
	BOOK_NUM				:5,
	KEYWORD_NUM				:0,
	WIKIPEDIA_NUM			:10,
	TAB_TITLE_BYTE			:12,
	MAX_TITLE_LEN			:60
}




var DetailGlobal = {
	main:null
}




var DetailMain = function(){
	//define properties
	this.id			= "";
	this.type		= "";
	this.tabArr		= new Array();
	this.title		= $("#"+DetailConfig.ID_TAB_TITLE).children("EM").text();
	this.myURL		= "";
	this.mainWin	= (window.opener) ? window.opener : null;
	this.tabArea	= document.getElementById(DetailConfig.ID_TAB_GROUP);
	this.leftBtn	= document.getElementById(DetailConfig.ID_LEFT_BTN);
	this.rightBtn	= document.getElementById(DetailConfig.ID_RIGHT_BTN);
	this.selectBox	= document.getElementById(DetailConfig.ID_SHELF_SELECT);
	this.shelfBtn	= document.getElementById(DetailConfig.ID_SHELF_BTN);
	this.bookArea	= document.getElementById(DetailConfig.ID_BOOK_RESULT_AREA);
	this.bookResult	= document.getElementById(DetailConfig.ID_BOOK_RESULT_LIST);
	this.wikiArea	= document.getElementById(DetailConfig.ID_WIKI_RESULT_AREA);
	this.wikiResult	= document.getElementById(DetailConfig.ID_WIKI_RESULT_LIST);
	this.moreBtn 	= document.getElementById(DetailConfig.ID_MORE_BTN);
	this.totalNum	= document.getElementById(DetailConfig.ID_TOTAL_NUM);
	this.thumbImg	= document.getElementById(DetailConfig.ID_THUMB_IMG);
	this.logoBtn	= document.getElementById(DetailConfig.ID_LOGO);
	this.topBtn		= document.getElementById(DetailConfig.ID_TOP_BTN);
	this.textArea	= document.getElementById(DetailConfig.ID_MAIN_TEXT);
	this.bookError	= getElementsByTagAndClass("div", DetailConfig.CLS_SET_ERROR, this.bookArea)[0];
	this.wikiError	= getElementsByTagAndClass("div", DetailConfig.CLS_SET_ERROR, this.wikiArea)[0];
	this.tabMoving	= false;
	this.searchText = "";
	
	var altArea = document.getElementById(DetailConfig.ID_ALT_TEXT);
	this.altText	= (altArea) ? altArea.innerHTML : "";
	
	var urlArr = location.href.split("/");
	urlArr.shift();
	urlArr.shift();
	urlArr.shift();
	this.myURL = "/" + urlArr.join("/");
	this.title = this.title.split("\"").join("").split(":").join("");
	
	this.tabArea.innerHTML = "";
	this.leftBtn.style.display = "none";
	this.rightBtn.style.display = "none";
	this.selectBox.parentNode.style.display = "none";
	
	this.tabPos = CookieManager.getTabPos();
	if(!this.tabPos) this.tabPos = 0;
	
	this._setIdAndType();
	this._setTabs();
	this._setListener();
	this.setSkin();
	
	$(this.bookResult).siblings("P").css({display:"none"});
	
	ShelfManager.loadAllShelfData();
	this._firstSearch();
}

DetailMain.prototype = {
	//page type and element's id
	_setIdAndType:function(){
		var id = document.body.id;
		var self = this;
		
		if(id.indexOf(DetailConfig.ID_BOOK_PRE) != -1){
			this.type = DetailPageType.BOOK;
			this.id = id.substring(DetailConfig.ID_BOOK_PRE.length, id.length);
		}
		else if(id.indexOf(DetailConfig.ID_WORK_PRE) != -1){
			this.type = DetailPageType.WORK;
			this.id = id.substring(DetailConfig.ID_WORK_PRE.length, id.length);
		}
		else if(id.indexOf(DetailConfig.ID_CREATOR_PRE) != -1){
			this.type = DetailPageType.CREATOR;
			this.id = id.substring(DetailConfig.ID_CREATOR_PRE.length, id.length);
		}
		
		//set buttons
		if(this.type == DetailPageType.WORK){
			var bookWorkBtn = document.getElementById(DetailConfig.ID_BOOK_WORK_BTN);
			if (bookWorkBtn) {
				$(bookWorkBtn).click(function(){
					self.bookWorkSearch(self.id);
				});
			}
		}
		else if(this.type == DetailPageType.CREATOR){
			var bookCreatorBtn = document.getElementById(DetailConfig.ID_BOOK_CREATOR_BTN);
			var workCreatorBtn = document.getElementById(DetailConfig.ID_WORK_CREATOR_BTN);
			if(bookCreatorBtn){
				$(bookCreatorBtn).click(function(){
					self.bookCreatorSearch(self.id);
				});
			}
			if(workCreatorBtn){
				$(workCreatorBtn).click(function(){
					self.workCreatorSearch(self.id);
				});
			}
		}
	},
	
	setSkin:function(){
		var index = CookieManager.getSkinId();
		if(!index) index = 0;
		
		var tcls = SkinClassArr[index];
		var cls = (GlobalValues.liquieFlg) ? tcls + " " + FixedValues.CLS_LIQUID : tcls;
		
		document.body.className = cls;
	},
	
	_firstSearch:function(){
		if(this.type == DetailPageType.BOOK){
			SearchManager.assocBookSearch(this.id, DetailConfig.BOOK_NUM, DetailConfig.KEYWORD_NUM, DetailConfig.WIKIPEDIA_NUM);
		}
		else{
			var titleText = document.getElementById(DetailConfig.ID_TAB_TITLE).innerHTML.replace("\n", "");
			var mainText = "";
			var elements = this.textArea.getElementsByTagName("P");
			var len = elements.length;
			for(var i = 0; i < len; i++){
				var elem = elements[i];
				if(elem.className == "p-A"){
					mainText += elem.innerHTML;
				}
			}
			
			mainText = mainText.replace(/\(青空文庫より\)/g, "");
			this.searchText = getTagRemovedString(titleText + "\n" + mainText.replace(/\n/g, ""));
			SearchManager.assocTextSearch(this.searchText);
		}	
	},
	
	_setListener:function(){
		var self = this;
		$(this.leftBtn).click(function(){
			self._moveTabs(self.tabPos - 1);
		});
		
		$(this.rightBtn).click(function(){
			var index = (self.currentIndex + 1) % self.tabArr.length;
			self._moveTabs(self.tabPos + 1);
		});
		
		$("."+DetailConfig.CLS_ACCORD_HEAD).click(function(){
			var head = this.getElementsByTagName("STRONG")[0];
			if($(this).next().css("display") == "none"){
				$(head).addClass(DetailConfig.CLS_OPENELEM);
				trace(this.id);
				if(this.id == DetailConfig.ID_LOCATION) self.openIframe();
			}else{
				$(head).removeClass(DetailConfig.CLS_OPENELEM);
			}
			
			$(this).next().slideToggle(500);
		});
		
		$(this.moreBtn).click(function(){
			self.moreSearch();
		});
		
		$(this.shelfBtn).click(function(){
			var index = self.selectBox.selectedIndex;
			if(index == 0) return;
			self.addToShelf(self.selectBox.options[index].value);
		});
		
		var opened = function(){
			self.mainWin.dtOpenTop();
		}
		if (this.logoBtn) {
			$(this.logoBtn).click(function(){
				self.openMainWin(opened);
			});
		}
		if (this.topBtn) {
			$(this.topBtn).click(function(){
				self.openMainWin(opened);
			});
		}
		
		Observer.addEventListener(GlobalEvent.ASSOC_SEARCHED, SearchManager, self.assocSearchedFunc, self);
		Observer.addEventListener(GlobalEvent.ERROR_SEARCH, SearchManager, self.errorSearchFunc, self);
		Observer.addEventListener(GlobalEvent.SHELF_LOADED, ShelfManager, self.shelvesLoadedFunc, self);
	},
	
	
	changeThumb:function(src, zoomsrc){
		this.thumbImg.src = src;
		this.thumbImg.parentNode.href = "javascript:DetailGlobal.main.openZoomImage('" + zoomsrc + "')";
	},
	
	
	openZoomImage:function(src){
		window.open(src, FixedValues.IMAGE_WINDOW, "width=700, height=700, menubar=no, toolbar=no, scrollbars=yes");
	},
	
	
	_setTabs:function(){
		var date = new Date();
		var thisYearDate = new Date(2010,1,1);
		var myHour = Math.floor(date.getTime() / (1000 * 60 * 60)) - Math.floor(thisYearDate.getTime() / (1000 * 60 * 60));
		var myTab = this.tabArea.innerHTML;
		var tabData = CookieManager.getTab();
		var cookieStr = "";
		var exists = false;
		var tabNum = 0;
		var myPos = 0;
		
		if(tabData){
			var tabDataArr = tabData.match(/"([^"]*)":"([^"]*)":"([^"]*)",*/g);
			var len = (tabDataArr) ? tabDataArr.length : 0;
			if(!tabDataArr) CookieManager.deleteTab();
			
			for(var i=0; i < len; i++){
				var dataArr = tabDataArr[i].match(/"([^"]*)":"([^"]*)":"([^"]*)",*/);
				var name = dataArr[1];
				var url = dataArr[2];
				var hour = dataArr[3];
				var active = false;
				var id = DetailConfig.ID_TAB_PRE + tabNum;
				
				if(myHour - hour > 24) continue;
				
				if(url == this.myURL){
					myPos = i;
					name = this.title;
					url = this.myURL;
					exists = true;
					active = true;
				}
				
				this.tabArr.push({name:name, url:url, id:id, hour:hour, active:active});
				tabNum ++;
			}
		}
		
		//if my info doesn't exist
		if(!exists){
			var id = DetailConfig.ID_TAB_PRE + tabNum;
			this.tabArr.unshift({name:this.title, url:this.myURL, id:id, hour:myHour, active:true});
		}
		
		//limit number of tabs
		while(this.tabArr.length > DetailConfig.LIMIT_TAB_NUM)
			this.tabArr.pop();
		
		//create tabs
		for(i = 0; i < this.tabArr.length; i++){
			var data = this.tabArr[i];
			this._createTab(data.id, data.name, data.url, data.active);
			cookieStr += '"' + substringByte(data.name, DetailConfig.TAB_TITLE_BYTE) +'":"' + data.url + '":"' + data.hour + '"';
		}
		
		//save data to cookie
		CookieManager.setTab(cookieStr);
		
		this._setTabsPos(myPos);
		
	},
	
	_createTab:function(id, name, url, active, pos){
		var type = url.split("/")[3];
		var icon;
		var self = this;
		switch(type){
			case "book":
				icon = DetailConfig.IMG_ICON_BOOK_PRE;
				break;
			case "work":
				icon = DetailConfig.IMG_ICON_WORK_PRE;
				break;
			case "creator":
				icon = DetailConfig.IMG_ICON_CREATOR_PRE;
				break;
			default:
				icon = DetailConfig.IMG_ICON_BOOK_PRE;
				break;
		}
		
		if(active) icon += "-01.png";
		else icon += "-02.png";
		
		var li = document.createElement("LI");
		var p = document.createElement("P");
		var image = (active) ? DetailConfig.IMG_ACTIVE_FADER : DetailConfig.IMG_NORMAL_FADER;
		var html = TemplateManager.setTemplate(DetailConfig.HTML_TAB,{name:name,url:url,id:id, image:image, icon:icon});
	
		li.id = id;
		if(active) li.className = DetailConfig.CLS_ACTIVE_TAB;
		p.innerHTML = html;
		li.appendChild(p);
		
		$(p).mouseover(function(){
			if(self.tabArr.length <= 1) return;
			var images = this.getElementsByTagName("A")[0].getElementsByTagName("IMG");
			images[0].style.display = "none";
			images[1].style.display = "";
			
		});
		$(p).mouseout(function(){
			var images = this.getElementsByTagName("A")[0].getElementsByTagName("IMG");
			images[0].style.display = "";
			images[1].style.display = "none";
		});
		
		//if pos was defined
		if(pos == 0 || pos){
			var lis = this.tabArea.getElementsByTagName("li");
			this.tabArea.insertBefore(li, lis[pos]);
		}else{
			this.tabArea.appendChild(li);
		}
	},
	
	_setTabsPos:function(myPos){
		if(this.tabPos > this.tabArr.length - 1){
			CookieManager.setTabPos(this.tabArr.length -1);
			this.tabPos = this.tabArr.length - 1;
		}
		
		if(this.tabPos > myPos || myPos > this.tabPos + DetailConfig.MAX_TAB_NUM - 1){
			CookieManager.setTabPos(myPos);
			this.tabPos = myPos;
		}
		
		var left =  -1 * this.tabPos * DetailConfig.DEFAULT_TAB_WIDTH;
		if(left > 0) left = 0;
		
		this.tabArea.style.marginLeft = left + "px";
		
		this._checkTabPosition();
	},
	
	_moveTabs:function(index){
		if(index == this.tabPos || this.tabMoving) return;
		
		CookieManager.setTabPos(index);
		this.tabPos = index;
		this.tabMoving = true;
		
		var self = this;
		var left =  -1 * this.tabPos * DetailConfig.DEFAULT_TAB_WIDTH;
		if(left > 0) left = 0;
		
		this._checkTabPosition();
		
		$(this.tabArea).animate({marginLeft:left + "px"}, 500, function(){ self.tabMoving = false; });
	},
	
	_checkTabPosition:function(){
		var left =  -1 * this.tabPos * DetailConfig.DEFAULT_TAB_WIDTH;
		var minLeft = DetailConfig.DEFAULT_TAB_AREA_WIDTH - this.tabArr.length * DetailConfig.DEFAULT_TAB_WIDTH;
		
		if(left > 0) left = 0;
		
		if(left < 0) this.leftBtn.style.display = "";
		else this.leftBtn.style.display = "none";
		
		if(left > minLeft) this.rightBtn.style.display = "";
		else this.rightBtn.style.display = "none";
	},
	
	//remove tab from cookie and html
	removeTab:function(id){
		if(this.tabArr.length <= 1) return;
		
		var target = $("#"+id)[0];
		var len = this.tabArr.length;
		var targIndex;
		var nextURL;
		var cookieStr = "";
		
		//delete tab element
		this.tabArea.removeChild(target);
		
		for(var i=0; i < this.tabArr.length; i++){
			var targInfo = this.tabArr[i];
			//trace(targInfo.id + " " + id + " " + targInfo.url + " " + this.myURL);
			if(targInfo.id == id){
				targIndex = i;
				
				//if you're about to delete this page
				if(targInfo.url == this.myURL){
					var nextIndex = (targIndex != 0) ? targIndex - 1 : targIndex + 1;
					nextURL = this.tabArr[nextIndex].url;
				}
				
				continue;
			}
			
			if(cookieStr != "") cookieStr += ",";
			cookieStr += '"' + this.tabArr[i].name + '":"' + this.tabArr[i].url + '":"' + this.tabArr[i].hour + '"';
		}
		
		//delete info from array
		this.tabArr.splice(targIndex,1);
		
		//save data to cookie
		CookieManager.setTab(cookieStr);
		
		if(nextURL){
			location.href = nextURL;
		}
		
		this._checkTabPosition();
	},
	
	
	//finish associative search
	assocSearchedFunc:function(){
		if(!SearchManager.resultObj) new Error("検索結果がありません");
		
		//remove loading
		var loading1 = $(this.bookResult).siblings("." + DetailConfig.CLS_LOADING)[0];
		var loading2 = $(this.wikiResult).siblings("." + DetailConfig.CLS_LOADING)[0];
		
		loading1.style.display = "none";
		loading2.style.display = "none";
		
		//set book results
		var results = SearchManager.resultObj.results;
		this._setBooks(results);
		
		//set wikipedia results
		var wikis = SearchManager.resultObj.wikipedia;
		this._setWikipedia(wikis);
		
		this.totalNum.innerHTML = SearchManager.resultObj.result_total;
	},
	
	errorSearchFunc:function(){
		var loading1 = $(this.bookResult).siblings("." + DetailConfig.CLS_LOADING)[0];
		var loading2 = $(this.wikiResult).siblings("." + DetailConfig.CLS_LOADING)[0];
		
		loading1.style.display = "none";
		loading2.style.display = "none";
		if(this.bookError) this.bookError.style.display = "";
		if(this.wikiError) this.wikiError.style.display = "";
	},
	
	_setBooks:function(results){
		if(!results || results.length == 0){
			if(this.bookError) this.bookError.style.display = "";
			return;
		}
		
		var len = results.length;
		var html = "";
		if(len > DetailConfig.BOOK_NUM) len = DetailConfig.BOOK_NUM;
		for(var i = 0; i < len; i++){
			var info = results[i];
			var creator = "";
			if(info.author && info.author != ""){
				creator = info.author + ",&nbsp;";
			}
			
			var publisher = "";
			var publisherLen = (info.publishers) ? info.publishers.length : 0;
			for(j = 0; j < publisherLen; j++){
				if(j!=0) publisher += ",";
				var name = info.publishers[j].name.split("").join(String.fromCharCode(8203));
				publisher += name;
			}
			
			var title = info.title.split("").join(String.fromCharCode(8203));
			html += TemplateManager.setTemplate(DetailConfig.HTML_BOOK_RESULT, {
												title	:getWrapText(title, DetailConfig.MAX_TITLE_LEN),
												url		:info.url,
												creator	:creator,
												publish	:publisher
												});
		}
		this.bookResult.innerHTML = html;
		
		$(this.bookResult).siblings("P").css({display:""});
	},
	
	_setWikipedia:function(wikis){
		if(!wikis || wikis.length == 0){
			if(this.wikiError) this.wikiError.style.display = "";
			return;
		}
		
		var wikiLen = wikis.length;
		var wikihtml = "";
		if(wikiLen > DetailConfig.WIKIPEDIA_NUM) wikiLen = DetailConfig.WIKIPEDIA_NUM;
		for(i = 0; i < wikiLen; i++){
			var info = wikis[i];
			wikihtml += TemplateManager.setTemplate(DetailConfig.HTML_WIKIPEDIA_RESULT, {url:info.url, title:info.title, id:info.id});
		}
		this.wikiResult.innerHTML = wikihtml;
	},
	
	//a function which is implemented when shelves are loaded
	shelvesLoadedFunc:function(){
		if(!ShelfManager.shelfData) new Error("書棚データがありません");
		
		this.selectBox.parentNode.style.display = "";
		var optionLen = this.selectBox.childNodes.length;
		for(var j = optionLen - 1; j > 0; j--){
			var option = this.selectBox.childNodes[j];
			this.selectBox.removeChild(option);
		}
		
		var shelves = ShelfManager.shelfData.shelves;
		var len = (shelves) ? shelves.length : 0;
		//var optionStr = "";
		
		var dOption = document.createElement("OPTION");
		dOption.innerHTML = FixedValues.DEFUALT_SELECT_MSG;
		this.selectBox.appendChild(dOption);
		
		for(var i = 0; i < len; i++){
			var shelf = shelves[i];
			var option = document.createElement("OPTION");
			option.value = shelf.id;
			option.innerHTML = shelf.name;
			
			this.selectBox.appendChild(option);
		}
	},
	
	wikipediaSearch:function(wikipediaId){
		var self = this;
		var mainopened = function(){
			self.mainWin.dtWikipediaSearch(wikipediaId);
		}
		
		this.openMainWin(mainopened);
	},
	
	moreSearch:function(){
		var self = this;
		var mainopened = function(){
			if(self.type == DetailPageType.BOOK) self.mainWin.dtAssocBookSearch(self.id, self.title);
			else self.mainWin.dtAssocTextSearch(self.searchText, self.title);
		}
		
		this.openMainWin(mainopened);
	},
	
	bookWorkSearch:function(workId){
		if(this.type != DetailPageType.WORK) return;
		
		var self = this;
		var mainopened = function(){
			self.mainWin.dtMatchBookWork(workId);
		}
		
		this.openMainWin(mainopened);
	},
	
	bookCreatorSearch:function(creatorId){
		if(this.type != DetailPageType.CREATOR) return;
		
		var self = this;
		var mainopened = function(){
			self.mainWin.dtMatchBookCreator(creatorId);
		}
		
		this.openMainWin(mainopened);
	},
	
	workCreatorSearch:function(creatorId){
		if(this.type != DetailPageType.CREATOR) return;
		
		var self = this;
		var mainopened = function(){
			self.mainWin.dtMatchWorkCreator(creatorId);
		}
		
		this.openMainWin(mainopened);
	},
	
	addToShelf:function(shelfId){
		if(!shelfId || shelfId == "") return;
		
		if(this.mainWin){
			try{
				this.mainWin.dtAddElement(shelfId, this.type, this.title, this.id);
			}catch(e){
				ShelfManager.addShelfElement(shelfId, this.type, this.title, this.id);
				this.makeNewMainWin();
			}
		}else{
			ShelfManager.addShelfElement(shelfId, this.type, this.title, this.id);
			this.makeNewMainWin();
		}
		
	},
	
	openMainWin:function(callBack){
		if(this.mainWin){
			trace(this.mainWin);
			try{
				if(callBack) callBack();
				window.blur();
				this.mainWin.focus();
			}catch(e){
				this.makeNewMainWin(callBack);
			}
		}else{
			this.makeNewMainWin(callBack);
		}
	},
	
	makeNewMainWin:function(callBack){
		trace("no window");
		var self = this;
		var id;
		this.mainWin = window.open("/", FixedValues.MAIN_WINDOW);
		window.blur();
		this.mainWin.focus();
		
		var searchingWin = function(){
			if(self.mainWin.readyFlg){
				clearInterval(id);
				if(callBack) callBack();
			}
		}
		
		if(callBack) id = setInterval(searchingWin, 100);
	},
	
	openIframe:function(){
		var iframe = document.getElementById(DetailConfig.ID_IFRAME);
		if(iframe.src != "") return;
		var src = "/webcatplus/library/"+ this.id + ".html";
		iframe.src = src;
	}
}


//first action
$(function(){
	DetailGlobal.main = new DetailMain();
	
});
