// JavaScript Document
var TopGlobal = {
	main:null
}

var readyFlg = false;

var TopConfig = {
	ID_RESULT_AREA	:"jsid-resultArea",
	ID_FIRST_AREA	:"jsid-firstArea",
	ID_FLASH_AREA	:"jsid-flashArea",
	ID_SKIN_AREA	:"jsid-skinArea",
	ID_ERROR_AREA	:"jsid-errorArea",
	ID_FOOTER_AREA	:"jsid-footerArea",
	ID_LIFT_AREA	:"jsid-liftArea",
	ID_INFO_AREA	:"jsid-infoArea",
	ID_IE6_ERROR	:"jsid-ie6Error",
	EXTERNAL_SHELF	:"external_shelf",
	
	ID_E_FLASH_AREA :"jsid-ExpandFlashArea",
	EXTERNAL_E_SHELF:"external_expand_shelf",
	
	CLS_LOADING		:"wcp-Functional-004",
	CLS_ERROR_CONT	:"set-Error",
	
	HTML_ALT_FLASH	:'<div class="set-DisFlash">'+
					'<div class="layer-DisFlash">'+
					'<p class="p-A"><img src="/externals/images/txt-noflash-01.gif" alt=" " width="370" height="29" /></p>'+
					'<p class="p-B"><a href="http://get.adobe.com/jp/flashplayer/" target="_blank"><img src="/externals/images/btn-adobe-01.gif" alt=" " width="158" height="39" /></a></p>'+
					'</div>'+
					'</div>',

    HTML_ALT_IPAD       :[
        '<div class="set-DisFlash">',
        ' <div class="layer-DisFlash iPad">',
        '  <img src="/externals/images/img-ipad-login.png" height="148"/>',
        ' </div>',
        '</div>'
    ].join(''),

    HTML_ALT_IPAD_MEMBER       :[
        '<div class="set-DisFlash">',
        ' <div class="layer-DisFlash iPad">',
        '  <img src="/externals/images/img-ipad-loggedin.png" height="148"/>',
        ' </div>',
        '</div>'
    ].join('')
};


/**************************
* called from flash
**************************/

function flChangeShelfData(data){
	TopGlobal.main.changedShelfData(data);
	
	try{
		GlobalValues.detailWindow.tpUpdateShelves();
	}catch(e){
		
	}
}

function flAssocShelfSearch(shelfId){
	//SearchManager.assocShelfSearch(shelfId);
	HistoryManager.setURL(SearchManager, SearchManager.assocShelfSearch, shelfId);
}

function flViewAllShelves(){
	//trace("view all");
	if(GlobalValues.pageStatus != PageStatus.SHELVES) TopGlobal.main.viewAllShelves();
}

function flHideAllShelves(){
	if(GlobalValues.pageStatus == PageStatus.SHELVES) TopGlobal.main.hideAllShelves();
}

function flSetSavedId(savedId){
	//trace("set saved id from flash :"+savedId);
	CookieManager.setShelfSavedId(savedId);
}

function flDeleteSavedId(){
	//trace("delete saved id from flash");
	CookieManager.deleteShelSavedId();
}

function flEndDragElement(){
	TopGlobal.main.endDragElement();
}

function flScroll(y){
	var eShelfArea = document.getElementById(TopConfig.ID_E_FLASH_AREA);
	var eShelfOffset =$(eShelfArea).offset();
	var scrollArea = 0.2;
	var docHeight = $(window).height();
	var currentScroll = $('html').scrollTop();
	if(currentScroll == 0) currentScroll = $('body').scrollTop();
	var top = docHeight * scrollArea - eShelfOffset.top + currentScroll;
	var bottom = docHeight - docHeight * scrollArea - eShelfOffset.top + currentScroll;
	
	if(y < top){
		$('html, body').scrollTop(currentScroll - 10);
	}
	else if(y > bottom){
		$('html, body').scrollTop(currentScroll + 10);
	}
}


/**************************
* called from detail page
**************************/

function dtAssocBookSearch(bookId, title){
	trace(bookId);
	TopGlobal.main.detailTitle = title;
	HistoryManager.setURL(SearchManager, SearchManager.assocBookSearch, bookId);
}

function dtAssocTextSearch(text, title){
	TopGlobal.main.detailTitle = title;
	HistoryManager.setURL(SearchManager, SearchManager.assocDetailSearch, text);
}

function dtWikipediaSearch(wikipediaId){
	trace("wikipedia :"+wikipediaId);
	HistoryManager.setURL(SearchManager, SearchManager.assocWikiSearch, wikipediaId);
}

function dtMatchBookWork(workId){
	HistoryManager.setURL(SearchManager, SearchManager.matchBookWorksSearch, workId);
}

function dtMatchWorkCreator(creatorId){
	HistoryManager.setURL(SearchManager, SearchManager.matchWorksCreatorSearch, creatorId);
}

function dtMatchBookCreator(creatorId){
	HistoryManager.setURL(SearchManager, SearchManager.matchBookCreatorSearch, creatorId);
}

/*
function dtMatchBook(title, author){
	if(!title) title = "";
	if(!author) author = "";
	var details = new Array(title, author);
	//SearchManager.matchBookKeywordSearch("", details, 0);
	HistoryManager.setURL(SearchManager, SearchManager.matchBookKeywordSearch, "", details, 0);
	//TopGlobal.main.setMatchConditionValue(SearchMode.MATCH_BOOK, new Array(title, "",author));
}

function dtMatchWork(title, author){
	if(!title) title = "";
	if(!author) author = "";
	var details = new Array(title, author);
	//SearchManager.matchWorksKeywordSearch("", details, 0);
	HistoryManager.setURL(SearchManager, SearchManager.matchWorksKeywordSearch, "", details, 0);
	//TopGlobal.main.setMatchConditionValue(SearchMode.MATCH_WORK, new Array(title, author));
}
*/

function dtAddElement(shelfId, type, title, elemId){
	var swf;
	
	if(GlobalValues.searchMode == SearchMode.SHELF){
		swf = getSwfElement(TopConfig.EXTERNAL_E_SHELF);
		swf.addElement(shelfId, type, title, elemId);
		trace(swf);
	}
	else{
		swf = getSwfElement(TopConfig.EXTERNAL_SHELF);
		swf.addElement(shelfId, type, title, elemId);
	}
}


function dtOpenTop(){
	
}




/**************************
* called from result
**************************/

function rtAssocWikipedia(id){
	HistoryManager.setURL(SearchManager, SearchManager.assocWikiSearch, id);
}




/**************************
* called from search
**************************/

function shClearShelfSWF(){
	TopGlobal.main.clearShelfSWF();
}

function shLoadShelfSWF(){
	TopGlobal.main.loadShelfSWF(true);
}




var TopMain = function(){
	this.firstArea	= document.getElementById(TopConfig.ID_FIRST_AREA);
	this.resultArea	= document.getElementById(TopConfig.ID_RESULT_AREA);
	this.flashArea	= document.getElementById(TopConfig.ID_FLASH_AREA);
	this.skinArea	= document.getElementById(TopConfig.ID_SKIN_AREA);
	this.errorArea	= document.getElementById(TopConfig.ID_ERROR_AREA);
	this.footerArea	= document.getElementById(TopConfig.ID_FOOTER_AREA);
	this.liftArea	= document.getElementById(TopConfig.ID_LIFT_AREA);
	this.infoArea	= document.getElementById(TopConfig.ID_INFO_AREA);
	this.skinBtns	= this.skinArea.getElementsByTagName("LI");
	this.topPageBtn	= this.footerArea.getElementsByTagName("LI")[0];
	
	this.currentArea = this.firstArea;
	
	this.searchCondition	= new SearchCondition();
	this.mainResult			= new MainResult();
	this.keywordResult		= new KeywordResult();
	this.wikipediaResult	= new WikipediaResult();
	this.drilldownResult 	= new DrilldownResult();
	this.searchContent		= new SearchContent();
	this.allShelves			= new AllShelves();
	this.draggingElement	= null;
	this.flashOverFlg		= false;
	this.prevPageStatus		= "";
	this.dragId;
	this.dragTarget;
	this.detailTitle;
    var ua = window.navigator.userAgent;

    //this.isIPad = /iPad/.test(ua);
    this.isIPad = false;

	this.resultArea.style.display = "none";
	this.liftArea.style.display = "none";
	
	this._setListener();
	this._setSkin();
	this._searchByParams();
	this._checkIE6();
	//this._setSwf();
	
	 $('html, body').scrollTop(0);

    if (this.isIPad) {
        var self = this;
        $(function () {
            setTimeout(function () {
	            self.loadShelfSWF();
            }, 1);
        });
    } else {
        ShelfManager.loadAllShelfData();
    }
	InfoManager.loadInfo();
}

TopMain.prototype = {
	_setListener:function(){
		var self = this;
		Observer.addEventListener(GlobalEvent.SHELF_LOADED, ShelfManager, self.loadedShelfData, self);
		Observer.addEventListener(GlobalEvent.SHELF_LOAD_ERROR, ShelfManager, self.loadErrorShelfData, self);
		Observer.addEventListener(GlobalEvent.ASSOC_SEARCH, SearchManager, self.assocSearchFunc, self);
		Observer.addEventListener(GlobalEvent.MATCH_SEARCH, SearchManager, self.matchSearchFunc, self);
		Observer.addEventListener(GlobalEvent.ASSOC_SEARCHED, SearchManager, self.assocSearchedFunc, self);
		Observer.addEventListener(GlobalEvent.MATCH_SEARCHED, SearchManager, self.matchSearchedFunc, self);
		Observer.addEventListener(GlobalEvent.ASSOC_MORE_SEARCHED, SearchManager, self.assocMoreSearchedFunc, self);
		Observer.addEventListener(GlobalEvent.MATCH_MORE_SEARCHED, SearchManager, self.matchMoreSearchedFunc, self);
		Observer.addEventListener(GlobalEvent.ERROR_SEARCH, SearchManager, self.errorSearchFunc, self);
		Observer.addEventListener(GlobalEvent.INFO_LOADED, InfoManager, self.loadedInfo, self);
		Observer.addEventListener(GlobalEvent.INFO_ERROR, InfoManager, self.errorInfo, self);
		
		//set skin button listener
		var len = this.skinBtns.length;
		for(var i = 0; i < len; i++){
			var btn = this.skinBtns[i];
			btn.index = i;
			btn.firstChild.onclick = function(){
				self._changeSkin(this.parentNode.index);
			}
		}
	},
	
	_checkIE6:function(){
		if(!isIE6()) return;
		
		var ie6Error = document.getElementById(TopConfig.ID_IE6_ERROR);
		ie6Error.style.display = "";
		this.searchCondition.setIE6();
	},
	
	_searchByParams:function(){
		var params = getParamObject();
		if(!params || !params.type) return;
		var detailArr, text;
		var searchable = false;
		switch(params.type){
			case ParamType.ASSOC:
			 	if(!params.text) return;
				GlobalValues.todayPlayFlg = false;
				HistoryManager.setURL(SearchManager, SearchManager.assocTextSearch, params.text);
				break;
			case ParamType.MATCH_BOOK:
				detailArr = new Array(SearchManagerConfig.MATCH_DETAIL_BOOK_NUM);
				text = (params.text) ? params.text : "";
				if(params.title) detailArr[0] = params.title;
				if(params.author) detailArr[1] = params.author;
				if(params.isbn) detailArr[2] = params.isbn;
				if(params.publisher) detailArr[3] = params.publisher;
				
				var len = detailArr.length;
				for(var i = 0; i < len; i++){
					if(detailArr[i]){
						searchable = true;
						break;
					}
				}
				if(!searchable && text == "") return;
				
				HistoryManager.setURL(SearchManager, SearchManager.matchBookKeywordSearch, text, detailArr);
				break;
			case ParamType.MATCH_WORKS:
				detailArr = new Array(SearchManagerConfig.MATCH_DETAIL_WORK_NUM);
				text = (params.text) ? params.text : "";
				if(params.title) detailArr[0] = params.title;
				if(params.author) detailArr[1] = params.author;
				
				var len = detailArr.length;
				for(var i = 0; i < len; i++){
					if(detailArr[i]){
						searchable = true;
						break;
					}
				}
				if(!searchable && text == "") return;
				
				HistoryManager.setURL(SearchManager, SearchManager.matchWorksKeywordSearch, text, detailArr);
				break;
			case ParamType.MATCH_PERSON:
			 	if(!params.text) return;
				HistoryManager.setURL(SearchManager, SearchManager.matchCreatorKeywordSearch, params.text);
				break;
		}
	},
	
	_setSkin:function(){
		var index = CookieManager.getSkinId();
		if(!index) index = 0;
		
		this._changeSkin(index);
		/*GlobalValues.currentSkinIndex = index;
		
		var tcls = SkinClassArr[index];
		$(document.body).addClass(tcls);
		
		this.skinBtns[index].className = "cur";
		*/
	},
	
	_changeSkin:function(index){
		trace(index);
		var prev = GlobalValues.currentSkinIndex;
		var prevClass = SkinClassArr[prev];
		this.skinBtns[prev].className = "";
		$(document.body).removeClass(prevClass);
		
		GlobalValues.currentSkinIndex = index;
		var tcls = SkinClassArr[index];
		this.skinBtns[index].className = "cur";
		$(document.body).addClass(tcls);
		
		CookieManager.setSkinId(index); 
		
		//change the skin of detail page
		if(GlobalValues.detailWindow){
			try{
				GlobalValues.detailWindow.tpChangeSkin();
			}catch(e){
				
			}
		}
	},
	
	loadedInfo:function(){
		Observer.removeEventListener(GlobalEvent.INFO_LOADED, InfoManager, self.loadedInfo, self);
		Observer.removeEventListener(GlobalEvent.INFO_ERROR, InfoManager, self.errorInfo, self);
		
		var table = document.createElement("TABLE");
		var tbody = document.createElement("TBODY");
		table.cellSpacing = 0;
		
		var len = InfoManager.infoData.length;
		for(var i = 0; i < len; i++){
			var data = InfoManager.infoData[i];
			var tr = document.createElement("TR");
			var dateTh = document.createElement("TH");
			var contentTd = document.createElement("TD");
			dateTh.innerHTML = "<strong>" + data.date + "</strong>";
			contentTd.innerHTML = data.content;
			
			tr.appendChild(dateTh);
			tr.appendChild(contentTd);
			tbody.appendChild(tr);
		}
		
		table.appendChild(tbody);
		this.infoArea.appendChild(table);
	},
	
	errorInfo:function(){
		Observer.removeEventListener(GlobalEvent.INFO_LOADED, InfoManager, self.loadedInfo, self);
		Observer.removeEventListener(GlobalEvent.INFO_ERROR, InfoManager, self.errorInfo, self);
		
		this.infoArea.parentNode.style.display = "none";
	},
	
	loadedShelfData:function(){
		var self = this;
		readyFlg = true;
		trace("LOADED SHELFDATA!!!");
		Observer.removeEventListener(GlobalEvent.SHELF_LOADED, ShelfManager, self.loadedShelfData, self);
		Observer.removeEventListener(GlobalEvent.SHELF_LOAD_ERROR, ShelfManager, self.loadErrorShelfData, self);
		
		this.loadShelfSWF(true);
	},
	
	loadErrorShelfData:function(){
		var self = this;
		readyFlg = true;
		trace("ERROR SHELFDATA!!!");
		Observer.removeEventListener(GlobalEvent.SHELF_LOADED, ShelfManager, self.loadedShelfData, self);
		Observer.removeEventListener(GlobalEvent.SHELF_LOAD_ERROR, ShelfManager, self.loadErrorShelfData, self);
		
		this.loadShelfSWF(false);
	},
	
	loadShelfSWF:function(idFlg){
		var so = new SWFObject("/externals/flash/swf/shelf.swf", "external_shelf", "100%", "218", "10");
		
		if(so.installedVer.major >= 10){
			so.addParam('allowScriptAccess', 'always');
			if (idFlg) {
                var s = CookieManager.getShelfSavedId().replace(/%/g, '%25');
                so.addVariable('saved_id', s);
                so.addVariable('is_member', CookieManager.isMember());
            }
			so.write(TopConfig.ID_FLASH_AREA);
		} else {
            var html;
            var iPadImageTapHandler;
            if (this.isIPad) {
                if (CookieManager.isMember()) {
                    html = TopConfig.HTML_ALT_IPAD_MEMBER;
                    iPadImageTapHandler =  TopGlobal.main.gotoIPadShelfPage;
                } else {
                    html = TopConfig.HTML_ALT_IPAD;
                    iPadImageTapHandler = TopGlobal.main.openLoginPage;
                }
            } else {
                html = TopConfig.HTML_ALT_FLASH;
            }

			this.flashArea.innerHTML  = html;

            if (this.isIPad) {
                $('.layer-DisFlash img').click(iPadImageTapHandler);
            }
	    }
	},
	
	clearShelfSWF:function(){
		//clear shelf
		while(this.flashArea.childNodes.length > 0){
			this.flashArea.removeChild(this.flashArea.lastChild);
		}
	},
	
	changedShelfData:function(data){
		trace(data);
		ShelfManager.shelfData = data;
		this.mainResult.changedShelfData();
		this.searchContent.resetPopupSelect();
	},
	
	viewAllShelves:function(){
		this.prevPageStatus = GlobalValues.pageStatus;
		
		this._changeArea(PageStatus.SHELVES);
	},
	
	hideAllShelves:function(){
		this.allShelves.close();
		
		var swf = getSwfElement(TopConfig.EXTERNAL_SHELF);
		swf.switchAllBtn(true);
		
		this.currentArea.style.display = "";
		GlobalValues.pageStatus = this.prevPageStatus;
	},
	
	assocSearchFunc:function(){
		scrollToTop();
		this._changeArea(PageStatus.SEARCH);
		this.searchCondition.changeSearchMode(SearchMode.ASSOC);
		
		this.drilldownResult.close();
		this.mainResult.close();
		this.keywordResult.open();
		this.wikipediaResult.open();
		
		this.mainResult.clearResults();
		//this.mainResult.calcResultNum();
		this.keywordResult.clearResults();
		this.wikipediaResult.clearResults();
		this.searchContent.clearContent();
		this.searchContent.clearKeywords();
	},
	
	assocSearchedFunc:function(){
		var data = SearchManager.resultObj;
		var len = (!data || !data.results || !data.result_total) ? 0 : data.result_total;
		this.mainResult.open();
		this.keywordResult.setResults(data.keywords);
		this.wikipediaResult.setResults(data.wikipedia);
		
		//if the search came from a detail page, set detail title to the content.
		var cont = (this.detailTitle) ? this.detailTitle : data.content;
		this.searchContent.setContent(cont, data.result_total);
		this.searchContent.setKeywords();
		this.searchCondition.setAssocText(SearchManager.conditionObj.text);
		this.detailTitle = null;
		
		if(len != 0){
			this.mainResult.setAssocResults(data.results, data.result_total);
		}
		else{
			this.mainResult.setErrorResults(data.content);
		}
		
		this._setDraggableElements();
	},
	
	assocMoreSearchedFunc:function(){
		this.mainResult.setMoreResults(SearchManager.moreResultObj);
		
		this._setDraggableElements();
	},
	
	matchSearchFunc:function(){
		scrollToTop();
		this._changeArea(PageStatus.SEARCH);
		
		this.searchCondition.changeSearchMode(SearchMode.MATCH);
		this.resultArea.style.display = "";
		
		this.drilldownResult.open();
		this.mainResult.close();
		this.keywordResult.close();
		this.wikipediaResult.close();
		this.searchContent.clearKeywords();
		
		this.mainResult.clearResults();
		//this.mainResult.calcResultNum();
		this.drilldownResult.clearResults();
		this.searchContent.clearContent();
	},
	
	matchSearchedFunc:function(){
		trace("SET MATCHED................................................");
		var data = SearchManager.resultObj;
		this.drilldownResult.setResults(data.drilldowns);
		this.searchContent.setContent(data.content, data.result_total);
		this.searchCondition.setMatchCondValue(GlobalValues.resultType, SearchManager.matchDetailArr, SearchManager.conditionObj.keyword, SearchManager.order);
	
		this.mainResult.open();
		if(data.results && data.results.length != 0 && data.result_total != 0){
			this.mainResult.setMatchResults(data.results, data.result_total);
		}
		else{
			this.mainResult.setErrorResults(data.content);
		}
		
		this._setDraggableElements();
	},
	
	matchMoreSearchedFunc:function(){
		this.mainResult.setMoreResults(SearchManager.moreResultObj);
		
		this._setDraggableElements();
	},
	
	
	errorSearchFunc:function(){
		var cont = getElementsByTagAndClass("p", TopConfig.CLS_ERROR_CONT, this.errorArea)[0];
		cont.innerHTML = "<span>" + SearchManager.errorMessage + "</span>";
		this._changeArea(PageStatus.ERROR);
		
	},
	
	
	setMatchConditionValue:function(type, arr){
		this.searchCondition.setMatchCondValue(type,arr);
	},
	
	
	openTopPage:function(){
		var self = this;
		HistoryManager.setTop();
	},
	
	
	_changeArea:function(name){
		if(GlobalValues.pageStatus == PageStatus.SHELVES){
			this.allShelves	.close();
			var swf = getSwfElement(TopConfig.EXTERNAL_SHELF);
			swf.switchAllBtn(true);
		}
		
		GlobalValues.pageStatus = name;
		this.currentArea.style.display = "none";
		
		switch(name){
			case PageStatus.SEARCH:
				this.currentArea = this.resultArea;
				this.currentArea.style.display = "";
				this.topPageBtn.style.display = "";
				this.liftArea.style.display = "";
				break;
			case PageStatus.FIRST:
				this.currentArea = this.firstArea;
				this.currentArea.style.display = "";
				this.topPageBtn.style.display = "none";
				this.liftArea.style.display = "none";
				this.searchCondition.changeSearchMode(SearchMode.ASSOC);
				break;
			case PageStatus.SHELVES:
				this.allShelves.open();
				this.topPageBtn.style.display = "";
				this.liftArea.style.display = "";
				break;
			case PageStatus.ERROR:
				this.currentArea = this.errorArea;
				this.currentArea.style.display = "";
				this.topPageBtn.style.display = "";
				this.liftArea.style.display = "";
				break;
		}
	},
	
	
	_setDraggableElements:function(){
		var self = this;
		
		$("."+FixedValues.CLS_DRAGGABLE_BOOK).mousedown(this.startDragElement);
		$("."+FixedValues.CLS_DRAGGABLE_BOOK).mouseup(this.endDragElement);
		
		$("."+FixedValues.CLS_DRAGGABLE_WORKS).mousedown(this.startDragElement);
		$("."+FixedValues.CLS_DRAGGABLE_WORKS).mouseup(this.endDragElement);
		
		$("."+FixedValues.CLS_DRAGGABLE_PERSON).mousedown(this.startDragElement);
		$("."+FixedValues.CLS_DRAGGABLE_PERSON).mouseup(this.endDragElement);
		
		$("."+FixedValues.CLS_DRAGGABLE_WIKIPEDIA).mousedown(this.startDragElement);
		$("."+FixedValues.CLS_DRAGGABLE_WIKIPEDIA).mouseup(this.endDragElement);
		
		$("."+FixedValues.CLS_DRAGGABLE_INC_KEYWORD).mousedown(this.startDragElement);
		$("."+FixedValues.CLS_DRAGGABLE_INC_KEYWORD).mouseup(this.endDragElement);
		
		$("."+FixedValues.CLS_DRAGGABLE_EXC_KEYWORD).mousedown(this.startDragElement);
		$("."+FixedValues.CLS_DRAGGABLE_EXC_KEYWORD).mouseup(this.endDragElement);
	},
	
	startDragElement:function(e){
		var self = TopGlobal.main;
		var isMainResult = (this.className.indexOf(FixedValues.CLS_DRAGGABLE_BOOK) != -1 || this.className.indexOf(FixedValues.CLS_DRAGGABLE_WORKS) != -1 || this.className.indexOf(FixedValues.CLS_DRAGGABLE_PERSON) != -1);
		//if target is book, works or person, check the target.
		if(isMainResult){
			if(e.target.className != "set-Colorz"){
				//e.preventDefault();
				return;
			}
		}
		
		self.dragTarget = this;
		GlobalValues.draggingFlg = false;
		
		if(self.draggingElement){
			var isMainResult = (self.dragTarget.tagName.match(/td/i));
			if(isMainResult) self.draggingElement.parentNode.parentNode.removeChild(self.draggingElement.parentNode);
			else self.draggingElement.parentNode.removeChild(self.draggingElement);
			self.draggingElement = null;
		}
		
		$(document).mousemove(self.doDragElement);
		
		e.preventDefault();
		e.stopPropagation();
	},
	
	doDragElement:function(e){
		//trace("dodrag");
		var self = TopGlobal.main;
		if(!e) e = window.event;
		
		//first movement
		if(!GlobalValues.draggingFlg){
			$(document).unbind("mousemove");
			
			var isMainResult = (self.dragTarget.tagName.match(/td/i));
			if(isMainResult){
				self.draggingElement = document.createElement("table");
				var tbody = document.createElement("tbody");
				var tr = document.createElement("tr");
				var td = document.createElement(self.dragTarget.tagName);
				
				td.innerHTML = self.dragTarget.innerHTML;
				self.draggingElement.className = "table-A";
				
				self.draggingElement.appendChild(tbody);
				tbody.appendChild(tr);
				tr.appendChild(td);
				
				var elementsTable = document.getElementById("jsid-resultMainList").getElementsByTagName("table")[0];
				elementsTable.parentNode.appendChild(self.draggingElement);
			}
			else{
				self.draggingElement = document.createElement(self.dragTarget.tagName);
				self.draggingElement.innerHTML = self.dragTarget.innerHTML;
				self.dragTarget.parentNode.appendChild(self.draggingElement);
				self.draggingElement.className = "set-Grabbed";
			}
			self.draggingElement.style.position = "absolute";
			self.draggingElement.style.zIndex = FixedValues.ZINDEX_DRAGELEM;
			self.draggingElement.style.left = e.pageX - 10 + "px";
			self.draggingElement.style.top = e.pageY - 10 + "px";
			self.draggingElement.style.width = $(self.dragTarget).width() + "px";
			self.draggingElement.style.background = "#fff";
			if(!isMainResult) self.draggingElement.style.border = "1px solid #ccc";
			$(self.draggingElement).css({opacity:0.8});	
			$(self.dragTarget).trigger("mouseout");
			
			if(document.addEventListener){
				document.addEventListener("mousemove", self.doDragElement, true);
				document.addEventListener("mouseup", self.endDragElement, true);
			}
			else if(document.attachEvent){
				self.draggingElement.setCapture();
				self.draggingElement.attachEvent("onmousemove", self.doDragElement);
				self.draggingElement.attachEvent("onmouseup", self.endDragElement);
				self.draggingElement.attachEvent("onlosecapture", self.endDragElement);
			}
			var info = getElementInfo(self.dragTarget);
			var swf = getSwfElement(TopConfig.EXTERNAL_SHELF);
			swf.prepareAddElement(info.type);
		}
		
		GlobalValues.draggingFlg = true;
		
		if(isIE()){
			e.returnValue = false;
			e.cancelBubble = true;
		}else{
			e.preventDefault();
			e.stopPropagation();
		}
		
		//set dragging element's coordinates
		var self = TopGlobal.main;
		var x,y, posX, posY;
		var scrollTop = ($('html').scrollTop() != 0) ? $('html').scrollTop() : $('body').scrollTop();
		var scrollLeft = ($('html').scrollLeft() != 0) ? $('html').scrollLeft() : $('body').scrollLeft();
		x = e.clientX;
		y = e.clientY;
		posX = x + scrollLeft;
		posY = y + scrollTop;
		self.draggingElement.style.left = posX - 10 + "px";
		self.draggingElement.style.top = posY - 10 + "px";
		
		//check flash area
		var width = $(self.flashArea).width();
		var height = $(self.flashArea).height();
		var offset = $(self.flashArea).offset();
		var xFlg = (offset.left < posX && posX < offset.left + width);
		var yFlg = (offset.top < posY && posY < offset.top + height);
		var swf = getSwfElement(TopConfig.EXTERNAL_SHELF);
		
		if(xFlg && yFlg && !self.flashOverFlg){
			//trace("FLASH OVER!!!");
			self.flashOverFlg = true;
			self.draggingElement.style.display = "none";
			
			var info = getElementInfo(self.dragTarget);
			swf.startAddElement(info.type, info.title, info.id);
		}
		else if((!xFlg || !yFlg) && self.flashOverFlg){
			//trace("FLASH OUT!!!");
			self.flashOverFlg = false;
			self.draggingElement.style.display = "";
			
			var swf = getSwfElement(TopConfig.EXTERNAL_SHELF);
			swf.cancelAddElement();
		}
			
		if(!self.flashOverFlg){
			self.draggingElement.style.left = posX - 10 + "px";
			self.draggingElement.style.top = posY - 10 + "px";
		}else{
			swf.dragAddElement(posX - offset.left, posY - offset.top);
		}
	},
	
	endDragElement:function(e){
		if(!e) e = window.event;
		var self = TopGlobal.main;
		
		GlobalValues.draggingFlg= false;
		
		$(document).unbind("mousemove");
		if(document.addEventListener){
			document.removeEventListener("mousemove", self.doDragElement, true);
			document.removeEventListener("mouseup", self.endDragElement, true);
		}
		else if(document.attachEvent && self.draggingElement){
			self.draggingElement.detachEvent("onmousemove", self.doDragElement);
			self.draggingElement.detachEvent("mouseup", self.endDragElement);
			self.draggingElement.detachEvent("onlosecapture", self.endDragElement);
			self.draggingElement.releaseCapture();
		}
		
		var swf = getSwfElement(TopConfig.EXTERNAL_SHELF);
		swf.endAddElement(self.flashOverFlg);
		
		if(self.draggingElement){
			//var isMainResult = (self.dragTarget.tagName.match(/td/i));
			//if(isMainResult) self.draggingElement.parentNode.parentNode.removeChild(self.draggingElement.parentNode);
			self.draggingElement.parentNode.removeChild(self.draggingElement);
			self.draggingElement = null;
		}
	},


    openLoginPage: function () {
        linkToSupport('/webcatplus/signin.html');
    },

    gotoIPadShelfPage: function () {
        var domain = (function getDomain(url) {
            var tempArray = url.split('//');
            var protocol = tempArray[0] + '//';
            var domain = tempArray[1].split('/')[0];
            return protocol + domain;
        }(window.location.href));

        var url = domain + '/ipad/';
        window.location.href = url;
    }
}



// first action
$(function(){
	TopGlobal.main = new TopMain();
	
	uaRO('rollover');
	ResizeManager.init();
	HistoryManager.init();
	HistoryManager.initTop(TopGlobal.main, TopGlobal.main._changeArea, PageStatus.FIRST);

    if (CookieManager.isMember()) {
        var welcomeText = $.cookie('nickname') + 'さん';
        $('.set-HelloTxt').text(welcomeText);
        $('.set-Login').hide();
        $('.set-Logout').show();
    }

    // iPadで書棚タブを押したときの動作
    if (TopGlobal.main.isIPad) {
        $('#jsid-searchShelfsBtn *').click(function (e) {
            if (!CookieManager.isMember()) {
	            TopGlobal.main.openLoginPage();
            } else {
                TopGlobal.main.gotoIPadShelfPage();
            }

            return false;
        });
    }
	
	try{
        if (window.opener && window.opener.tpIsDetailPage) {
		    window.opener.tpIsDetailPage();
		    GlobalValues.detailWindow = window.opener;
        }
	}catch(e){
		
	}
	
});
