var page = 0;
var rssDoc = null;
var links = new Array();
var cnt = 0;
var ticker = null;
var ticker_speed = 5000;
var items_in_page = 2;
var fr_photoinfo_method = '/services/rest/?method=flickr.photos.getInfo';
var fr_params = '&api_key=bf7385056459b32e7a8ebbcb63dd2450&sort=interestingness-desc&media=photo&in_gallery=true&tag_mode=all';
var fr_apikey = 'bf7385056459b32e7a8ebbcb63dd2450';
var fr_current_page = 1;
//f046905791d188e3
var baboie = false;
var logclear = null;
var main_initialed = false;
var news_initialed = false;
var flickr_initialed = false;
var memo_initialed = false;
var blogidx;
var memo_save_timer = null;

function initpage() {

    if(navigator.appName == 'Microsoft Internet Explorer') baboie = true;
    else baboie = false;
    
    $("#list").bind('mouseover', stop_ticker);
    //$("#log").bind('click', start_ticker);
    $("#tabs").tabs();
    $("#tabs").bind( 'tabsselect', function(event, ui) {
	if(ui.index != 1) stop_ticker();
	if(ui.index != 5) {
	    $("#memo_area").unbind('change');    
	    if(memo_save_timer) {
		clearInterval(memo_save_timer);
		memo_save_timer = null;
		log("자동저장종료");
	    }
	}
	
	if(ui.index == 1) {
	    if(!news_initialed) initmenu('rss', false);
	}
	else if(ui.index == 3) vinitpage();
	else if(ui.index == 4) {
	    if(!flickr_initialed) initmenu('flickr', false);
	}
	else if(ui.index == 5) {
	    if(!memo_initialed) initmenu('memo', false);
	}
    } );
    
    $("#flickr_transDiv").droppable( {
	drop: function(e, ui) {
	    var photo_id = $(ui.draggable).find("img").attr('id');
	    var photo_tag = $('#flickr_sinput').attr('value');
	    var photoxml = $(ui.draggable).find("img").attr('alt');
	    var photo_comment = $(ui.draggable).find("#photo_comment").val();

	    $.post('save_flickr_photo.php', {"photo_id": photo_id, "photo_tag": photo_tag, "photoxml": photoxml, "photo_comment": photo_comment }, function(data) {
		log('photo scrap: [' + photo_tag + '] ' + photo_id + ' : ' + $(data).find('result').text());
	    } );
	}
    } );

    $("#scrapalbum")
	.click(function() {
	    $.ajax( {
		url : 'rss/flickrsearch_scrap_latest.xml',
		cache : false,
		success : function(xml) {
		    $('#flickr_sinput').attr('value', 'scrap');
		    flickrsearch_disp(xml);
		}
	    } );
	} );

    $('input').bind('focus', function() {
	$(this).attr('value', '');
    } );
    
    initmain();

    updaterss('kma_weather', 'www.kma.go.kr', '/wid/queryDFS.jsp?gridx=59&gridy=125',true, function() {
	loadrss('kma_weather', kma_weather_api_handle, weather2_disp);
    } );

    //updaterss('google_weather', 'www.google.co.kr', '/ig/api?weather=Seoul&ie=utf-8&oe=utf-8&hl=ko',false);
    //loadrss('google_weather', google_weather_api_handle, weather_disp);
}

function initmain() {
    
    blogidx = new Array();
    $.get('blog/blog_index.xml', function(xml) {
	
	$(xml).find('blog').each( function(idx) {
	    blogidx[idx] = { date: $(this).attr('date'), file: $(this).attr('file') }
	} );

	main_disp(0);
    } )
    
    init_mainmenu();
}

function init_mainmenu() {
    
    $main_initialed = true;
}

function main_disp(idx) {
    
    $.get('blog/'+blogidx[idx].file, function(xml) {
	var photo_url = $(xml).find('photo').text();
	var flickr_url = $(xml).find('photo').attr('flickr_url')
	var photo_comment = $(xml).find('comment').text().nl2br();
	
	$('#main_photo').attr('src', photo_url)
	
	$('#main_photo_a').attr('href', flickr_url)
	    .attr('target', '_blank');
	$('#main_comment').html(photo_comment);
    } );
}

function initmenu(m, update) {

    var menu_url;
    var menudiv;
    if(m == 'rss') {
	menu_url = 'rss/links.xml';
	menudiv = $('#news_menu');
    }
    else if(m == 'flickr') {
	menudiv = $('#flickr_menu');
	menu_url = 'rss/flickr_links.xml';
    }

    if(m == 'rss' || m == 'flickr') {

	$(menudiv).html('');    
	$('<a></a>').appendTo(menudiv)
	    .button()
	    .attr('id', 'updatebutton')
	    .attr('href', 'javascript:void(0)')
	    .click(function() { initmenu(m, true); } )
	    .text('전체업데이트');
	$('<br>').appendTo(menudiv);
	
	$.get(menu_url, function(xml) {
	    $(xml).find('item').each( function(idx) {
		
		var uniq = $(this).find('uniq').text();
		var domain = $(this).find('domain').text();
		var path = $(this).find('path').text();
		if(/flickrsearch_/.test(uniq)) path+= fr_params;
		var url = 'http://' + domain + path;
		
		var a = $('<a></a>').appendTo(menudiv)
		    .attr('href', 'javascript:void(0)')
		    .bind('click', function() { 
			updaterss(uniq, domain, path, true, function() {
			    if(/flickrsearch_/.test(uniq)) {
				fr_current_page = 1;
				loadrss(uniq, flickr_api_handle, flickrsearch_disp);
			    }
			    else loadrss(uniq) 
			} );
		    } );
		
		$('<img></img>').appendTo(a)
		    .attr('src', 'images/dot.gif')
		    .attr('border', '0');
		
		$('<a></a>').appendTo(menudiv)
		    .attr('id', 'link'+idx)
		    .attr('href', "javascript:void(0)")
		    .bind('click', function() { 
			if(/flickrsearch_/.test(uniq)) {
			    fr_current_page = 1;
			    loadrss(uniq, flickr_api_handle, flickrsearch_disp);
			}
			else loadrss(uniq) 
		    } )
		    .html($(this).find('title').text());
		$(menudiv).append('<br>');
		
		if(update) updaterss(uniq, domain, path);
	    } )
	} );
    }
    
    if(m == 'flickr') {
	flickr_initialed = true;
	//loadrss('flickrsearch_people', flickr_api_handle, flickrsearch_disp);
	$("#scrapalbum").click();
    }else if(m == 'rss') {
	news_initialed = true;
	loadrss('googlekey_weather');
    }else if(m == 'memo') {
	//memo_initialed = true;
	loadmemo('food');
    }
}

function gilai_disp(rss) {
    
    (rss == null) ? (rss = rssDoc) : (rssDoc = rss);
    var i = 0;
    var d = new Date(rss.lastModified);
    if(/valid/.test(d) || /N/.test(d)) lastModified = rss.lastModified;
    else lastModified = d.toLocaleString();

    if(rss.title == '') rss.title = '....';
    if(/google/.test(rss.link)) rss.description = '';

    if(page < 0) { page = 0 }
    if(page >= (rss.data.length/items_in_page)-1) { 
	page = (rss.data.length/items_in_page)-1;
	stop_ticker();
    }

    var img_link = '';
    var thumb_link= '';
    var page_box = '';

    $("#info").html("<a href='" + rss.link + "' target='_blank'><span id='rsstitle'>" + rss.title + "</span></a><br>" + lastModified);
    
    $("#list").html('');
    for(i=page*items_in_page; 
	i<rss.data.length && i<(page*items_in_page)+items_in_page; i++) {
	
	img_link = '';
	if(rss.data[i]['img'] != '') {
	    img_link = "<a href='" + rss.data[i]['img'] + "' target='_blank'>" + rss.data[i]['img'] + "</a>";
	}
	else if(rss.data[i]['enclosure'] != '') {
	    if(rss.data[i]['enclosure'].type == 'audio/mpeg') {
		if(navigator.appName == 'Microsoft Internet Explorer') {
		    img_link = "<embed src='" + rss.data[i]['enclosure'].url + "' height='27' autostart='0'></embed>";
		}else {
		    img_link = "<embed src='" + rss.data[i]['enclosure'].url + "' height='30' autostart='0' type='application/x-mplayer2'></embed>";
		    //img_link = "<embed type='application/x-shockwave-flash' src='http://www.google.com/reader/ui/3247397568-audio-player.swf?audioUrl="+rss.data[i]['enclosure'].url+"' width='400' height='27' allowscriptaccess='never' quality='best' bgcolor='#ffffff' wmode='window' flashvars='playerMode=embedded'/>" + "<br><a href='"+rss.data[i]['enclosure'].url+"'>"+rss.data[i]['enclosure'].url+"</a>";
		}
	    }
	}

	if(rss.data[i]['itunes:summary'] != '') {

	    //itunes_summary = "<a href='javascript:" +
	}
	
	if(rss.data[i]['media:thumbnail'] != '') {
	    
	    var imgurl = rss.data[i]['media:content'].url;
	    var imgtitle = rss.data[i]['media:title'];
	    thumb_link = "<a href='"+imgurl+"' rel='fancybox' title='"+imgtitle+"'>" + "<img src='" + rss.data[i]['media:thumbnail'].url + "' width='" + rss.data[i]['media:thumbnail'].width + "' height='" + rss.data[i]['media:thumbnail'].height + "' border='0' align='left' hspace='10' title='" + rss.data[i]['media:title'] + "'></img>" + "</a>";
	}else {
	    thumb_link = '';
	}

	if(rss.data[i]['title'] != undefined) {
	    rss.data[i]['title'] = rss.data[i]['title'].substring(0, 60);
	}
	    
	$("#list").append("<div id='item'><p id='ptitle'><a id='plink"+i+"' href='"+rss.data[i]['link'] + "' target='_blank'><span id='ptitle"+i+"'>" + rss.data[i]['title'] + "</span></a>&nbsp;<a href='javascript:void(0)' onclick='translate_language("+i+")'><span style='font-size:8pt;font-weight:normal'>(번역)</span></a><img src='images/dot.gif' style='float:right' onclick='scrap("+i+")'></p><p id='pdesc'><span id='pdesc"+i+"'>" + thumb_link + rss.data[i]['description'] + "</span> "+ rss.data[i]['pubDate'] + '<br>' +img_link+"</p></div>");
	
    }
    
    page_box += "<p id='page'><a href='#' onclick='page=" + (page-1) + "; gilai_disp(null); return 0;'><b>" + '<<<' + "</b></a>&nbsp;&nbsp;&nbsp;";
  
    var pagestr = '';
    for(i=0; i < (tpage = rss.data.length / items_in_page) && i < 20; i++) {
	if(page == i) { 
	    pagestr = '<b>' + (i+1) + '</b>';
	}else {
	    pagestr = (i+1);
	}
	page_box += "<a href='#' onclick='page=" + i + "; gilai_disp(null); return 0;'>" + pagestr + "</a>&nbsp;&nbsp;&nbsp;";
    }
  
    page_box += "<a href='#' onclick='page=" + (page+1) + "; gilai_disp(null); return 0;'><b>" + '>>>' + "</b></a></p>&nbsp;&nbsp;&nbsp;";
    
    $("#page").html(page_box);
    $("#pdesc a").attr("target", "_blank");
    $("#item a").each(function() {
	var ma;
	var link = $(this).attr('href');
	if(ma = /news\.google\.com\/.*url=(http.*)&usg=.*/.exec(link)) {
	    $(this).attr('href', unescape(ma[1]))
	}
    } );

    $("#tabs").tabs("select", 1);
    stop_ticker();
    start_ticker();
}

function loadrss(uniq, procfunc, dispfunc) {

    stop_ticker();	       
    page = 0;
    var gx = null;
    var nocache = new Date().getTime();
    var path = 'rss/' + uniq + '_latest.xml' + '?nocache=' + nocache;
    
    var ma;
    if(ma = /flickrsearch_(.*)/.exec(uniq)) {
	$('#flickr_sinput').attr('value', ma[1]);
	flickr_current_search_path = '/services/rest/?method=flickr.photos.search&tags=' + ma[1] + fr_params;
	translate_multilanguage(ma[1], 'flickr');
	get_related_tags(ma[1]);
    }
    else if(ma = /googlekey_(.*)/.exec(uniq)) {
	$('#news_sinput').attr('value', ma[1]);
	translate_multilanguage(ma[1], 'google');
    }

    if(procfunc == null) procfunc = rsshandle;

    if(dispfunc == null) {
	if(/flickr_|picasa/.test(uniq)) dispfunc = flickr_disp;
	else if(/flickrsearch_/.exec(uniq)) dispfunc = flickrsearch_disp;
	else dispfunc = gilai_disp;
    }

    gx = new xmlRequest(procfunc, dispfunc, null, null);
    gx.open('GET', path);
    gx.header("Cache-Control", "no-store, no-cache, must-revalidate");
    gx.header("Pragma", "no-cache");
    gx.header("Connection", "close");
    gx.send(null);

}

function updaterss(uniq, domain, path, async, procfunc) {
  
    var cx = null;
    var nocache = new Date().getTime();
    var async = (async == null) ? true : async;
    var procfunc = (procfunc == null) ? function(){} : procfunc;
    if(/flickrsearch/.test(uniq)) {
	path += '&per_page=' + $("#flickr_perpage > option:selected").val();
    }

    if(/naver/.test(domain) || /google/.test(domain)) {
	path = path.replace(/\//g, '%2F');
	path = path.replace(/\&/g, '%26');
	path = path.replace(/\+/g, '%2B');
	path = path.replace(/\=/g, '%3D');
	path = path.replace(/\?/g, '%3F');

	var update_url = 'update.php?uniq=' + uniq + '&domain=' + domain + '&path=' + escape(path) + '&nocache=' + nocache;
    }
    else {

	var update_url = 'update.php?uniq=' + uniq + '&domain=' + domain + '&path=' + encodeURIComponent(path) + '&nocache=' + nocache;
    }

    $.ajax( {
	url : update_url, 
	async : async,
	cache: false,
	success : function(data) {
	    log($(data).find('result').text());
	    procfunc();
	    progress_log(false);
	},
	beforeSend : function() {
	    progress_log(true);
	},
	complete : function() {
	    progress_log(false);
	},
	error : function() {
	    progress_log(false);
	    log($(data).find('result').text());
	}
    } );
 

/*   
    cx= new xmlRequest(xmlhandle, log_disp, new Array('uniq','result'), null);
    cx.open('GET', update_url, async);
    cx.header("Cache-Control", "no-store, no-cache, must-revalidate");
    cx.header("Pragma", "no-cache");
    cx.header("Connection", "close");
    cx.send(null);
    
    //if(uniq == 'googlekey_weather') {
    //updaterss('kma_weather', 'www.kma.go.kr', '/wid/queryDFS.jsp?gridx=59&gridy=125',false);
    //}
*/
}
	 

function scrap(f) {
  
  
  if(confirm("스크랩한다") == true) {

    var titleID = 'ptitle' + f;
    var linkID = 'plink' + f;
    var descID = 'pdesc' + f;
  
    var sx = null;
    var scrap_url = 'scrap.php';
    var params = 
      "title=" + encodeURIComponent(document.getElementById(titleID).innerHTML) + '&' +
      "link=" + encodeURIComponent(document.getElementById(linkID).href) + '&' +
      "description=" + encodeURIComponent(document.getElementById(descID).innerHTML);
    
    sx= new xmlRequest(xmlhandle, log_disp, new Array('result'), null);
    sx.open('POST', scrap_url);
    sx.header("Content-type", "application/x-www-form-urlencoded");
    sx.header("Content-length", params.length);
    sx.header("Connection", "close");
    sx.send(params);
  }
}


function weather_disp(xml) {

  var weather_img = '';
  //document.getElementById('weather').innerHTML = "<img src='http://www.google.co.kr" + xml.data.cc.icon + "' alt='" + xml.data.fi.forecast_date + "/" + xml.data.cc.condition + "' title='" + xml.data.fi.forecast_date + "/" + xml.data.cc.condition + "' hight='20' width='20'>" + '&nbsp;' ;

  document.getElementById('weather').innerHTML = '';
  for(var i=0; i<xml.data.fc.length; i++) { 
    weather_img = "<img src='http://www.google.co.kr" + xml.data.fc[i].icon + "' alt='" + xml.data.fc[i].day_of_week + "/" + xml.data.fc[i].condition + "/" + xml.data.fc[i].low + "~" + xml.data.fc[i].high + "' title='" + xml.data.fc[i].day_of_week + "/" + xml.data.fc[i].condition + "/" + xml.data.fc[i].low + "~" + xml.data.fc[i].high + "' hight='20' width='20'>";

    $("#weather").append(weather_img);
  }
}

function weather2_disp(xml) {

  var weather_img = '';
  var expstr = ''
  for(var i=0; i<xml.data.length-4; i++) {
      expstr = xml.data[i]['day'] + " " + xml.data[i]['hour'] + "시/" + xml.data[i]['wfKor'] + "/비올확률" + xml.data[i]['pop'] + "%";
      weather_img += "<img src='" + xml.data[i]['icon'] + "' title='" + expstr + "' alt='" + expstr + "' width='20' height='20'>";
  }
    $("#kma_weather").html(weather_img);
}

function admin(v, e) {

  var keynum = null;
  if(window.event) { // IE 
    keynum = e.keyCode;
  }
  else if(e.which) { // Netscape/Firefox/Opera
    keynum = e.which
  }
  else {
    keynum = e.keyCode;
  }

  if(keynum == 39) { // left arrow
    page = page+1;
    gilai_disp(null);
  }

  if(keynum == 37) { // right arrow
    page = page - 1;
    gilai_disp(null);
  }
    

  if(/^\:/.test(v.value)) {
    if(keynum != 13) {
      return;
    }
    else {
      v.value = v.value.replace(/^\:/, '');

      var xml = null;
      var url = 'admin.php?cmd=' + encodeURIComponent(v.value); 
      
      xml = new xmlRequest(xmlhandle, log_disp, new Array('result'), null);
      xml.open('GET', url);
      xml.send(null);
    }
  }

  if(keynum == 13) {
    v.value = '';
  }
}

function log_disp(xml) {
  cnt++;
  document.getElementById('log').innerHTML = cnt + ':';
  for(i=0; i < xml.data.length; i++) {
    document.getElementById('log').innerHTML += xml.data[i]['result'] + '<br>';
  }
}

function search(s, e) {

  var keynum = null;

  if(window.event) { // IE 
    keynum = e.keyCode;
  }
  else if(e.which) { // Netscape/Firefox/Opera
    keynum = e.which
      }
  else {
    keynum = e.keyCode;
  }

  if(keynum == 13) {
      
      var target = s.getAttribute('id')

      if(target == 'news_sinput') {
	  var uniq = 'googlesearch';
	  var domain = 'news.google.co.kr';
	  var path = '/news?ned=ko&hl=kr&&q=' + encodeURIComponent(s.value) + '+-chosun+-joins+-donga&output=rss&ie=UTF-8';
	  
	  updaterss(uniq, domain, path, true, function() {
	      loadrss(uniq);
	  } );
	  translate_multilanguage(s.value, 'google');

      }
      else if(target == 'flickr_sinput') {
	  var uniq = 'flickrsearch';
	  var domain = 'api.flickr.com';
	  
	  s.value = s.value.replace(/\s+/g, ",");
	  
	  var path = '/services/rest/?method=flickr.photos.search&tags=' + encodeURIComponent(s.value) + fr_params;
	  flickr_current_search_path = path;
	  fr_current_page = 1;
	  updaterss(uniq, domain, path, true, function() { 
	      loadrss(uniq, flickr_api_handle, flickrsearch_disp);
	  } );
	  translate_multilanguage(s.value, 'flickr');
	  get_related_tags(s.value);
      }
      else if(target == 'picasa_sinput') {
	  var uniq = 'picasasearch';
	  var domain = 'picasaweb.google.com';
	  
	  if(/\sin\s/.test(s.value)) {
	      var sk = s.value.split(" in ");
	      sk[0] = sk[0].replace(/\s+/g, "+");
	      var path = '/data/feed/base/all?alt=rss&kind=photo&access=public' + '&l=' + sk[1] + '&q=' + sk[0];
	  }else {
	      s.value = s.value.replace(/\s+/g, "+");
	      var path = '/data/feed/base/all?alt=rss&kind=photo&access=public' + '&q=' + s.value;
	  }
	  
	  updaterss(uniq, '', path, true, function() { 
	      loadrss(uniq);
	  } );
	  $('#transDiv').html('');
	  //$("#tabs").tabs("select", 3);
	  //translate_multilanguage(s.value);
      }
  }
    else {
	return;
    }
}

function progress_log(mode) {
    
    if(mode) {
	//$('#right').css('cursor', 'wait');
	$("#ajax_progress_bar").css('visibility', 'visible');
    }
    else {
	//$('#right').css('cursor', '');
	$("#ajax_progress_bar").css('visibility', 'hidden');
    }
}

function stop_ticker() {
    if(ticker) {
	//log('ticker stop');
	clearInterval(ticker); 
	ticker = null;
    }
}

function start_ticker() {
    //log('ticker start');
    ticker = setInterval(function() { page++; gilai_disp(); }, 
			     ticker_speed);
}

function log(str) {
    $("#log").html(str);
    if(logclear == null && str != '') {
	logclear = setTimeout(function() {
	    logclear = null;
	    log(''); 
	}, 5000);
    }
}

function flickr_disp(rss) {
    
    stop_ticker();
    var d = new Date(rss.lastModified);
    if(/valid/.test(d) || /N/.test(d)) lastModified = rss.lastModified;
    else lastModified = d.toLocaleString();

    if(rss.title == '') rss.title = '....';

    $("#flickr_info").html("<a href='" + rss.link + "' target='_blank'><span id='rsstitle'>" + rss.title + "</span></a><br>" + lastModified);

    $("#flickr_list").html('');
    $("#flickr_page").html('');
	
    for(var i=0; i<rss.data.length; i++) {
	
	var fa = $('<a></a>').appendTo('#flickr_list')
	    .attr('href', rss.data[i]['media:content'].url)
	    .attr('title', rss.data[i]['media:title']);
	
	var ma = /\/(\d+)_[0-9a-z]+_\w/.exec(rss.data[i]['media:thumbnail'].url);
	var photo_id = ma[1];
	var thumb = $('<img></img>').appendTo(fa)
	    .attr('id', photo_id)
	    .attr('src', rss.data[i]['media:thumbnail'].url)
	    .attr('width', rss.data[i]['media:thumbnail'].width)
	    .attr('height', rss.data[i]['media:thumbnail'].height)
	    .attr('title', rss.data[i]['media:title'])
	    .attr('alt', rss.data[i]['media:title'])
	    .attr('rel', rss.data[i]['media:content'].url)
	    .bind('click', function(e) {
		e.preventDefault();
		create_dialog($(this));
	    } );
	
	if(i > 28) $(thumb).css('display', 'none');
    }
}

function flickrsearch_disp(xml) {

    stop_ticker();
    var resp = $(xml).find('rsp').attr('stat');
    if(resp == 'fail') {
	log($(xml).find('err').attr('msg'));
	return;
    }

    var total = 0;
    var searchkey = $('#flickr_sinput').attr('value');
    var ma, user_id;
    if(ma = /user_id:(.*)/.exec(searchkey)) user_id = ma[1];
    else user_id = null;
    
    $("#flickr_list").html('');
    $(xml).find('photo').each( function(idx) {
	try {
	    var pxml = (new XMLSerializer()).serializeToString(xml.getElementsByTagName('photo')[idx]);
	}
	catch(e) {
	    var pxml = (xml.getElementsByTagName('photo')[idx]).xml;
	}
	var photo_id = $(this).attr('id');
	var owner = $(this).attr('owner');
	var secret = $(this).attr('secret');
	var server = $(this).attr('server');
	var farm = $(this).attr('farm');
	var title = $(this).attr('title');
	var ispublic = $(this).attr('ispublic');
	var photo_comment = $(this).find('comment').text();

	var thumb_url = 'http://farm'+farm+'.static.flickr.com/'+server+'/'+photo_id+'_'+secret+'_s.jpg';
	var photo_url = 'http://farm'+farm+'.static.flickr.com/'+server+'/'+photo_id+'_'+secret+'_m.jpg';
	
	/*var fa = $('<a></a>').appendTo('#flickr_list')
	    .attr('href', photo_url)
	    .attr('title', title)
	    .attr('id', 'a_thumb'+idx);*/
	
	var thumb = $('<img></img>').appendTo('#flickr_list')
	    .attr('src', thumb_url)
	    .attr('title', title)
	    .attr('alt', pxml)
	    .attr('rel', photo_url)
	    .attr('id', photo_id)
	    .attr('comment', photo_comment)
	    .css('cursor', 'pointer')
	    .bind('click', function(e) {
		e.preventDefault();
		create_dialog($(this));
	    } );

	if(navigator.appName == 'Microsoft Internet Explorer') {
	    $(thumb).attr('width', '75');
	    $(thumb).attr('height', '75');
	}else {
	    $(thumb).css('visibility', 'hidden')
		.attr('width', '75')
		.attr('heght', '75')
		.bind('load', function(e) {
		    $(this).css('visibility', 'visible');
		} );
	}
	
	total++;
    } );

    if(total > 28) $('#flickr_list').css('overflow', 'auto');
    else $('#flickr_list').css('overflow', 'hidden');
    
    $('#flickr_info').html('');
    var total_photos = $(xml).find('photos').attr('total'); 
    var info_href;
    if(user_id == null) info_href = 'http://www.flickr.com/photos/tags/'+searchkey+'/interesting/';
    else info_href = 'http://www.flickr.com/photos/' + user_id;

    $('<a></a>').appendTo('#flickr_info')
	.attr('href', info_href)
	.attr('target', '_blank')
	.text('Search Result('+total+'/'+fr_current_page+'p/'+total_photos+') : '+searchkey);


    $('#flickr_page').html('');
    if(searchkey != 'scrap') {
	if(fr_current_page > 1) {
	
	    var flickr_next = $('<span></span>').appendTo("#flickr_page");
	    $('<a></a>').appendTo(flickr_next)
		.attr('href', 'javascript:void(0)')
		.click(function() {
		    var uniq = 'flickrsearch';
		    var domain = 'api.flickr.com';
		    var path = flickr_current_search_path + '&page=' + (fr_current_page-1);
		    fr_current_page--;
		    updaterss(uniq, domain, path, true, function() {
			loadrss(uniq, flickr_api_handle, flickrsearch_disp);
		    } );
		} ).text('이전');
	    $('#flickr_page').append('&nbsp;&nbsp;|');
	}
    
	$('#flickr_page').append('&nbsp;&nbsp;');
	var flickr_next = $('<span></span>').appendTo("#flickr_page");
    $('<a></a>').appendTo(flickr_next)
	    .attr('href', 'javascript:void(0)')
	    .click(function() {
		var flickr_current_keyword = $('#flickr_sinput').attr('value');
		var uniq = 'flickrsearch';
		var domain = 'api.flickr.com';
		var path = flickr_current_search_path + '&page=' + (fr_current_page+1);
		fr_current_page++;
		updaterss(uniq, domain, path, true, function() {
		    loadrss(uniq, flickr_api_handle, flickrsearch_disp);
		} );
	    } ).text('다음');
    }
}

function create_dialog(img) {

    var img = $(img).clone();
    $(img).dialog( {
	autoOpen: true,
	position: [75, 6],
	width: 'auto',
	closeOnEscape: true,
	modal: false,
	resizable: true,
	show: 'slide',
	hide: 'slide',
	title: $(img).attr('title'),
	open: function(event, ui) {

	    // get photo info
	    // var photoxml = $(img).attr('alt');
	    var photo_id = $(img).attr('id');
	    var domain = 'api.flickr.com';
	    var path = fr_photoinfo_method + '&photo_id=' + photo_id + '&api_key=' + fr_apikey;
	    
	    updaterss('flickr_photoinfo', domain, path, true, function() {
		$.get('rss/flickr_photoinfo_latest.xml', function(xml) {
		    var stat = $(xml).find('rsp').attr('stat');
		    if( stat == 'ok') {
			var photo_url = $(xml).find('url').text();
			var owner_nsid = $(xml).find('owner').attr('nsid');
			var owner_username = $(xml).find('owner').attr('username');
			$(img).wrap("<a href='"+photo_url+"' target='_blank'></a>")
			    .unbind('click');
			
			$('#flickr_owner').html('');
			var ma = $('<a></a>').appendTo('#flickr_owner')
			    .attr('href', 'javascript:void(0)')
			    .click(function() {
				var uniq = 'flickrsearch';
				var domain = 'api.flickr.com';
				var path = '/services/rest/?method=flickr.photos.search&user_id=' + owner_nsid + fr_params;
				flickr_current_search_path = path;
				fr_current_page = 1;
				$('#flickr_sinput').attr('value', 'user_id:'+owner_nsid);
				updaterss(uniq, domain, path, true, function() {
				    loadrss(uniq, flickr_api_handle, flickrsearch_disp); 
				} );
			
			    } )
			    .append('<span>photo by:'+owner_nsid+'</span><br>');
			
			$('#flickr_owner').append(ma);
		    }
		    else {
			log('get photoinfo fail: ' + $(xml).find('err').attr('msg'));
		    }
		} );
	    } );
	    
	    var thumb_src = $(img).attr('src');
	    $(img).attr('src', $(img).attr('rel'));
	    $(img).attr('rel', thumb_src);
	    $(img).css('float:left');
	    
	    $('<a></a>').insertAfter(img)
		.attr('href', 'javascript:void(0)')
		.click(function() {
		    $('<textarea></textarea>').insertAfter($(this))
			.attr('id', 'photo_comment')
			.attr('cols', '35')
			.attr('rows', '8')
			.val($(img).attr('comment'))
			.wrap("<p style='text-align:center'></p>");
		} )
		.wrap("<p style='text-align:center;font-size:8pt;'></p>")
		.text('comment');
	},
	
	close: function(event, ui) {
	    $(img).dialog('destroy');
	    $(img).remove();
	}
    } );
}


function get_related_tags(tag) {

    var domain = 'api.flickr.com';
    var path = '/services/rest/?method=flickr.tags.getRelated&tag=' + tag + '&api_key=' + fr_apikey;

    updaterss('flickrsearch_relatedtags', domain, path, true, function() {
	
	$('#flickr_related_tag').html('');

	$.get('rss/flickrsearch_relatedtags_latest.xml', function(xml) {
	    log('get related tag['+tag+'] success')
	    
	    $(xml).find('tag').each( function(idx) {
		var ma = $('<a></a>').appendTo('#flickr_related_tag')
		    .attr('href', 'javascript:void(0)')
		    .click(function() {
			$('#flickr_sinput').attr('value', $(this).text());
			var uniq = 'flickrsearch';
			var domain = 'api.flickr.com';
			var path = '/services/rest/?method=flickr.photos.search&tags=' + encodeURIComponent($(this).text()) + fr_params;
			flickr_current_search_path = path;
			fr_current_page = 1;
			
			updaterss(uniq, domain, path, true, function() {
			    loadrss(uniq, flickr_api_handle, flickrsearch_disp); 
			    translate_multilanguage($('#flickr_sinput').val(), 'flickr');
			} );
			
		    } )
		    .append('<span>'+$(this).text()+'</span><br>');
		
		$('#flickr_related_tag').append(ma);
	    } );

	} );
    } );
}

function loadmemo(m) {

    var nocache = new Date().getTime();
    var memoxml;

    if(m == 'food') memoxml = 'blog/memo_2010.xml?' + nocache;
    else if(m == 'note') memoxml = 'blog/note_2010.xml?' + nocache;

    $("#memo_area").unbind('change');    
    if(memo_save_timer) {
	clearInterval(memo_save_timer);
	memo_save_timer = null;
	log("자동저장종료");
    }
    
    $.get(memoxml, function(xml) {
	$("#memo_area").val($(xml).find('memo').text());
	$("#memo_area").change( function() {
	    log("자동저장시작");
	    memo_save_timer = setInterval( function() {
		$.post("blog/save_memo.php", {"mode": m, "memo": $("#memo_area").val() }, function(data) {
		    log($(data).find('result').text());
		} );
	    }, 30000);
	} );
    } );
}
