/**
 * Item shuffle
 * Version: 7 Oct 2008
 */
// Query String から配列を返す
function getParameter(str){
	var dec = decodeURIComponent;
	var par = new Array, itm;
	if(typeof(str) == 'undefined') return par;
	if(str.indexOf('?', 0) > -1) str = str.split('?')[1];
	str = str.split('&');
	for(var i = 0; str.length > i; i++){
		itm = str[i].split("=");
		if(itm[0] != ''){
			par[itm[0]] = typeof(itm[1]) == 'undefined' ? true : dec(itm[1]);
		}
	}
	return par;
}

// 配列から Query String を返す
function setParameter(par){
	var enc = encodeURIComponent;
	var str = '', amp = '';
	if(!par) return '';
	for(var i in par){
		str = str + amp + i + "=" + enc(par[i]);
		amp = '&'
	}
	return str;
}

/**
 * Item shuffle script
 * Version: 6 Mar 2009
 *
 * XHTMLは以下のようにセットしておくこと
 * <div id="ターゲット名">
 *  <ul>
 *   <li>アイテム</li>
 *   <li>アイテム</li>
 *    ...
 */ 
// 配列をシャッフル
function arrayShuffle(obj){
	var len = obj.length;
	var ary = obj.concat();
	var res = [];
	while(len) res.push(ary.splice(Math.floor(Math.random()*len--),1));
	return res;
}
// アイテムをシャッフル
function itemShuffle(target){

	// 空の配列を生成
	var itemArray = [];
	// アイテムを拾ってID名を配列へ格納する
	$(target+' ul li').map(function(i){ itemArray[i] = $(this).html();});
	// アイテムをシャッフルする
	var itemShuffledArray = arrayShuffle(itemArray);
	// 全体を非表示にしてからアイテムを配置して再度表示する
	$(target).fadeTo(200,0,function(){
		// 一度ボックスを空に
		$(this).empty();
		// divタグの子要素にulタグを追加
		$(this).append('<ul></ul>');
		$(itemShuffledArray).map(function(i){
			// ulタグの子要素にliタグと各アイテムを追加（配列分繰り返し）
			$(target+' ul').append('<li>'+itemShuffledArray[i]+'</li>');
		});
		// 終了したら表示
		$(this).fadeTo(200,1);
	});
}