/**
    this code created by nayun.
    modify (for lineage1) by nahyerim (09.10.31)
    small & simple.
    birthday : 09.05.15
   (c) 2009 ncsoft Web Development Team
*/

//var wherePrefix = encodeURIComponent("l2web^");
var wherePrefix = "l1web^";
var search_link = "";
if (location.href.indexOf('/rc.') == -1) {
	search_link = "http://search.plaync.co.kr/lineage/index.jsp"
}else{
	search_link = "http://rc.search.plaync.co.kr/lineage/index.jsp"
}

var SearchParameter = {
	 where : {
		  tsearch :			wherePrefix+"tsearch"
		, item : 			"serverzone_item"
		, powerbook :  		wherePrefix+"powerbook"
		, ksinchant : 	 	wherePrefix+"ksinchant"
		, character :  		"serverzone_characater"
		, alliance : 		"serverzone_alliance"
	}
	, site : "lineage1"
	, pos : {
		  main : 			"main"
		, popkwd : 			"popkwd"
		, promotionkwd : 	"promotionkwd"
		, livekwd : 		"livekwd"
		, lnb 	: 			"lnb"
	}
	, type : {
		  plaync : 		"plaync"
		, serverzone : 	"serverzone"
	}
	, url : search_link
	, promotionKeyword : null
}

var SearchQuery = {
	  query : 	null
	, where : 	SearchParameter.where.tsearch
	, site : 		SearchParameter.site
	, pos : 		null
	, type : SearchParameter.type.plaync
}

var BasicSearch = {
	request : function () {
		if ( SearchQuery.pos == SearchParameter.pos.main ) {
			var searchKeywork = document.getElementById('powerSearchKeyword_' + SearchQuery.type);

			if ( searchKeywork.value.trim().length == 0) {
				alert("검색어를 입력해 주세요.");
				searchKeywork.focus();
				return ;
			}

			if ( SearchParameter.promotionKeyword != null && (SearchParameter.promotionKeyword.view_content ==  searchKeywork.value) ) {
				var promotionHrefJson = SearchParameter.promotionKeyword.href.toQueryParams();

				for (var p in promotionHrefJson) {
						SearchQuery[p] = promotionHrefJson[p];
				}
				SearchQuery.pos = SearchParameter.pos.promotionkwd;
			}
		}

		if(SearchQuery.pos == SearchParameter.pos.promotionkwd && SearchParameter.promotionKeyword.target == 'popup' ){
			window.open(SearchParameter.promotionKeyword.href);
		}else{
			location.href = SearchParameter.url +"?"+ $H(SearchQuery).toQueryString();
		}
	}
	//, validator : function () {
		// if you need validator, you can create code.
	//}
}

var MainSearch = {};
Object.extend(MainSearch, BasicSearch);
Object.extend(MainSearch, {
	searchHash : new Hash({
		tsearch : 			{name : "tsearch",		searchName : "전체",			pos : "main",	where : "l1web^tsearch",			formBoxId : "form_total",		inputBoxId : "stotal"}
		, item : 			{name : "item",			searchName : "아이템 시세",	pos : "main",	where : "serverzone_item",			formBoxId : "form_item",		inputBoxId : "sitem"}
		, character :		{name : "character",	searchName : "캐릭터",		pos : "main",	where : "serverzone_characater",	formBoxId : "form_serverzone",	inputBoxId : "powerSearchKeyword_serverzone"}
		, powerbook :		{name : "powerbook",	searchName : "파워북",		pos : "main",	where : "l1web^powerbook",			formBoxId : "form_total",		inputBoxId : "stotal"}
		, ksinchant :		{name : "ksinchant",	searchName : "지식인챈트",	pos : "main",	where : "l1web^ksinchant",			formBoxId : "form_default",		inputBoxId : "powerSearchKeyword_plaync"}
		, alliance :		{name : "alliance",		searchName : "혈맹",			pos : "main",	where : "serverzone_alliance",		formBoxId : "form_serverzone",		inputBoxId : "powerSearchKeyword_serverzone"}
	})
	, focusCheck : true
	, searchForm : "form_total"
	, preSearchForm : "form_total"
	, preSearchType : "tsearch"
	, preSearchKeyword : ""
	, searchObject : {}
	, setSearchType : function (obj) {
		if (document.getElementById(this.searchObject.inputBoxId) == null) {
			this.preSearchKeyword = '';
		} else {
			this.preSearchKeyword = document.getElementById(this.searchObject.inputBoxId).value;
		}
		this.searchObject = this.searchHash.get(obj.id);
		SearchQuery.where = SearchParameter.where[obj.id];

		document.getElementById(this.preSearchForm).style.display = "none";
		document.getElementById(this.searchObject.formBoxId).style.display = "block";
		document.getElementById(this.searchObject.inputBoxId).value = this.preSearchKeyword;
		document.getElementById(this.searchObject.inputBoxId).focus();

		if (this.searchObject.where.indexOf("serverzone") != -1)	SearchQuery.type = SearchParameter.type.serverzone;
		else	SearchQuery.type = SearchParameter.type.plaync;

		this.setKeyword();

		this.preSearchType = obj.id;
		this.preSearchForm = this.searchObject.formBoxId;
		this.preSearchKeyword = $(this.searchObject.inputBoxId).value;

		if(obj.id=='tsearch') totalSrch.options.collection = 'lineage1query';
		else if(obj.id=='powerbook') totalSrch.options.collection = 'lineage1powerbookquery';
	 }
	 , setSearchKeyword : function () {
		var searchKeywork = document.getElementById(this.searchObject.inputBoxId).value;

		if (searchKeywork  != "" && ! this.checkDefaultKeyword(searchKeywork)) return;
		this.defaultSearchKeyword();
	 }
	, setQueryNRequest : function () {
		if(this.searchObject=="") this.searchObject = this.searchHash.get('tsearch');
		SearchQuery.query = document.getElementById(this.searchObject.inputBoxId).value;

		if (SearchQuery.type == SearchParameter.type.serverzone) {
			var frm = document.getElementById('sitem_srch');
			if(SearchQuery.where.indexOf("item") > -1){
				//frm = document.getElementById('sitem_srch');
				var searchtxt = document.getElementById('sitem').value;
				frm.itemName.value = searchtxt;
			}else{
				//frm = document.getElementById('mainSearch');
				var searchtxt = document.getElementById('powerSearchKeyword_' + SearchQuery.type).value;
				document.getElementById('searchtxt').value = searchtxt;
			}

			var serverId = frm.serverId.value;
			var tradeType = document.getElementById('tradeType').value;
			if(serverId == null || serverId == ''){
				alert("서버를 선택해 주세요.");
				return;
			}else if(searchtxt == null || searchtxt == ''){
				alert("검색어를 입력해 주세요.");
				return;
			}

			if(SearchQuery.where.indexOf("item") > -1 ){
				getStoreMainSearch(serverId, tradeType, searchtxt);
			}else{
				frm.method = "post";
				if(SearchQuery.where.indexOf("characater") > -1)	frm.action = "/serverzone/char/intro";
				else	frm.action = "/serverzone/siege/intro";
			}
			frm.submit();
		}else{
			SearchQuery.pos = SearchParameter.pos.main;
			this.request();
		}
	}
	, searchOnFocusAction : function() {
		if(typeof this.searchObject.inputBoxId == "undefined"){this.searchObject = this.searchHash.get(this.preSearchType);}
		var searchKeywork = document.getElementById(this.searchObject.inputBoxId).value;

		if (searchKeywork  != "" && ! this.checkDefaultKeyword(searchKeywork)) return;
		this.defaultSearchKeyword();
	}
	, searchOnBlurAction : function() {
		if (this.focusCheck) {
			var searchKeyword = $(this.getInputBoxId()).value;
			if (searchKeyword  != "" && !this.checkDefaultKeyword(searchKeyword)) return;
			this.defaultSearchKeyword();
		}
	}
	, checkDefaultKeyword : function(searchKeyword) {
		var checkBoolean = false
		this.searchHash.each(function(searchObj) {
			if (searchObj.value.defaultKeyword == searchKeyword) checkBoolean = true;
		});
		for (var i=0 ; i < promotionKeywords.length ; i++) if (promotionKeywords[i].view_content == searchKeyword) checkBoolean = true;
		return checkBoolean;
	}
	, defaultSearchKeyword : function() {
		$(this.getInputBoxId()).value = "";
		SearchQuery.pos = SearchParameter.pos.main;
	}
	, setKeyword : function() {
		$(this.searchObject.inputBoxId).value = this.preSearchKeyword;
		var searchKeyword = this.preSearchKeyword;
		if (searchKeyword  != "" && !this.checkDefaultKeyword(searchKeyword)) {
			$(this.getInputBoxId()).value = searchKeyword;
			return;
		}
		this.defaultSearchKeyword();
	}
	, getInputBoxId : function() {
		return this.searchObject.inputBoxId;
	}
	,setPromotionKeyword : function() {
			var promotionKeyword;

			if(promotionKeywords == null || promotionKeywords == "" || promotionKeywords.length == 0) return;

			promotionKeyword = promotionKeywords[Math.floor(Math.random() * promotionKeywords.length)];
			this.searchObject = this.searchHash.get(this.preSearchType);
			if (promotionKeyword.view_type == "text") {
				document.getElementById('stotal').value = promotionKeyword.view_content;
				document.getElementById('stotal').style.color = promotionKeyword.color;

				document.getElementById('powerSearchKeyword_plaync').value = promotionKeyword.view_content;
				document.getElementById('powerSearchKeyword_plaync').style.color = promotionKeyword.color;

				SearchParameter.promotionKeyword = promotionKeyword;
			} else if (promotionKeyword.view_type =="image") {
				// if view_type is image, you can create code
			}
			this.preSearchForm = this.searchObject.formBoxId;
			this.preSearchType = this.searchObject.name;
			this.preSearchKeyword = $(this.searchObject.inputBoxId).value;
	}
	,request : function () {
		if ( SearchQuery.pos == SearchParameter.pos.main ) {
			var searchKeywork = document.getElementById(this.searchObject.inputBoxId);
			if ( searchKeywork.value.trim().length == 0) {
				alert("검색어를 입력해 주세요.");
				searchKeywork.focus();
				return ;
			}

			if ( SearchParameter.promotionKeyword != null && (SearchParameter.promotionKeyword.view_content ==  searchKeywork.value) ) {
				var promotionHrefJson = SearchParameter.promotionKeyword.href.toQueryParams();

				for (var p in promotionHrefJson) {
						SearchQuery[p] = promotionHrefJson[p];
				}
				SearchQuery.pos = SearchParameter.pos.promotionkwd;
			}
		}

		if (SearchQuery.pos == SearchParameter.pos.promotionkwd && SearchParameter.promotionKeyword.target == "self"){
			location.href = SearchParameter.promotionKeyword.href;
		} else if(SearchQuery.pos == SearchParameter.pos.promotionkwd && SearchParameter.promotionKeyword.target == 'popup' ){
			window.open(SearchParameter.promotionKeyword.href);
		} else{
			location.href = SearchParameter.url +"?"+ $H(SearchQuery).toQueryString();
		}
	}
});

var PopularSearch = {};
Object.extend(PopularSearch, BasicSearch);
Object.extend(PopularSearch, {
	 setQueryNRequest : function (obj) {
		SearchQuery.query = obj;
		SearchQuery.where = SearchParameter.where.tsearch;
		SearchQuery.pos = SearchParameter.pos.popkwd;
		this.request();
	}
	,	viewPopularKeyword : function() {

		var popCount = 3;
		var viewCount = 3;
		try {
			var items = service_keywords.item;
			var data = [];

			var startArrayIndex = Math.floor(Math.random() * popCount)*popCount;

			for (var i = startArrayIndex; i < startArrayIndex+viewCount ; i++) {
				data.push("<a href=\"#\" onclick=\"PopularSearch.setQueryNRequest('" + items[i].name + "'); return false;\">" + items[i].name + "</a>");
			}
			document.write(data.join(", "));
		} catch(e){ alert(e.description); }
	}
	, insertDynamicLiveKwdJS : function(action) {
		var src = action + "?d=" + new Date().getTime();
		document.write("<script language=\"javascript\" type=\"text/javascript\" src=\"" + src + "\"></script>");
	}
	, viewLiveKeyword : function(action) {
		try {
			var h = $H(live_keywords.item);
			var data = [];
			var rank = "";
			if (live_keywords.count == 0) {
				$("realTime_area").hide();
			} else {
				for (var i=0; i < live_keywords.count; i++) {
					rank = (live_keywords.item[i].updown != 'same' && live_keywords.item[i].updown != 'new') ? live_keywords.item[i].rank : "&nbsp;";
					data.push("<li class='num"+ (i+1) + "' value='" + (i+1) + "'><a href=''>" + this.cutKeyword(live_keywords.item[i].name) + "</a><span class='" + live_keywords.item[i].updown + "'>" + rank  + "</span></li>");
				}
			}
			document.write(data.join(""));
		} catch(e) {alert(e.description);}
	}
	, cutKeyword : function(str) {
		var l = 0;
		for (var i=0; i<str.length ; i++) {
			l += (str.charCodeAt(i) > 128) ? 2 : 1;
			if (l>16) return str.substring(0, i) + "...";
		}
		return str
	}
});

var LnBSearch = {};
Object.extend(LnBSearch, BasicSearch);
Object.extend(LnBSearch, {
	 setQueryNRequest : function () {
		SearchQuery.query = document.getElementById('lnb_query').value;
		if (SearchQuery.query == document.getElementById('lnb_query').title) { SearchQuery.query = ''; }
		SearchQuery.pos = SearchParameter.pos.lnb;
		this.request();
	}
});

var KeywordPromotion = {};

Object.extend(KeywordPromotion, {
	setPromotionKeyword : function() {
			var promotionKeyword;

			if(promotionKeywords == null || promotionKeywords == "" || promotionKeywords.length == 0) return;

			promotionKeyword = promotionKeywords[Math.floor(Math.random() * promotionKeywords.length)];

			if (promotionKeyword.view_type == "text") {
				document.getElementById('stotal').value = promotionKeyword.view_content;
				document.getElementById('stotal').style.color = promotionKeyword.color;

				document.getElementById('powerSearchKeyword_plaync').value = promotionKeyword.view_content;
				document.getElementById('powerSearchKeyword_plaync').style.color = promotionKeyword.color;

				SearchParameter.promotionKeyword = promotionKeyword;
				this.searchObject = this.searchHash.get(this.preSearchType);
			} else if (promotionKeyword.view_type =="image") {
				// if view_type is image, you can create code
			}


	}
});


/////// 091130 서버존 아이템 시세 추가 ///////
function goStoreMainSearch(){
	//서버존 자동완성의 내부 검색 메소드 이름과 일치 시켜야 하므로(자동검색을 같은 스크립트 이용함) 한번 거쳐서 가도록 처리.
	MainSearch.setQueryNRequest();
}
function selectTradeType(tradetype, tradetypeName){
	var frm = document.getElementById('sitem_srch');
	selTrade.innerHTML=tradetypeName;
	frm.tradeType.value = tradetype;
}
function getStoreMainSearch(serverId, tradeType, itemName){
	var url="/serverzone/sz/store/getSearchStoreItem";
	new Ajax.Request(url, {
		method: 'post',
		encoding: 'UTF-8',
		asynchronous : false,
		parameters: 'serverId=' + serverId + '&tradeType=' + tradeType + '&itemName=' + encodeURIComponent(itemName),
		onSuccess: function(transport) {
			try {
				checkResultMsg(serverId, itemName, eval(transport.responseText));
			} catch(e) {
				alert(e.description);
			}
		},
		onFailure: function(transport) {
			alert("오류가 발생 하였습니다.");
		}
	});
}
function checkResultMsg(serverId, itemName, result){
	var cnt = result.itemlist.length;
	if(result.rtnVal == 0){
		var frm = document.getElementById('sitem_srch');
		var targetUrl = "";
		if(cnt == 1){
			if(result.itemlist[0].trade == '불가능'){
				frm.result.value = -3;
				targetUrl="/serverzone/store/none";
			}else{
				frm.itemId.value = result.itemlist[0].itemId;
				frm.itemName.value = result.itemlist[0].itemName;
				targetUrl = "/serverzone/store/storelist";
			}
		}else if(cnt == 0){
			frm.result.value = -1;
			targetUrl="/serverzone/store/none";
		}else{
			frm.result.value = -2;
			targetUrl="/serverzone/store/none";
		}
		frm.action = targetUrl;
		frm.submit();
	}else{
		alert("오류가 발생하였습니다. 다시 한번 시도 해주세요.");
	}
}

function hideSelectDiv(type){
	if(type == 'server'){
		$('search_item_server_list').toggle();
		$('select_state_list').hide();
	}else{
		$('select_state_list').toggle();
		$('search_item_server_list').hide();
	}
}
