var xml;
var object_length;
var current_object_page = 0;
var current_api_pageno = 1;
var current_api_category = '1';
function imgload_handle(img){
	//$(img).parent().parent().css('display', 'none');
	//$(img).parent().parent().fadeIn("normal");
	$(img).parent().parent().show();
	//$(img).fadeIn("slow");
	//$(img).css('opacity', '1');
}
function objectSelect(idx){
	postingFormReset();
	/* Obejct선택 */
	var object = $(xml).find('item').eq(idx);
	var object_id = object.find('objectID').text();
	var category = object.find('category').text();
	var title = object.find('title').text();
	var description = object.find('description').text();
	var link = object.find('link').text();
	var image = object.find('image').text();
	var artist = object.find('artist').text();
	var vendor = object.find('vendor').text();
	var vendor_main_id = object.find('vendor_main_id').text();
	var vendor_sub_id = object.find('vendor_sub_id').text();
	var pubYear = object.find('pubYear').text();
	

	$('input[name=category]').val(category);
	$('input[name=title]').val(title);
	$('input[name=description]').val(description);
	$('input[name=link]').val(link);
	$('input[name=image]').val(image);
	$('input[name=artist]').val(artist);
	$('input[name=vendor]').val(vendor);
	$('input[name=vendor_main_id]').val(vendor_main_id);
	$('input[name=vendor_sub_id]').val(vendor_sub_id);
	$('input[name=pubYear]').val(pubYear);

	//$('#object_image').src = image;
	document.getElementById("object_image").src = image;

	$('#search_form').hide();
	//$('#search_form').slideUp('normal');
	
	var obinfo = $('#object_info').html();
	$('#posting_object_info').html(obinfo);

	$('#preview').html('');
	$('#preview').hide();
	$('#link').hide();
	$('#citation').hide();
	$('#posting_form').show();

	/*
	try{
		
		
		var title = unescape(obj.title);
		var stripTags = new RegExp(); 
		stripTags = /[<][^>]*[>]/gi; 
		var description = unescape(obj.description); //
		description = description.replace(stripTags, ""); //description <img .. >제거
		var link = unescape(obj.link);
		var image = unescape(obj.image);
		var artist = unescape(obj.artist);
		var pubYear = unescape(obj.pubYear);
		$('input[name=title]').val(title);
		$('input[name=description]').val(description);
		$('input[name=link]').val(link);
		$('input[name=image]').val(image);
		$('input[name=artist]').val(artist);
		$('input[name=objectID]').val(unescape(obj.object_id));

		$('input[name=pubYear]').val(pubYear);

		//$('#posting_form').css('display', 'block');

	}catch(e){}
	loadingHidden();
	//$('input[name=description]').val(obj.description);
	*/
}
function objectOver(idx){
	var object = $(xml).find('item').eq(idx);

	var title = object.find('title').text();
	var description = object.find('description').text();
	var link = object.find('link').text();
	var image = object.find('image').text();
	var artist = object.find('artist').text();
	var vendor = object.find('vendor').text();
	var pubYear = object.find('pubYear').text();

	$('#object_title').html(title);
	$('#object_description').html(description);
	$('#object_artist').html(artist+' / '+'API by '+vendor);
	/*
	$('input[name=title]').val(title);
	$('input[name=description]').val(description);
	$('input[name=link]').val(link);
	$('input[name=image]').val(image);
	$('input[name=artist]').val(artist);
	$('input[name=objectID]').val(objectID);
	$('input[name=pubYear]').val(pubYear);
	*/
}
function errImg(img, errCode, idx){
	var ori_image = $(xml).find('item').eq(idx).find('ori_image');
	$(xml).find('item').eq(idx).find('image').text(ori_image.text());
	$(img).attr('src', ori_image.text());
	ori_image.text("/objectinfo/images/noimage"+current_api_category+".png");
}
function objectImageLoc(){
	var container = $('#object_image_container');
	var height = parseInt(container.css("height"));
	//container.css("top", -(height-80)/2);
}
function objectList(page){ //object list 표시
	$('#object_list').html('');
	
	if(page == 0){
		current_api_pageno--;
		if(current_api_category ==1){
			saveQuery(4);
			current_object_page = 4;
			page = 4;
		}else{
			saveQuery(20);
			current_object_page = 20;
			page = 20;
		}

		return false;
	}

	$('#object_title').html('');
	$('#object_description').html('');
	$('#object_artist').html('');
	 if(current_api_category==1 && page%5==0){
		current_api_pageno++;
		saveQuery(1);
	 }else if(current_api_category==2 && page%21==0){
		current_api_pageno++;
		saveQuery(1);
	 }else{
		 current_object_page = page;
		 //var fidx = paging_num*(page-1);
		 //var lidx = paging_num*page;
		 //var finalpage = (object_length+paging_num-1) / paging_num;
		 var fidx = 0+(5*(page-1));
		 var lidx = 5*page;

		 if(lidx>object_length)
			lidx = object_length;
		
		 for(var i=fidx;i<lidx;i++){
			var node = $(xml).find('item').eq(i);
			
			var title = node.find('title').text();
			var description = node.find('description').text();
			var artist = node.find('artist').text();
			//var artist = node.find('artist').text();
			var image = node.find('image').text();
			var ori_image = node.find('ori_image').text();
			//var str = "<li onclick=\"objectSelect("+i+");\">";
			//str += "<div class='object_title'>"+title+"</div>";
			var margin = "";

			if(i==lidx-1)
				margin = "style='margin:0px'";

			var str = "<div class='imgbox' onmouseover=\"objectOver("+i+")\" "+margin+">";
			str += "<div style='display:none'>";
			str += "<a href='#' onclick=\"objectSelect("+i+");return false\">";
			str += "<img src="+image+" onload='imgload_handle(this)' onerror=\"errImg(this, 0, "+i+")\">";
			str += "</a>";

			str += "<p style='height:20px;overflow:hidden'>"+cutStr(title, 15)+"</p>";
			str += "<p>"+cutStr(artist, 15)+"</p>";
			str += "</div>";
			str += "</div>";
			
			//str += "</li>";
			$('#object_list').append(str);
			
		 }

		 var pagenum;

		 if(current_api_category == 1){
			pagenum = 4;
		 }else if(current_api_category == 2){
			pagenum = 20;
		 }else if(current_api_category == 3){
			pagenum = 20;
		 }

		 var current_pagenum = page+pagenum*(current_api_pageno-1);
		 var last_pagenum = Math.ceil(object_length/5);
		 
		 if(current_pagenum == 1){
			$('#page_left_img').hide();
		 }else{
			$('#page_left_img').show();
		 }

		 if(current_pagenum == last_pagenum){
			$('#page_right_img').hide();
		 }else{
			$('#page_right_img').show();
		 }

		 $('#page_number').html(current_pagenum +' / '+last_pagenum);

		 if($('#search_form').css('display') == 'none'){
			//$('#search_form').css('display', 'block');
			$('#search_form').slideDown('normal');
		 }
		 
	 }
	// $('#result_paging').html(page+" / "+finalpage);
}

function saveQuery(nowPage){
	$.ajax({
		url: '/api/savequery',
		type: 'GET',
		data:{
			target:$('input[name=target]').val(),
			query:$('input[name=query]').val()
        },
        datatype: 'HTML',
        timeout: 10000,
        success: function(result){
			objectFind(nowPage);
		},
		error:function(result){
			objectFind(nowPage);
		}
	});	
}


function objectFind(pagenum){ //API 조회 xxxxxxx
	if($('input[name=query]').val()==''){
		showmsg('검색어를 입력해주세요.');
		return false;
	}
	$('#search').css('background', '');
	$('#posting_form').hide();
	$('#search').removeClass('search_btn');
	$('#search').addClass('loading_btn');

	$('#search').css('background', "url('/asset/images/icon/loading.gif') no-repeat");
	//alert($('#search').attr('enable'));

	$.ajax({
		  url: '/api/object',
		  type: 'GET',
		  data:{
			target:$('input[name=target]').val(),
			query:$('input[name=query]').val(),
			display:'100',
			page:current_api_pageno
		  },
		  datatype: 'XML',
		  timeout: 10000,
		  success: function(xmlData)
		  {
			$('#search').removeClass('loading_btn');
			$('#search').addClass('search_btn');
			$('#search').css('background', "url('/asset/images/posting_write/search_btn.png') no-repeat");

			var obj = new Object();
			obj.category = $('input[name=target]').val();
			current_api_category = obj.category;
			var query = encodeURIComponent($('input[name=query]').val());
			//obj.xml = xmlData;
			object_length = $(xmlData).find('total').text();
			if(object_length<=0){
				showmsg("검색된 결과가 없습니다.");
			}else{
				xml = xmlData;
				objectList(pagenum);
			}
		  }
	});
}

function posting(){
	var contents = $('#posting_contents').val();
	preview(contents, 0);

	if($('input[name=objectID]').val()==""){
		showmsg("Object를 선택해 주시기 바랍니다");
		return false;
	}
	if($('#posting_contents').val()==""){
		showmsg("내용을 입력해 주시기 바랍니다");
		return false;
	}
	if($('#posting_length').text()<0){
		showmsg("999자 이하로 써 주시기 바랍니다");
		return false;
	}
	var tag;
	if($('input[name=tag]').attr('flag') == 'f'){
		tag = "";
	}else{
		tag = $('input[name=tag]').val();
	}
	if($('#posting_btn').attr('enable')){
		$('#posting_btn').attr('enable', 'false');
		$('#posting_btn').css('background', "url('/asset/images/icon/loading.gif') 18px 18px no-repeat");
	}else{
		return false;
	}
	$.ajax({
		  url: '/posting/write',
		  type: 'POST',
		  data:{
			post_user_id : "<?=$post_user_id?>",
			category_id : $('input[name=category]').val(), 
			vendor : $('input[name=vendor]').val(),
			vendor_main_id : $('input[name=vendor_main_id]').val(),
			vendor_sub_id : $('input[name=vendor_sub_id]').val(),
			title : $('input[name=title]').val(),
			description : $('input[name=description]').val(),
			artist : $('input[name=artist]').val(),
			image : $('input[name=image]').val(),
			link : $('input[name=link]').val(),
			//contents : $('textarea[name=contents]').val(),
			contents : $('#preview').html(), 
			tag : strip_lt(tag),
			via_post_id : $('input[name=via_post_id]').val(),
			pubYear : $('input[name=pubYear]').val(),
			posting_page : $('#posting_form').attr('page'),
			posting_flag: "1"
		  },
		  datatype: 'HTML',
		  timeout: 10000,
		  success: function(html)
		  {	
			 /* 
			 posting_ok.php 정상적으로 호출 되었으면 user 페이지로 이동
			 Result 값 체크 받아서 T일 경우 성공, F일 경우 실패로 판별로직 추가 예정
			 현재는 success일 경우 무조건 성공으로 판별
			 */
			 var result = html;

			 if(result != ''){
				location.reload();
				/*
				if($('#start_page').css('display') == 'block'){
					location.reload();
				}else{
					postingFormReset();
					$('#posting_panel').prepend(html);

					if($('#posting_form').attr('page') != 'object'){
						$('#posting_form').fadeOut('fast');
					}
					pageVariable++;		
					showmsg("포스팅이 작성되었습니다.");
				}
				*/
			 }else{
				showmsg("포스팅 작성에 실패하였습니다.");
			 }
			 //location.href='/<?=$post_user_id?>';
		  }
	});
}

var txt;
var tr;

var link_word;
var link_fidx;
var link_lidx;
var link_contents;
var link_obj;
function checkSelect(){
	
	link_contents = $('#posting_contents').val();
	
	//txt = document.selection.createRange();

	if (navigator.appName.indexOf("Microsoft") != -1) {
		link_obj = document.selection.createRange();
		link_word = link_obj.text;
	}else{
		link_fidx = document.getElementById('posting_contents').selectionStart;
		link_lidx = document.getElementById('posting_contents').selectionEnd;
		
		link_word = link_contents.substring(link_fidx, link_lidx);
	}

	if(link_word==''){
		return false;
	}

	return true; 

//	return false;
}

function link(){ //Link
	if(checkSelect()){
		$('input[name=link_str]').val("http://");
		$('#link').slideDown('fast');
		$('#link').css('margin-top','10px');
		$('#link_word').html(cutStr(link_word, 6));

		$('input[name=link_str]').focus();
	}else{
		showmsg('링크걸 문자열을 선택해주십시오');
	}
}
function link_hidden(){
	$('#link').slideUp('fast');
	$('#citation').slideUp('fast');
}
function link_ok(){ // Link 문자열 치환
	//tr.text = "<a href='"+$('input[name=link_str]').val()+"'>"+txt+"</a>";
	var contents;
	var link_str = $('input[name=link_str]').val();
	if (navigator.appName.indexOf("Microsoft") != -1) {
		link_obj.text = "\""+link_word+"\":"+link_str+" ";
		contents = $('#posting_contents').val();
	}
	else {
		var contents1 = link_contents.substring(0, link_fidx);
		var contents2 = link_contents.substring(link_lidx);
		contents = contents1+"\""+link_word+"\":"+link_str+" "+contents2;
		$('#posting_contents').val(contents);
	}

	preview(contents, 0);
}
/* 인용
function citation(){
	if(checkSelect()){
		$('#citation').slideDown('fast');
	}else{
		showmsg('링크걸 문자열을 선택해주십시오');
	}
}
function citation_ok(){
	$.ajax({
		  url: '/citation/write',
		  type: 'POST',
		  data:{
			citation_contents : $('#citation_contents').val()
		  },
		  datatype: 'HTML',
		  timeout: 10000,
		  success: function(id)
		  {	
			var url = "http://retoric.net/citation/"+id;
			var link_str = $('input[name=link_str]').val();
			var contents1 = link_contents.substring(0, link_fidx);
			var contents2 = link_contents.substring(link_lidx);
			var contents = contents1+"\""+link_word+"\":"+url+" "+contents2;
			$('#posting_contents').val(contents);
			$('#citation').slideUp('fast');
			preview(contents, 0);
		  }
	});
}
*/
function contents_focus(){
	link_hidden();
	if($('#tag_form').css('display')=='none'){
		$('#tag_form').slideDown('fast');
	}
}
function receiveFlashFunction(key){
	loadingHidden();
}
function postingFormReset(){
	document.getElementById('posting_form').reset();
	$('#posting_btn').css('background', "url('/asset/images/posting_write/posting_btn.png') no-repeat");
	$('#posting_btn').attr('enable', 'true');
	$('#posting_length').html(999);
	$('#posting_length').css('color', '#e4e4e4');
}
var linkidx = 0;
function linkCheckType1(str, idx){
	var contents = String(str);
	var linkobj = new Object();
	linkobj.contents = contents;
	linkobj.flag = false;
	var fidx = contents.indexOf("\"", idx); 
	var midx = contents.indexOf("\":http://", fidx+1);
	//fidx = contents.lasgIndexOf("\"", fidx-1, midx-1);
	

	if(fidx>-1 && midx>-1 && midx>fidx){ //" ": Link 가 있을 경우
		var linkcon = contents.substring(fidx+1, midx);
		var tempidx = linkcon.lastIndexOf("\"");
		if(tempidx>=0){
			fidx = fidx+1+tempidx;
		}
		linkcon = contents.substring(fidx+1, midx);

		var lidx = (contents+" ").indexOf(" ", midx+1);
		var link = "";
		var linkstr = "";
		if(lidx>-1){
			link = contents.substring(midx+2, lidx);
			linkstr = "<a href='"+link+"' linkidx='"+(linkidx++)+"'>"+linkcon+"</a>";
			linkobj.contents = contents.substring(0, fidx)+linkstr+contents.substring(lidx+1);
			linkobj.flag = true;
		}
	}
	
	return linkobj;
}
function linkCheckType2(str, idx){
	var contents = String(str);

	var linkobj = new Object();
	linkobj.contents = contents;
	linkobj.flag = false;


	/* YLB */
	var fidx = (" "+contents).indexOf(" http://", idx); //http://문자열 판별
	
	if(fidx>-1){ //" ":Link 체크
		var linkcon = "";
		var lidx = (contents+" ").indexOf(" ", fidx);
		
		if(lidx>-1){
			var link = contents.substring(fidx, lidx); //http://~~~ 공백까지

			if(linkcon == ""){ //문자열 줄이기
				linkcon = link.substr(0, lidx-fidx);

				if(lidx-fidx>20) //... 처리
					linkcon = link.substr(0, 20)+"...";
			}
			//var attach_link = check_attach_link(link); //Embed Link 탐색
			var linkstr = " <a href='"+link+"' linkidx='"+(linkidx++)+"'>"+linkcon+"</a> ";
			
			linkobj.contents = contents.substring(0, fidx-1)+linkstr+contents.substring(lidx+1); //생성된 Link 문자열 넣어주기
			linkobj.flag = true;
			//preview(contents, fidx+linkstr.length-1);
		}
	}
	return linkobj;
	/*
	else{
		$('#preview').html(contents); //preview	
	}
	*/
}
function link1Parser(contents, idx){
	
	var oriLength = contents.length;
	var linkobj = linkCheckType1(contents, idx);
	
	if(linkobj.flag){
		contents = linkobj.contents;
		oriLength = contents.length - oriLength;
		if($('#preview').css('display')=='none'){
			$('#preview').show('fast');
		}
		return link1Parser(contents, idx+oriLength);
	}else{
		return contents;
	}
	
}
function link2Parser(contents, idx){
	var oriLength = contents.length;
	var linkobj = linkCheckType2(contents, idx);
	
	if(linkobj.flag){
		contents = linkobj.contents;
		oriLength = contents.length - oriLength;
		if($('#preview').css('display')=='none'){
			$('#preview').show('fast');
		}
		return link2Parser(contents, idx+oriLength);
	}else{
		return contents;
	}
}
function preview(contents, idx){
	contents = strip_lt(contents);
	contents = link1Parser(contents, 0);
	contents = link2Parser(contents, 0);
	$('#preview').html(contents);
	var length = 999-$('#preview').text().length;
	
	if(length<0){
		$('#posting_length').css('color', '#f6c6c6');
	}else{
		$('#posting_length').css('color', '#e4e4e4');
	}

	$('#posting_length').html(length);
	
	/* MLB */
	/*
	var oriLength = contents.length;

	var linkobj1 = linkCheckType1(contents, idx);	

	if(linkobj1.flag){
		contents = linkobj1.contents;
		oriLength = contents.length - oriLength;
		preview(contents, idx+oriLength);
	}else{
		
		oriLength = contents;
		var linkobj2 = linkCheckType2(contents, idx+1);
		
		if(linkobj2.flag){
			
			contents = linkobj2.contents;
			oriLength = contents.length - oriLength;

			preview(contents, idx+oriLength);		

		}else{
			$('#preview').html(contents);
			//alert(contents);
		}
		
	}*/
}

$(document).ready(function(){
	$('#search').click(function (){
		current_api_pageno = 1;
		saveQuery(1);
	});
	$('#posting_contents').focus(contents_focus);
	//$('input[name=link_str]').blur(link_hidden);
	$('#posting_btn').click(posting);

	$('#link_btn').click(link);
	$('#link_ok_btn').click(link_ok);

	//$('#citation_btn').click(citation);
	//$('#citation_ok_btn').click(citation_ok);

	//$('input[name=link_str]').blur(link_hidden);
	$('#query').keypress(function (e){
		if(e.which==13){
			current_api_pageno = 1;
			saveQuery(1);	
			return false;
		}
	});
	$('#posting_contents').keypress(function (e){
		if(e.which==13){
			posting();
			return false;
		}
	});
	$('#posting_contents').keyup(function (){	
		
		var contents = $('#posting_contents').val();
		//$('#preview').html(contents);
		preview(contents, 0);

		//var length = 200-$('#posting_contents').val().length;
		
	});
	/*
	$('#posting_contents').keypress(function (e){ //Enter키
		if(e.which==13)
			posting();	
		return false;
	});
	*/
	/*
	$('select[name=target]').click(function (){
		$('#query').focus();
	});
	*/
	$('#query').focus();
	
});
function tagFocus(tag){
	var tag = $(tag);
	if(tag.attr('flag')=='f'){
		tag.attr('flag', 't');
		tag.val('');
	}
}