// ''''''''''''''''''''''''''''''''''''''''''''''''''''''
// ''' Copyleft (c) 2005~2006  Maniadb.com
// ''' Create Date   : 2006. 04. 27.
// ''' Last Modified : 2006. 05. 01.
// ''' First Author  : hyungkyu.ryu
// ''' Last Modifier : hyungkyu.ryu
// ''''''''''''''''''''''''''''''''''''''''''''''''''''''


// 가격 비교 대상이 되는 상점 목록 (index 0은 사용하지 않음. 1에서 시작함.)
var g_maniadb_merchant_list; 

// 파라메터로 넘어온 XML text를 DOM Object로 반환
function get_xml_dom( p_xml_text ) 
{
	var my_doc; 

	if (document.implementation.createDocument){ 
		// Mozilla, create a new DOMParser 
		var parser = new DOMParser(); 
		my_doc = parser.parseFromString( p_xml_text, "text/xml"); 
	} else if (window.ActiveXObject){ 
		// Internet Explorer, create a new XML document using ActiveX 
		// and use loadXML as a DOM parser. 
		my_doc = new ActiveXObject("Microsoft.XMLDOM") 
		my_doc.async="false"; 
		my_doc.loadXML( p_xml_text );   
	} 

	return my_doc;
}

// XML node의 값을 반환
function get_node_value( p_element )
{
	return p_element.childNodes[0].nodeValue;
}

// 특정 shop에서의 가격정보를 담고 있는 xml 문서를 분석하여 HTML code로 반환
function get_product_priceinfo( p_xml_text ) 
{
	var shopImage, shopLink, productPrice, productReserved, productLink;
	var i, j, nodeList, resultHTML;
	
	nodeList   = get_xml_dom( p_xml_text ).documentElement.childNodes;
	resultHTML = '';
	for( i = 0; i <	nodeList.length; i++ )
	{
		switch( nodeList[i].nodeName ) 
		{
			case "shop":
				for ( j = 0; j < nodeList[i].childNodes.length; j++ )
					if ( nodeList[i].childNodes[j].nodeName == "url" )
						shopImage = get_node_value( nodeList[i].childNodes[j] );
					else if ( nodeList[i].childNodes[j].nodeName == "link" )
						shopLink = get_node_value( nodeList[i].childNodes[j] );
				break;
			case "product":
				for ( j = 0; j < nodeList[i].childNodes.length; j++ )
					if ( nodeList[i].childNodes[j].nodeName == "price" )
						productPrice = get_node_value( nodeList[i].childNodes[j] );
					else if ( nodeList[i].childNodes[j].nodeName == "reserved" )
						productReserved = get_node_value( nodeList[i].childNodes[j] );
					else if ( nodeList[i].childNodes[j].nodeName == "link" )
						productLink = get_node_value( nodeList[i].childNodes[j] );

				if ( resultHTML == '' )
					resultHTML = get_pricecomparion( '<a href="' + shopLink + '" target="_blank"><img src="' + shopImage + '" border="0"></a>', productPrice, productReserved, (productPrice-productReserved), '<a href="' + productLink + '" target="_blank"><img src="http://www.maniadb.com/images/_/i_buy.gif" border="0"></a>' );
				else
					resultHTML = resultHTML + get_pricecomparion( '', productPrice, productReserved, (productPrice-productReserved), '<a href="' + productLink + '" target="_blank"><img src="http://www.maniadb.com/images/_/i_buy.gif" border="0"></a>' );
	
				break;

			default:		
				break;
		}			
	}
	
	if ( resultHTML == '' )
		resultHTML = get_pricecomparion( '<a href="' + shopLink + '" target="_blank"><img src="' + shopImage + '" border="0"></a>', 0, 0, 0, '' );
	return resultHTML;
}	

// 특정 shop에서의 가격정보를 보여주는 HTML template
function get_pricecomparion( p_shop, p_price, p_reserved, p_net_price, p_link )
{
	var result_doc;

	result_doc = '<table border="0" width="350" cellpadding="0" cellspacing="0">' + 
               '<tr>' +
                  '<td width=80 align="center">' + p_shop + '</td>';

	if ( p_price == 0 ) 
		result_doc = result_doc +
                  '<td align="center">검색결과가 없습니다.</td>';
	else		              
		result_doc = result_doc +
                  '<td width=70 align="center">' + priceformat(p_price) + '</td>' +
                  '<td width=70 align="center">' + priceformat(p_reserved) + '</td>' +
                  '<td width=70 align="center">' + priceformat(p_net_price) + '</td>' +
                  '<td width=60 align="center">' + p_link + '</td>';

	result_doc = result_doc + 
	             '</tr>' +
               '</table>';

	return result_doc;
}

function priceformat( p_str )
{
	if ( isNaN(p_str) ) return p_str;

	var str = String(p_str);

  len = str.length;
  var str1 = "";

  for(i=1; i<=len; i++) {
   str1 = str.charAt(len-i)+str1;
   if((i%3 == 0)&&(len-i != 0)) str1 = ","+str1;
  }

	return str1 + '원';
}

function getPageX(el){
	return (!el||el==document.body) ? 0 : el.offsetLeft + getPageX(el.offsetParent);
}

function getPageY(el){
	return (!el||el==document.body) ? 0 : el.offsetTop + getPageY(el.offsetParent);
}

function close_window(id){
	var div = document.getElementById(id);
	if(div) div.style.visibility = "hidden";
}

// 가격 비교 시작 : 가격 비교 검색 화면 display
function compare_price( p_album_id, p_seq_no ) 
{
	for ( var i = 1; i < g_maniadb_merchant_list.length; i++ ) 
		document.getElementById("shop_" + g_maniadb_merchant_list[i] ).innerHTML = '';

	var img = document.getElementById( "A" + p_album_id + "_" + p_seq_no );
	var win = document.getElementById( "compareprice" );

	win.style.top  = getPageY(img) + 20;
	win.style.left = getPageX(img);
	win.style.visibility = "visible";

	search_price( 1, p_album_id, p_seq_no );
}

// shop별 가격 비교 시작
function search_price( idx, p_album_id, p_seq_no )
{
	if ( idx < g_maniadb_merchant_list.length ) 
	{
		document.getElementById("progress_msg").innerHTML = '<blink>' + g_maniadb_merchant_list[idx] + ' 검색중...</blink>';
		productframe.location.href = g_album_product_url +
		                             '?idx='+idx+'&st=album&sf=' + g_maniadb_merchant_list[idx] + 
		                             '&rt=js&rv=g_maniadb_xml_albumproduct&a='+p_album_id+'&asn='+p_seq_no;
	}
	else
		document.getElementById("progress_msg").innerHTML = '';
}

// album 정보를 유형별로 나누어 보여줌
function show_album( p_type, p_width, p_pricecomparison ) 
{
	var albumId, albumSeqNo, albumTitle, albumLink, albumCoverart, albumTracks, albumMerchants;
	var i, j, k, t;
	var rootElement, nodeList;
	
	rootElement = get_xml_dom( maniadbXmlText ).documentElement;

  for( i = 0 ; i < rootElement.attributes.length; i++ )
  {
		switch( rootElement.attributes[i].nodeName ) {
		case "a":
			albumId = rootElement.attributes[i].nodeValue;
			break;
		case "asn":
			albumSeqNo = rootElement.attributes[i].nodeValue;
			break;
		default:
			break;
		}
  }	
  
	t = 0;
	albumTracks = '';
	albumMerchants = '';
	nodeList = rootElement.childNodes;
	for( i = 0; i <	nodeList.length; i++ )
	{
		switch( nodeList[i].nodeName ) 
		{
			case "title":
				albumTitle = get_node_value( nodeList[i] );
				break;
			case "link":
				albumLink  = get_node_value( nodeList[i] );
				break;
			case "coverart":
				for ( j = 0; j < nodeList[i].childNodes.length; j++ )
					if ( nodeList[i].childNodes[j].nodeName == "url" )
						albumCoverart = get_node_value( nodeList[i].childNodes[j] );
				break;
			case "merchants":
				for ( j = 0; j < nodeList[i].childNodes.length; j++ )
					if ( nodeList[i].childNodes[j].nodeName == "shop" )
						albumMerchants = albumMerchants + '^' + get_node_value( nodeList[i].childNodes[j] );
				break;
			case "disc":
				if ( p_type == 3 )
					for ( j = 0; j < nodeList[i].childNodes.length; j++ )
						if ( nodeList[i].childNodes[j].nodeName == "song" )
							for ( k = 0; k < nodeList[i].childNodes[j].childNodes.length; k++ )
								if ( nodeList[i].childNodes[j].childNodes[k].nodeName == "title" )
								{
									t = t + 1;
									albumTracks = albumTracks + t + ". " + get_node_value( nodeList[i].childNodes[j].childNodes[k] ) + '<br>';
								}
				break;
			default:		
		}			
	}

	g_maniadb_merchant_list = albumMerchants.split( '^' );
	
	var resultHTML, resultPriceComparison;
	if ( p_pricecomparison == 1 )
		resultPriceComparison = get_pricecomparionbox( albumId, albumSeqNo );
	else
		resultPriceComparison = '';
	switch( p_type ) 
	{
		case 1:
			resultHTML = '<table width="' + p_width + '"><tr><td>' +
			               '<a href="' + albumLink + '" target="_blank">' +
			                 '<img src="' + albumCoverart + '" alt="' + albumTitle + '" width="' + p_width + '" border="0">' +
			               '</a>\n' +
			             '</td></tr><tr><td align="right">' +
										 resultPriceComparison +
			             '</td></tr></table>';
			break;
		case 2:
			resultHTML = '<table width="' + p_width + '"><tr><td>' +
			               '<a href="' + albumLink + '" target="_blank">' +
			                 '<img src="' + albumCoverart + '" alt="' + albumTitle + '" width="' + p_width + '" border="0">' +
			               '</a>\n' +
			             '</td></tr><tr><td>' +
			               '<a href="' + albumLink + '" target="_blank">' + albumTitle + '</a><br>' +
			             '</td></tr><tr><td align="right">' +
										 resultPriceComparison +
			             '</td></tr></table>';
			break;
		case 3:
			resultHTML = '<table width="' + p_width + '"><tr><td>' +
			               '<a href="' + albumLink + '" target="_blank">' +
			                 '<img src="' + albumCoverart + '" alt="' + albumTitle + '" width="' + p_width + '" border="0">' +
			               '</a>\n' +
			             '</td></tr><tr><td>' +
			               '<a href="' + albumLink + '" target="_blank">' + albumTitle + '</a><br>' +
			             '</td></tr><tr><td align="right">' +
										 resultPriceComparison +
			             '</td></tr><tr><td>' +
			               albumTracks +
			             '</td></tr></table>';
			break;
		default:
			resultHTML = 'wrong paramenter';
			break;
					
	}	
	resultHTML = resultHTML + '<div style="visibility:hidden"><iframe name="productframe" width="0" height="0" border="0"></iframe></div>';
	document.write( resultHTML );
}


// 가격 비교 화면 템플릿
function get_pricecomparionbox( p_albumid, p_albumseqno )
{
	var resultHTML;
	resultHTML = '<img src="http://www.maniadb.com/images/_/i_compare.gif" border="0" id="A' + p_albumid + '_' + p_albumseqno + '" onclick="compare_price( ' + p_albumid + ', ' + p_albumseqno + ');"/>' +
               '<div id="compareprice" style="position:absolute; visibility:hidden">' +
                 '<table cellpadding="0" cellspacing="2" border="0" bgcolor="#CCDAE7">' +
                 '<tr><td>' +
                   '<table width="350" cellpadding="0" cellspacing="0" border="0" bgcolor="EFF6F8">' +
                   '<tr><td>' +
                     '<table width="350" border="0"><tr>' + 
                       '<td align="left"><b>가격비교</b></td>' + 
                       '<td align="right"><img src="http://www.maniadb.com/images/_/i_close.gif" onClick="close_window(\'compareprice\');"/></td></tr>' +
                     '</table>' +
                   '</td></tr>' +
                   '</table>' +
                 '</td></tr>' +
                 '<tr><td bgcolor="white"><br>' +
      	           get_pricecomparion( '&nbsp;', '판매가', '적립금', '가격', '&nbsp;' );

	for ( i = 1; i <  g_maniadb_merchant_list.length; i++ )     	           
		resultHTML = resultHTML + '<div id="shop_' + g_maniadb_merchant_list[i] + '"></div>'
                   
	resultHTML = resultHTML + 
                   '<div id="progress_msg" style="padding:3 0 0 0; width:350px; text-align:center; color:#2C74D4; font-size:14px; font-weight:bold;"></div>' +
                 '</td></tr>' +
                 '</table>' +
               '</div>';		
	return resultHTML;             
}