<?php
/*
lilbox: The Amazon Web Service Script for PHP 4.2.0 or later
Amazon Webサービスを利用して広告表示するPHP用スクリプトです。設置方法は下記URLをご覧下さい。 
http://www.websmith.co.jp/lilbox/
2006/05/10 Ver.4.00
Copyright (C) 2004-2006 Websmith Ltd. All Rights Reserved.
動作の保証はいたしません。また、このスクリプトの利用によって生じたいかなる損害に対しても当社は一切の責任を負いません。
改変および再配布は自由に行って下さい。改変したスクリプトの再配布については上記URLをご覧下さい。
著作権表記およびスクリプト中の「lilbox」リンク表記を消すことは禁じます。「リンク表記を消す」とは、枠線と似た色にして認識できないようにしたり、意図的にフレーム枠に隠す等の行為を含みます。
*/
$lilbox_version = "4.00";

//ユーザー設定ここから----------------------------------

//アソシエイトID
$associate_id = "sakanya-22";

//デフォルトの色設定
//背景色
$bg_color = "#ffffff";
//ワクの色
$border_color = "#0000ee";
//商品名の色
$title_color = "#0000ff";
//著者・アーティスト名の色
$author_color = "#000000";
//価格の色
$price_color = "#ff0000";

//リンク先の表示方法
//"_top"：同じウィンドウに表示
//"_blank"：新規ウィンドウを開く
$target = "_blank";

//商品の並び順
//0：常にトップセラー順に表示
//1：トップセラー上位10商品からランダムに表示
$random = 1; 

//画像がない商品の表示
//0：画像がない商品も"No Image"として表示
//1：画像がない商品は表示しない（規定表示数に足りなくなる場合は、画像がない商品も表示）
$all_img = 1;

//在庫がない商品の表示
//0：在庫がない商品も表示
//1：在庫がない商品は表示しない（規定表示数に足りなくなる場合は、在庫がない商品も表示）
$all_avail = 1;

//価格の表示。0にすると表示しない
$show_price = 0;

//商品をクリックした時に表示されるAmazonのページ
//0：「この商品がクリックされました／こんな商品もおすすめします」のページへ。
//1：通常の商品ページへ。
$go_direct = 1;

//リセットボタンの設定。0にすると無効
$enable_reset = 1; 

//デフォルトの商品設定
//lilbox呼び出しコードに商品設定コードを付加すれば、ここの設定は無視されます。
//$default_catalog = "books"; //商品カテゴリー
$default_catalog = "DVD"; //商品カテゴリー
$default_key = "562020"; //ブラウズノードまたはキーワード（自動判別します）。省略時は指定カテゴリーの総合トップセラー

//データ保存の設定
//0：保存しない。
//1：保存する。（lilbox_dataフォルダを同階層に作り、パーミッションを777にして下さい）
$cache_data = 1;

//画像保存の設定
//0：保存しない。
//1：保存する。（lilbox_imgフォルダを同階層に作り、パーミッションを777にして下さい）
$cache_img = 0;

//地域選択
//co.jp：日本(Amazon.co.jp)
//com：米国(Amazon.com)
//co.uk：英国(Amazon.co.uk)
//de：ドイツ(Amazon.de)
//fr：フランス(Amazon.fr)
//ca：カナダ(Amazon.ca)
$locale = "co.jp";

//-----------------------------------ユーザー設定ここまで

////////////////////////////////
//                            //
//        function設定        //
//                            //
////////////////////////////////
//$catalog整理($default_catalog値対処),$searchIndex/$key処理
//$catalog: ECSリクエスト用SearchIndex値
//$searchIndex: 検索リンク表示用 
function AmCatalog( $catalogText, $keyText ) {
	global $catalog, $searchIndex, $key, $locale;
	switch( $catalogText ) {
		case "books-jp":
		case "book":
		case "Books":
		case "books":
			$catalog = "Books";
			$searchIndex = "books-jp";
			$topnode = ($locale=="com")? "1000":"465610";
			break;
		case "books-us":
		case "foreign":
		case "ForeignBooks":
		case "foreignbooks":
			$catalog = "ForeignBooks";
			$searchIndex = "books-us";
			$topnode = "573662";
			break;
		case "music-jp":
		case "pops":
		case "Music":
		case "music":
			$catalog = "Music";
			$searchIndex = "music-jp";
			$topnode = ($locale=="com")? "301668":"562032";
			break;
		case "classical-jp":
		case "classic":
		case "Classical":
		case "classical":
			$catalog = "Classical";
			$searchIndex = "classical-jp";
			$topnode = ($locale=="com")? "85":"562032";
			break;
		case "dvd-jp":
		case "dvd":
		case "DVD":
			$catalog = "DVD";
			$searchIndex = "dvd-jp";
			$topnode = ($locale=="com")? "404276":"562002";
			break;
		case "VHS":
		case "vhs":
			$catalog = "VHS";
			$searchIndex = "vhs-jp";
			$topnode = ($locale=="com")? "404274":"562002";
			break;
		case "Video":
		case "video":
			$catalog = "Video";
			$searchIndex = "video-jp";
			$topnode = ($locale=="com")? "404274":"562002";
			break;
		case "videogames-jp":
		case "game":
		case "VideoGames":
		case "videogames":
			$catalog = "VideoGames";
			$searchIndex = "videogames-jp";
			$topnode = ($locale=="com")? "471280":"637872";
			break;
		case "software-jp":
		case "software":
		case "Software":
			$catalog = "Software";
			$searchIndex = "software-jp";
			$topnode = ($locale=="com")? "409488":"637642";
			break;
		case "electronics-jp":
		case "electronics":
		case "Electronics":
			$catalog = "Electronics";
			$searchIndex = "electronics-jp";
			$topnode = ($locale=="com")? "226721":"3495611";
			break;
		case "kitchen-jp":
		case "kitchen":
		case "Kitchen":
			$catalog = "Kitchen";
			$searchIndex = "kitchen-jp";
			$topnode = ($locale=="com")? "291358":"3839181";
			break;
		case "toys-jp":
		case "toys":
		case "Toys":
			$catalog = "Toys";
			$searchIndex = "toys-jp";
			$topnode = ($locale=="com")? "171457":"13299591";
			break;
		case "sportinggoods":
		case "SportingGoods":
			$catalog = "SportingGoods";
			$searchIndex = "sporting-goods-jp";
			$topnode = ($locale=="com")? "":"14315361";
			break;
		case "Blended":
		case "blended":
			$catalog = "Blended";
			$searchIndex = "blended";
			$topnode = "";
			break;
		default: //categoryで独自設定した場合
			$catalog = $catalogText;
			$searchIndex = "blended";	
			$topnode = "";
	}	
	$key = ($keyText)? $keyText:$topnode;
}
//デフォルトのキーワード指定して再実行
function ShowDefault() { 
	global $resetUrl, $key, $default_key, $catalog, $default_catalog;
	if ( $_REQUEST['retry'] ) { //デフォルト設定にも問題がある場合の無限ループ回避
		$default_catalog = "books";
		$default_key = ($locale=="com")? "1000":"465610";
	}
	$retryUrl = substr($resetUrl, 0, strrpos($resetUrl, "&"))."&".$default_catalog."=".urlencode($default_key);
	$retryUrl = str_replace("reset", "retry", $retryUrl);	
	header("HTTP/1.1 301 Moved Permanently");
	header("Location: http://".$_SERVER["HTTP_HOST"].$retryUrl);
	exit();	
}
//No Image表示
function NoImg( $small ) { 
	$padding = ($small)? 3:5;
	$noImg = '<div style="float:left;padding:'.$padding.'px;background-color:white;border:1px solid #999999;color:#999999;text-align:center;text-decoration:none;margin-right:5px;margin-bottom:5px;">No<br />Image</div>';
	return $noImg;
}
//長い文字列を切り詰める
function CutShort( $text, $max ) { 
	if ( mb_strlen( $text ) > $max ) {
			$newText = mb_substr( $text, 0, $max-1 )."...";
	} else {
			$newText = $text;
	}
	return $newText;
}	
//データ整形
function TidyValue( $theValue ) {
	$theValue = rtrim( $theValue, ", " );
	$theValue = trim( $theValue );
	$theValue = rtrim( $theValue, "," );
  return $theValue;
}
//XML要素の開始時処理
function StartElm( $parser, $elmName ) {
	global $aryTmp, $cnt, $cur, $aryImg, $thisImage;
	if ( $elmName == "ITEM" ) {
		$aryTmp[$cnt] = array();
		$aryImg[$cnt] = array();
		$thisImage = "";
	} else if ( strstr( $elmName, "IMAGE" ) ) {
		$aryImg[$cnt][$elmName] = array();
		$thisImage = $elmName;
	} else if ( $elmName == "OFFERS" || $elmName == "OFFER" ) {
		$aryTmp[$cnt]["FORMATTEDPRICE"] = "";
	}	else {  
		$cur = $elmName; 
		if ( $cur=="AUTHOR" || $cur=="ARTIST" || $cur=="DIRECTOR" || $cur=="ACTOR" ) {
			if ( $aryTmp[$cnt][$cur] ) {
				$aryTmp[$cnt][$cur] .= ", ";
			}
		}
	}
}
//XML要素の終了時処理
function EndElm( $parser, $elmName ) { 
	global $aryTmp, $cnt, $cur, $resetUrl, $cache_data, $thisImage;
	if ( $elmName == "ITEM" ) {
		$cnt++;
	} else if ( strstr( $elmName, "IMAGE" ) ) {
		$thisImage = "";
	}	else if ( $elmName == "CODE" ) { //Amazonよりエラーメッセージ
		if ( strstr($aryTmp[$cnt][$elmName],"NoExactMatches") ) { //「該当商品なし」
			ShowDefault();			
		} else { //それ以外は一時的障害とみなしキャッシュ強制表示モードで再実行
			if ($cache_data) {
				$tmpUrl = str_replace("reset", "tmp_error", $resetUrl);	
				header("HTTP/1.1 301 Moved Permanently");
				header("Location: http://".$_SERVER["HTTP_HOST"].$tmpUrl);
				exit();
			} else { //キャッシュしない設定ならエラーメッセージ表示して終了
				echo $aryTmp[$cnt][$elmName];
				exit();
			}			
		}
	}
	$aryTmp[$cnt][$cur] = TidyValue( $aryTmp[$cnt][$cur] );
}
//XML要素のデータ部分処理
function ChrDat( $parser, $dat ) {
	global $aryTmp, $cnt, $cur, $aryImg, $thisImage;
	if ( $thisImage && ( $cur=="URL" || $cur=="HEIGHT" || $cur=="WIDTH" ) ) {
		$aryImg[$cnt][$thisImage][$cur] .= $dat;
	} else {
		$aryTmp[$cnt][$cur] .= mb_convert_encoding( $dat, "EUC-JP", "UTF-8" );
	}
}
//古いキャッシュファイル削除
function CleanUp( $dirName, $keepHours ) {
	$keepLimit = time() - ( $keepHours * 60 * 60 );
	$cacheDir = dir( $dirName );
	while( $fileName = $cacheDir -> read() ) {
		if ( $fileName != "." && $fileName != ".." ) {
			$currentFile = $dirName . "/" . $fileName;
			if ( filemtime( $currentFile ) < $keepLimit ) {
				unlink( $currentFile );
			}
		}
	}
}
////////////////////////////////
//                            //
//        　初期設定 　       //
//                            //
////////////////////////////////
//データ保存フォルダのパス
//$data_path = "lilbox_data/";
$data_path = "amdata/";
//画像保存フォルダのパス
$img_path = "lilbox_img/";
//商品設定
if ( isset($_GET['books-jp']) ) {
	$key = $_GET['books-jp'];
	$catalog = "Books";
} else if ( isset($_GET['book']) ) {
	$key = $_GET['book'];
	$catalog = "Books";
} else if ( isset($_GET['Books']) ) {
	$key = $_GET['Books'];
	$catalog = "Books";
} else if ( isset($_GET['books']) ) {
	$key = $_GET['books'];
	$catalog = "Books";
} else if ( isset($_GET['books-us']) ) {
	$key = $_GET['books-us'];
	$catalog = "ForeignBooks";
} else if ( isset($_GET['foreign']) ) {
	$key = $_GET['foreign'];
	$catalog = "ForeignBooks";
} else if ( isset($_GET['ForeignBooks']) ) {
	$key = $_GET['ForeignBooks'];
	$catalog = "ForeignBooks";
} else if ( isset($_GET['foreignbooks']) ) {
	$key = $_GET['foreignbooks'];
	$catalog = "ForeignBooks";
} else if ( isset($_GET['music-jp']) ) {
	$key = $_GET['music-jp'];
	$catalog = "Music";
} else if ( isset($_GET['pops']) ) {
	$key = $_GET['pops'];
	$catalog = "Music";
} else if ( isset($_GET['Music']) ) {
	$key = $_GET['Music'];
	$catalog = "Music";
} else if ( isset($_GET['music']) ) {
	$key = $_GET['music'];
	$catalog = "Music";
} else if ( isset($_GET['classical-jp']) ) {
	$key = $_GET['classical-jp'];
	$catalog = "Classical";
} else if ( isset($_GET['classic']) ) {
	$key = $_GET['classic'];
	$catalog = "Classical";
} else if ( isset($_GET['Classical']) ) {
	$key = $_GET['Classical'];
	$catalog = "Classical";
} else if ( isset($_GET['classical']) ) {
	$key = $_GET['classical'];
	$catalog = "Classical";
} else if ( isset($_GET['dvd-jp']) ) {
	$key = $_GET['dvd-jp'];
	$catalog = "DVD";
} else if ( isset($_GET['dvd']) ) {
	$key = $_GET['dvd'];
	$catalog = "DVD";
} else if ( isset($_GET['DVD']) ) {
	$key = $_GET['DVD'];
	$catalog = "DVD";
} else if ( isset($_GET['VHS']) ) {
	$key = $_GET['VHS'];
	$catalog = "VHS";
} else if ( isset($_GET['vhs']) ) {
	$key = $_GET['vhs'];
	$catalog = "VHS";
} else if ( isset($_GET['Video']) ) {
	$key = $_GET['Video'];
	$catalog = "Video";
} else if ( isset($_GET['video']) ) {
	$key = $_GET['video'];
	$catalog = "Video";
} else if ( isset($_GET['videogames-jp']) ) {
	$key = $_GET['videogames-jp'];
	$catalog = "VideoGames";
} else if ( isset($_GET['game']) ) {
	$key = $_GET['game'];
	$catalog = "VideoGames";
} else if ( isset($_GET['VideoGames']) ) {
	$key = $_GET['VideoGames'];
	$catalog = "VideoGames";
} else if ( isset($_GET['videogames']) ) {
	$key = $_GET['videogames'];
	$catalog = "VideoGames";
} else if ( isset($_GET['software-jp']) ) {
	$key = $_GET['software-jp'];
	$catalog = "Software";
} else if ( isset($_GET['software']) ) {
	$key = $_GET['software'];
	$catalog = "Software";
} else if ( isset($_GET['Software']) ) {
	$key = $_GET['Software'];
	$catalog = "Software";
} else if ( isset($_GET['electronics-jp']) ) {
	$key = $_GET['electronics-jp'];
	$catalog = "Electronics";
} else if ( isset($_GET['electronics']) ) {
	$key = $_GET['electronics'];
	$catalog = "Electronics";
} else if ( isset($_GET['Electronics']) ) {
	$key = $_GET['Electronics'];
	$catalog = "Electronics";
} else if ( isset($_GET['kitchen-jp']) ) {
	$key = $_GET['kitchen-jp'];
	$catalog = "Kitchen";
} else if ( isset($_GET['kitchen']) ) {
	$key = $_GET['kitchen'];
	$catalog = "Kitchen";
} else if ( isset($_GET['Kitchen']) ) {
	$key = $_GET['Kitchen'];
	$catalog = "Kitchen";
} else if ( isset($_GET['toys-jp']) ) {
	$key = $_GET['toys-jp'];
	$catalog = "Toys";
} else if ( isset($_GET['Toys']) ) {
	$key = $_GET['Toys'];
	$catalog = "Toys";
} else if ( isset($_GET['toys']) ) {
	$key = $_GET['toys'];
	$catalog = "Toys";
} else if ( isset($_GET['SportingGoods']) ) {
	$key = $_GET['SportingGoods'];
	$catalog = "SportingGoods";
} else if ( isset($_GET['sportinggoods']) ) {
	$key = $_GET['sportinggoods'];
	$catalog = "SportingGoods";
} else if ( isset($_GET['Blended']) ) {
	$key = $_GET['Blended'];
	$catalog = "Blended";
} else if ( isset($_GET['blended']) ) {
	$key = $_GET['blended'];
	$catalog = "Blended";
} else if ( isset($_GET['category']) ) {
	$key = $_GET['key'];
	$catalog = $_GET['category'];
} else {
	$key = $default_key;
	$catalog = $default_catalog;
}
//キーワード処理
$key = CutShort( addslashes( stripslashes($key) ), 51 );
AmCatalog( $catalog, $key );
$search_type = ( ereg("^[0-9]+$",$key) )? "BrowseNode":"Keywords";
$tmpEncode = mb_detect_encoding( urldecode($key), "auto" );
$keyUTF = mb_convert_encoding( $key, "UTF-8", $tmpEncode ); 
$keyEUC = mb_convert_encoding( $key, "EUC-JP", $tmpEncode ); 
//カスタマイズ値
if ( $_GET['new'] ) {
	$new = true;
}
if ( $new ) {//新商品モード
	$random = 0; //ランダム表示強制解除
	if ( $catalog=="Books" || $catalog=="ForeignBooks" ) {
		$sort = "daterank";
	} else if ( $catalog=="Classical" || $catalog=="DVD" || $catalog=="Music" || $catalog=="VHS" || $catalog=="Video" ) {
		$sort = "-orig-rel-date";
	} else if ( $catalog=="Electronics" || $catalog=="Kitchen" || $catalog=="Software" || $catalog=="SportingGoods" || $catalog=="Toys" || $catalog=="VideoGames" ) {
		$sort = "-release-date";
	} else {
		$sort = "";
		$new = false;
	}
} else {
	$sort = "";
}
if ( isset($_GET['no_cache']) ) {
	if ( $_GET['no_cache']=="both" ) {
		$cache_data = 0;
		$cache_img = 0;
	} else if ( $_GET['no_cache']=="data" ) {
		$cache_data = 0;
	} else if ( $_GET['no_cache']=="img" ) {
		$cache_img = 0;
	}
}
if ( isset($_GET['cache']) ) {
	if ( $_GET['cache']=="both" ) {
		$cache_data = 1;
		$cache_img = 1;
	} else if ( $_GET['cache']=="data" ) {
		$cache_data = 1;
	} else if ( $_GET['cache']=="img" ) {
		$cache_img = 1;
	}
}
if ( ereg("^[a-fA-F0-9]+$",$_GET['bg']) ) {
	$bg_color = strval("#".$_GET['bg']);
}
if ( ereg("^[a-fA-F0-9]+$",$_GET['border']) ) {
	$border_color = strval("#".$_GET['border']);
}
if ( ereg("^[a-fA-F0-9]+$",$_GET['title']) ) {
	$title_color = strval("#".$_GET['title']);
}
if ( ereg("^[a-fA-F0-9]+$",$_GET['author']) ) {
	$author_color = strval("#".$_GET['author']);
}
if ( ereg("^[a-fA-F0-9]+$",$_GET['price']) ) {
	$price_color = strval("#".$_GET['price']);
}
if (isset($_GET['type'])) {
	$type = addslashes($_GET['type']);
}
//リセットのためのURL準備
$resetUrl = $_SERVER[ "PHP_SELF" ].'?reset=true';
if ($type) {
	$resetUrl .= '&type='.$type;
}
if ($_GET['bg']) {
	$resetUrl .= '&bg='.$_GET['bg'];
}
if ($_GET['border']) {
	$resetUrl .= '&border='.$_GET['border'];
}
if ($_GET['title']) {
	$resetUrl .= '&title='.$_GET['title'];
}
if ($_GET['author']) {
	$resetUrl .= '&author='.$_GET['author'];
}
if ($_GET['price']) {
	$resetUrl .= '&price='.$_GET['price'];
}
if ($_GET['cache']) {
	$resetUrl .= '&cache='.$_GET['cache'];
}
if ($_GET['no_cache']) {
	$resetUrl .= '&no_cache='.$_GET['no_cache'];
}
if ($_GET['new']) {
	$resetUrl .= '&new=true';
}
$resetUrl .= '&'.$catalog.'='.urlencode($keyEUC);
//表示用
//共通値
$border_width = "1px";
$border_style = "solid";
$titleTopHeight = 13;
//表示スタイル設定
//幅や高さを変更したら、呼び出しコード（iframeタグ）側の変更もお忘れなく。
//商品名などの文字列は短めにしておくのが、レイアウト崩れを防ぐコツです。
switch ($type) {
	case "mini":
		$num = 1; //表示商品数
		$width = 130; //全体の幅（ピクセル）
		$height = 85; //全体の高さ（ピクセル）
		$tdWidth = 100; //1セルの幅（％）
		$length = 8; //商品名の長さ（ダブルバイト文字数）
		$author = 5; //著者・アーティスト名（同上）
		$titleBottomHeight = 0; //lilbox表記を下部に置く場合、高さをピクセル指定。しない場合0
		$small = 60; //画像を縮小させる場合、縦の長さをピクセル指定。縮小させない場合0。（指定されているとマージンも縮小）
		$vertical = 0; //縦に並べるレイアウトなら1
		$double = 0; //２列並べるレイアウトなら1
		$linebreak = 0; //商品名等を画像の下へまわすなら1
		break;
	case "btn":
		$num = 1;
		$width = 125;
		$height = 125;
		$tdWidth = 100;
		$length = 16;
		$author = 14;
		$titleBottomHeight = 16;
		$small = 60;
		$vertical = 0;
		$double = 0;
		$linebreak = 0;
		break;
	case "banner":
		$num = 2;
		$width = 468;
		$height = 60;
		$tdWidth = 50;
		$length = 16;
		$author = 16;
		$titleBottomHeight = 0;
		$small = 40;
		$vertical = 0;
		$double = 0;
		$linebreak = 0;
		break;
	case "halfbanner":
		$num = 1;
		$width = 234;
		$height = 60;
		$tdWidth = 100;
		$length = 16;
		$author = 16;
		$titleBottomHeight = 0;
		$small = 40;
		$vertical = 0;
		$double = 0;
		$linebreak = 0;
		break;
	case "tbanner":
		$num = 2;
		$width = 468;
		$height = 100;
		$tdWidth = 50;
		$length = 20;
		$author = 20;
		$titleBottomHeight = 0;
		$small = 0;
		$vertical = 0;
		$double = 0;
		$linebreak = 0;
		break;
	case "bigbanner":
		$num = 4;
		$width = 728;
		$height = 90;
		$tdWidth = 25;
		$length = 36;
		$author = 18;
		$titleBottomHeight = 0;
		$small = 60;
		$vertical = 0;
		$double = 0;
		$linebreak = 0;
		break;
	case "sky":
		$num = 4;
		$width = 120;
		$height = 600;
		$tdWidth = 100;
		$length = 10;
		$author = 10;
		$titleBottomHeight = 30;
		$small = 0;
		$vertical = 1;
		$double = 0;
		$linebreak = 1;
		break;
	case "halfsky":
		$num = 1;
		$width = 120;
		$height = 240;
		$tdWidth = 100;
		$length = 46;
		$author = 46;
		$titleBottomHeight = 16;
		$small = 0;
		$vertical = 1;
		$double = 0;
		$linebreak = 1;
		break;
	case "widesky":
		$num = 5;
		$width = 160;
		$height = 600;
		$tdWidth = 100;
		$length = 20;
		$author = 20;
		$titleBottomHeight = 30;
		$small = 0;
		$vertical = 1;
		$double = 0;
		$linebreak = 0;
		break;
	case "bigsky":
		$num = 5;
		$width = 148;
		$height = 800;
		$tdWidth = 100;
		$length = 26;
		$author = 12;
		$titleBottomHeight = 40;
		$small = 0;
		$vertical = 1;
		$double = 0;
		$linebreak = 1;
		break;
	case "square":
		$num = 4;
		$width = 250;
		$height = 250;
		$tdWidth = 50;
		$length = 12;
		$author = 12;
		$titleBottomHeight = 0;
		$small = 60;
		$vertical = 0;
		$double = 1;
		$linebreak = 1;
		break;
	case "rect":
		$num = 4;
		$width = 300;
		$height = 250;
		$tdWidth = 50;
		$length = 24;
		$author = 24;
		$titleBottomHeight = 0;
		$small = 0;
		$vertical = 0;
		$double = 1;
		$linebreak = 0;
		break;
	case "smallrect":
		$num = 1;
		$width = 180;
		$height = 150;
		$tdWidth = 100;
		$length = 60;
		$author = 60;
		$titleBottomHeight = 16;
		$small = 0;
		$vertical = 0;
		$double = 0;
		$linebreak = 0;
		break;
	case "bigrect":
		$num = 6;
		$width = 336;
		$height = 280;
		$tdWidth = 50;
		$length = 16;
		$author = 16;
		$titleBottomHeight = 0;
		$small = 0;
		$vertical = 0;
		$double = 1;
		$linebreak = 0;
		break;
	default:
		$num = 100;
		$width = 200;
		$height = 400;
		$tdWidth = 100;
		$length = 100;
		$author = 100;
		$titleBottomHeight = 0;
		$small = 0;
		$vertical = 1;
		$double = 0;
		$linebreak = 0;
		break;
}

////////////////////////////////
//                            //
//       　データ更新　       //
//                            //
////////////////////////////////
$keep = 1; //何時間ごとにデータ更新？
$keepImg = 24; //何時間ごとに画像更新？
$updateLimit = mktime( date("H")-$keep, date("i"), date("s"), date("m"), date("d"), date("Y") );	 	 
$updateLimitImg = mktime( date("H")-$keepImg, date("i"), date("s"), date("m"), date("d"), date("Y") );	 	 
$mustUpdate = false;					 
$cacheData = "";
$aryTmp = array();
$aryImg = array();
$cnt = 0;
$cur = "";
//データファイル更新チェック
$localPath = $data_path.$catalog."_".urlencode($keyEUC);
$localPath .= ($new)? "_new":"";
$localPath .= ".xml";
if ( $_REQUEST['tmp_error'] ) { //Amazonサーバー障害時
	$mustUpdate = false;
} else if ( $_REQUEST['reset'] || $_REQUEST['retry'] ) { //Reset
	$mustUpdate = true;
}	else if ( !file_exists( $localPath ) ) { //ローカルファイルなし
	$mustUpdate = true;
} else if ( !filemtime( $localPath ) ) { //サーバーがatime非対応
	$mustUpdate = true;
} else if ( filemtime( $localPath ) < $updateLimit ) { //1時間以上前のもの
	$mustUpdate = true;
}
if ( $mustUpdate ) {
	$amazonPath = "http://webservices.amazon.".$locale."/onca/xml?Service=AWSECommerceService&SubscriptionId=0QRPDEYA3S34NHGWRRG2&AssociateTag=".$associate_id."&Operation=ItemSearch&SearchIndex=".$catalog."&".$search_type."=".urlencode($keyUTF)."&ResponseGroup=Small,Images,Offers&Version=2005-01-05";
	$amazonPath .= ( $calalog!="Blended" && $sort!="" )? "&Sort=".$sort:"";
	$dataFile = @fopen( $amazonPath, "r" );
}
if (!$dataFile) {
	$dataFile = @fopen( $localPath, "r" );
}
if ($dataFile) {		
	$xml = xml_parser_create();
	xml_set_element_handler( $xml, "StartElm", "EndElm" );
	xml_set_character_data_handler( $xml, "ChrDat" );
	while ( $data = fread( $dataFile, 4096 ) ) {	
		$cacheData .= $data; //cache
		//$data = mb_ereg_replace( ">[\n ]*<", "><", $data );
		if ( !xml_parse( $xml, $data, feof( $dataFile ) ) ) {
			echo '<h2>lilbox error: '.xml_error_string(xml_get_error_code($xml)).' at line '.xml_get_current_line_number($xml).'</h2>';
			echo '<h5>current data:</h5>';
			echo htmlspecialchars($data);
			die();
		}
	}
	xml_parser_free( $xml );
	if ( $mustUpdate && $cache_data ) {
		$cacheFile = fopen( $localPath, "w" );
		fwrite( $cacheFile, $cacheData );
		fclose( $cacheFile );
	}
}
if ( sizeof($aryTmp) < 1 ) {
	ShowDefault();
}
//print_r($aryTmp);
//データ配列整理
$aryTmp2 = array();
if ( $all_img ) { //画像あるもののみ入れる
	$j = 0;
	for ( $i=0; $i < ( sizeof($aryTmp) - 1 ); $i++ ) {
		if ( $aryImg[$i]["SMALLIMAGE"]["URL"] ) {
			$aryTmp2[$j] = $aryTmp[$i];
			$aryTmp2[$j]["URL"] = $aryImg[$i]["SMALLIMAGE"]["URL"];
			$j++;
		}
	}
}
if ( sizeof($aryTmp2) < $num ) { //足りなくなったので全部入れる
	for ( $i=0; $i < ( sizeof($aryTmp) - 1 ); $i++ ) {
		$aryTmp2[$i] = $aryTmp[$i];
		$aryTmp2[$i]["URL"] = $aryImg[$i]["SMALLIMAGE"]["URL"];
	}
}
$aryData = array();
if ( $all_avail ) { //在庫あるもののみ入れる
	$j = 0;
	for ( $i=0; $i < sizeof($aryTmp2); $i++ ) {
		if ( $aryTmp2[$i]["FORMATTEDPRICE"] ) {
			$aryData[$j] = $aryTmp2[$i];
			$j++;
		}
	}
}
if ( sizeof($aryData) < $num ) { //足りなくなったので全部入れる
	for ( $i=0; $i < sizeof($aryTmp2); $i++ ) {
		$aryData[$i] = $aryTmp2[$i];
	}
}
if ($random) {
	srand(microtime()*1000000);
	shuffle($aryData);
}

////////////////////////////////
//                            //
//            表示            //
//                            //
////////////////////////////////
echo '<?xml version="1.0" encoding="';
echo ($locale=="co.jp")? 'EUC-JP':'iso-8859-1';
echo '" ?'.'>'; 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo ($locale=="co.jp")? 'EUC-JP':'iso-8859-1'; ?>" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<title>lilbox</title>
<!--nobanner-->
<style type="text/css">
<!--
body {
	margin:0px;
	<?php echo ($locale=="co.jp")? '':'font-family:Arial, Helvetica, sans-serif;'; ?>
}
a:link {
	color:<?php echo $title_color; ?>;
}
.title {
	color:<?php echo $title_color; ?>;
}
.author {
	color:<?php echo $author_color; ?>;
}
.price {
	color:<?php echo $price_color; ?>;
	<?php echo ($locale=="co.jp")? 'font-family:"Osaka", "MS Pゴシック", "Arial", "Helvetica", "sans-serif";':''; ?>
}
-->
</style>
</head>
<body><?php
echo '<table width="'.$width.'" height="'.$titleTopHeight.'" border="0" cellpadding="0" cellspacing="0" style="background-color:'.$border_color.';';
echo ($bg_color==$border_color)? 'color:'.$author_color.'">':'color:'.$bg_color.'">';
echo '<tr><td align="left" valign="top">';
echo '<span style="font-size:10px;">&nbsp;';
echo '<a title="Amazon.'.$locale.'" href="http://www.amazon.'.$locale.'/exec/obidos/redirect?tag='.$associate_id.'" style="font-family:Arial,Helvetica,sans-serif;color:';
echo ($bg_color==$border_color)? $author_color:$bg_color;
echo '"';
echo ($target)? ' target="'.$target.'">':' target="_blank">';
echo 'Amazon</a>';
if ( $search_type=="Keywords" ) {
	$keyToShow = htmlspecialchars( stripslashes( $keyEUC ) );
	echo ': ';
	//日本の場合のみ検索リンク付加
	if ( $locale=="co.jp" ) {
		echo '<a title="'.$keyToShow.'" href="http://www.amazon.co.jp/exec/obidos/external-search?mode='.$searchIndex.'&keyword='.urlencode($keyEUC);
		echo '&encoding-string-jp='.urlencode("日本語");
		echo '&tag='.$associate_id.'" style="color:';
		echo ($bg_color==$border_color)? $author_color:$bg_color;
		echo '"';
		echo ($target)? ' target="'.$target.'">':' target="_blank">';
	}
	if ( $width <= 148 ) {
		echo CutShort( $keyToShow, 5 );
	} else if ( $width <= 250 ) {
		echo CutShort( $keyToShow, 10 );
	} else if ( $width <= 336 ) {
		echo CutShort( $keyToShow, 20 );
	} else if ( $width <= 468 ) {
		echo CutShort( $keyToShow, 26 );
	} else if ( $width <= 728 ) {
		echo CutShort( $keyToShow, 40 );
	}	else {
		echo $keyToShow;
	}
	echo ( $locale=="co.jp" )? '</a>':'';
} else {
	if ($locale=="co.jp") {
		echo ' <a title="この分野の一覧ページへ" href="http://www.amazon.co.jp/exec/obidos/redirect?tag='.$associate_id.'&path=tg/';
		if ($catalog=="Books"&&$key=="465610") {
			echo 'browse/-/497532';
		} else if ($catalog=="ForeignBooks"&&$key=="573662") {
			echo 'browse/-/598426';
		} else if ($catalog=="Music"&&$key=="562032") {
			echo 'browse/-/583332';
		} else if ($catalog=="Classical"&&$key=="562032") {
			echo 'browse/-/639126';
		} else if (($catalog=="DVD"||$catalog=="VHS"||$catalog=="Video")&&$key=="562002") {
			echo 'browse/-/583336';
		} else if ($catalog=="Software"&&$key=="637642") {
			echo 'browse/-/637674';
		} else if ($catalog=="VideoGames"&&$key=="637872") {
			echo 'browse/-/637814';
		} else if ($catalog=="Electronics"&&$key=="3495611") {
			echo 'new-for-you/top-sellers/-/electronics/all';
		} else if ($catalog=="Kitchen"&&$key=="3839181") {
			echo 'new-for-you/top-sellers/-/kitchen/all';
		} else if ($catalog=="Toys"&&$key=="13299591") {
			echo 'new-for-you/top-sellers/-/toys/all';
		} else if ($catalog=="SportingGoods"&&$key=="14315361") {
			echo 'new-for-you/top-sellers/-/sporting-goods/all';
		} else {
			echo 'browse/-/'.$key;
		}
		echo '/" style="color:';
		echo ($bg_color==$border_color)? $author_color:$bg_color;
		echo '"';
		echo ($target)? ' target="'.$target.'">':' target="_blank">';
		echo ($new)? 'ニューリリース':'トップセラー';
		echo '</a>';
	} else {
		echo ($new)? ' new releases':' top sellers';
	}
}
//日本以外は商品指定がイレギュラーになるのでリセット無効に
echo ($locale=="co.jp" && $enable_reset)? '<a href="'.$resetUrl.'" target="_self" style="color:'.$border_color.'">_</a>':'';
echo '</span></td>';
if ( !$titleBottomHeight ) {
	echo '<td align="right" valign="top"><a title="lilbox Ver.'.$lilbox_version.'" href="http://www.websmith.co.jp/lilbox/" style="padding-right:1px;font-family:Arial,Helvetica,sans-serif;font-size:9px;';
	echo ($bg_color==$border_color)? 'color:'.$author_color.'"':'color:'.$bg_color.'"';
	echo ($target)? ' target="'.$target.'">':' target="_blank">';
	echo 'lilbox</a></td>';
}
echo '</tr></table>';
echo '<table width="'.$width.'"';
echo ( $titleBottomHeight )? ' height="'.($height-$titleTopHeight-$titleBottomHeight).'"':' height="'.($height-$titleTopHeight).'"';
echo ($small)? ' cellpadding="2"':' cellpadding="5"';
echo ' border="0" cellspacing="0" style="background-color:'.$bg_color.';border:'.$border_style.' '.$border_width.' '.$border_color.';font-size:11px;line-height:13px">';
for ($i=0;$i<sizeof($aryData);$i++) {
	$imgFile = "";
	if ( isset($aryData[$i]['ASIN']) && $i < $num ) {
		//URL準備		
		$linkTo = 'http://www.amazon.'.$locale.'/exec/obidos/ASIN/'.$aryData[$i]['ASIN'].'/'.$associate_id;
		$linkTo .= ($go_direct)? '/ref=nosim':'';
		if ( $i == 0 ) {
			echo '<tr>';
		} else if ($vertical) {
			echo '<tr>';
		} else if ( $double && $i%2==0 ) {
			echo '<tr>';
		}
		echo '<td width="'.$tdWidth.'%" valign="top"';
		echo ( $vertical && $i>0  )? ' style="border-top-style:'.$border_style.';border-top-width:3px;border-top-color:'.$border_color.'">':'>';
		echo '<a title="'.$aryData[$i]['TITLE'].'" href="'.$linkTo.'"';
		echo ($target)? ' target="'.$target.'">':' target="_blank">';
		//画像表示
		$imgSRC = ($aryData[$i]["URL"])? $aryData[$i]["URL"]:'http://images.amazon.com/images/P/'.$aryData[$i]['ASIN'].'.01._SCTHUMBZZZ_.jpg';
		if ( $cache_img ) {
			//画像ファイル更新チェック
			$mustUpdate = false;
			$localUrl = $img_path.$aryData[$i]['ASIN']."_SMALL.jpg";		
			if ( !file_exists( $localUrl ) ) {
				$mustUpdate = true; //ローカルファイルなし
			} else if ( !filemtime($localUrl) ) {
				$mustUpdate = true; //サーバーがatime非対応
			} else if ( filemtime($localUrl) < $updateLimitImg ) {
				$mustUpdate = true; //24時間以上前のもの
			}
			if ( $mustUpdate ) {
				//画像ファイル読み込み保存
				$imgData = "";
				$remoteImage = @fopen( $imgSRC, "rb" );
				if ( $remoteImage ) {
					while( !feof($remoteImage) ) {
						$imgData .= fread( $remoteImage, 1024 );
					}
				}
				$localImage = fopen( $localUrl, "wb" );
				fwrite( $localImage, $imgData );
			}
			$imgSRC = $localUrl;
		}
		$imgInfo = @getimagesize($imgSRC);
		if ( $imgInfo[0] > 1 && $imgInfo[1] > 1 ) {
			echo '<img src="'.$imgSRC.'" border="0" alt="'.$aryData[$i]['TITLE'].'"';
			echo ($linebreak)? ' style="margin-bottom:2px"':' align="left" style="margin-right:2px"';
			if ( $small && $imgInfo[1] > $small ) { //要 天地サイズ縮小
				echo ' height="'.$small.'"';
			} else {
				echo ' width="'.$imgInfo[0].'" height="'.$imgInfo[1].'"';
			}
			echo ' />';
		} else { 
			echo NoImg($small);
		}
		echo '</a>';
		//文字表示
		$names = "";
		$names = $aryData[$i]['AUTHOR'];
		$names .= ( $names && $aryData[$i]['ARTIST'] )? ", ":"";
		$names .= $aryData[$i]['ARTIST'];
		$names .= ( $names && $aryData[$i]['DIRECTOR'])? ", ":"";
		$names .= $aryData[$i]['DIRECTOR'];
		$names .= ( $names && $aryData[$i]['ACTOR'])? ", ":"";
		$names .= $aryData[$i]['ACTOR'];
		$thisLength = $length;
		if (!$names) {
			$thisLength = $thisLength + $author;
		}	
		if (!$show_price) {
			$thisLength = $thisLength + 5;
		}
		echo ($linebreak)? '<div style="clear:both;">':'';
		echo '<a title="'.$aryData[$i]['TITLE'].'" href="'.$linkTo.'"';
		echo ($target)? ' target="'.$target.'">':' target="_blank">';
		echo '<span class="title">'.CutShort($aryData[$i]['TITLE'],$thisLength).'</span>';
		echo '</a>';
		echo ($names)? '<br /><span class="author">'.CutShort( $names, $author ).'</span>':'';
		echo ($show_price)? '<br /><span class="price">'.$aryData[$i]['FORMATTEDPRICE'].'</span>':'';
		echo ($linebreak)? '</div>':'';
		echo '</td>';
		if ( $i >= $num-1 ) {
			echo '</tr>';
		} else if ($vertical) {
			echo '</tr>';
		} else if ( $double && $i%2==1 ) {
			echo '</tr>';
		}		
	}
}
echo '</table>';
if ( $titleBottomHeight ) {
	echo '<table width="'.$width.'" height="'.$titleBottomHeight.'" border="0" cellpadding="0" cellspacing="0" style="background-color:'.$border_color.';font-family:Arial,Helvetica,sans-serif">';
	echo '<tr><td align="right" valign="top"><a title="lilbox Ver.'.$lilbox_version.'" href="http://www.websmith.co.jp/lilbox/" style="padding-right:1px;font-size:9px;';
	echo ($bg_color==$border_color)? 'color:'.$author_color.'"':'color:'.$bg_color.'"';
	echo ($target)? ' target="'.$target.'">':' target="_blank">';
	echo 'lilbox</a></td></tr></table>';
}
?>
</body>
</html>
<?php
if ( $cache_data ) {
	CleanUp( $data_path, $keep );
}
if ( $cache_img ) {
	CleanUp( $img_path, $keepImg );
}
?>
