/**
    this code created by nayun.
    modify (for punchmonster) by nahyerim (09.10.31)
    small & simple.
    birthday : 09.05.15
   (c) 2009 ncsoft Web Development Team
*/

//var wherePrefix = encodeURIComponent("punchmonster^");
var wherePrefix = "punchmonster^";
var search_link = "";
if (location.href.indexOf('/rc.') == -1) {
	search_link = pathSearch
}else{
	search_link = pathSearch
}

var SearchParameter = {
	 where : {
		  tsearch :			wherePrefix+"tsearch"
		, item : 			"serverzone_item"
		, powerbook :  		wherePrefix+"powerbook"
		, ksinchant : 	 	wherePrefix+"ksinchant"
		, character :  		"serverzone_characater"
		, alliance : 		"serverzone_alliance"
	}
	, site : "punchmonster"
	, 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 : "punchmonster^tsearch",			formBoxId : "form_total",	inputBoxId : "stotal"}
		, character :		{name : "character",	searchName : "캐릭터",	pos : "main",	where : "characater",	formBoxId : "form_char",	inputBoxId : "schar"}
		, powerbook :		{name : "powerbook",	searchName : "파워북",	pos : "main",	where : "punchmonster^powerbook",		formBoxId : "form_total",	inputBoxId : "stotal"}
	})
	, focusCheck : true
	, searchForm : "form_total"
	, preSearchForm : "form_total"
	, preSearchType : "tsearch"
	, preSearchKeyword : ""
	, searchObject : {}
	, setSearchType : function (obj) {
		try {
			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 = 'punchmonsterquery';
			else if(obj.id=='powerbook') totalSrch.options.collection = 'punchmonsterpowerbookquery';
		}
		catch(e) {
		}
		
	 }
	 , setSearchKeyword : function () {
		var searchKeywork = document.getElementById(this.searchObject.inputBoxId).value;

		if (searchKeywork  != "" && ! this.checkDefaultKeyword(searchKeywork)) return;
		this.defaultSearchKeyword();
	 }
	, setQueryNRequest : function () {
		try {
			if(this.searchObject=="") this.searchObject = this.searchHash.get('tsearch');
			SearchQuery.query = document.getElementById(this.searchObject.inputBoxId).value;

			SearchQuery.pos = SearchParameter.pos.main;
			this.request();
		}
		catch(e) {
		}
	}
	, 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 () {
		try {
			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();
			}
		}
		catch(e) {
		}
	}
});

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
			}


	}
});

function showRanking() {
	$('scrollRanking').observe('mouseover',function(e) {
		lin2Ranking.isStop=true; //롤링정지
		var el=e.element();
		if (el.tagName!='LI') el=el.up('li');
		//if ($('rankList').select('li.over')[0]) $('rankList').select('li.over')[0].className = 'out';
		$('rankList').style.display = 'block';
		for(var i=1;i<$('rankList').select('li').length+1; i+=1) {
			//if(parseInt(el.value)===i) $('rankList').select('li')[i-1].className = 'over';
		}
	});
	$('rankList').observe('mouseover',function(e) {
		$('rankList').style.display = 'block';
	});
	$('rankList').observe('mouseout',function(e) {
		Event.stop(e);
		lin2Ranking.isStop=false;//롤링시작
		var el=e.element();
		$('rankList').style.display = 'none';
	});
}
/* (e) 파워검색  */
