/**
 * フォト用:共通関数群
 * 
 * DEPENDENCIES
 *  - /js/library/jquery.js
 * 
 * Author        : $Author: akasaka $
 * Last Modified : $Date: 2008/02/12 04:32:13 $
 * Version       : $Revision: 1.3 $
 * (c) CYBER AGENT.LTD
 */
var PERM_TYPE_CLASS={'0':'', '1':'closed', '2':'amember'};
// 外部JS呼出
function includeJs(path){
	document.writeln('<script type="text/javascript" src="'+path+'"></script>');
}

function html_entity_encode(str){
	if(!str) return '';
	str=str.replace(/&/g,'&amp;');
	str=str.replace(/\"/g,'&quot;');
	str=str.replace(/\'/g,'&#039;');
	str=str.replace(/</g,'&lt;');
	str=str.replace(/>/g,'&gt;');
	str=str.replace(/\n/g,'<br />');
	return str;
}

function html_entity_decode(str){
	if(!str) return '';
	str=str.replace(/&amp;/g, "&");
	str=str.replace(/&quot;/g, '"');
	str=str.replace(/&#039;/g, "'");
	str=str.replace(/&lt;/g, "<");
	str=str.replace(/&gt;/g, ">");
	str=str.replace(/<br \/>/g, "\n");
	return str;
}

// 指定された配列内にkeyが存在するか検索
function searchArray(key, getArray){
	var i;
	for(i in getArray){if (getArray[i] == key) return i;}
	return null;
}

/**
 * 文字列全置換（targetTextの、beforeTextをnewTextに置換）
 * 
 * @param String  targetText 対象のラジオボタン値
 * @param String  beforeText 対象のラジオボタン値
 * @param String  newText 対象のラジオボタン値
 */
function allReplace(targetText, beforeText, newText){
	var dummy1 = "";var dummy2 = targetText;
	while(true){ // 無限ループ。
		index = dummy2.indexOf(beforeText, 0);	// 検索
		if(index == -1){
			break;	// 検索文字列がなければループを抜ける
		}
		targetText = dummy2.replace(beforeText, newText); // 置換
		dummy1 += targetText.substring(0, index + newText.length);
		dummy2 =  targetText.substring(index + newText.length, targetText.length);
		// dummy1 は置換部分以前（置換部分含む）
		// dummy2 は置換部分以降 の文字列になる
	}
	// 置換後の文字列を返して終了
	return dummy1 + dummy2;
}

/**
 * URLパラメータを配列に変換取得
 * 
 * @param String  query URLクエリ
 */
function parseQuery(query){
	var Params = new Object ();
	if(!query) return Params; // return empty object
	var Pairs = query.split(/[;&]/);
	for( var i = 0; i < Pairs.length; i++ ){
		var KeyVal = Pairs[i].split('=');
		if(!KeyVal || KeyVal.length != 2) continue;
		var key = unescape( KeyVal[0] );var val = unescape( KeyVal[1] );
		val = val.replace(/\+/g, ' ');
		Params[key] = val;
	}
	return Params;
}

// 画像エラー発生時はnoimg表示
function imgError(img, size){
	var onimg = 'http://stat.ameba.jp/photo/img/noimg.gif';
	if(document.getElementsByTagName('body')[0].className.indexOf('bgSub') != -1){
		onimg = 'http://stat.ameba.jp/photo/img/noimg_bk.gif';
	}
	if(img == null) return;
	img.src = onimg;
	if(size == null || size == '') return;
	if(size == 'mini'){
		img.width='40';img.height='40';
		return;
	}
	if(size == 'small'){
		img.width='100';img.height='100';
		return;
	}
}

// ブックマーク追加
function addBookmark(title, url){
	if(window.sidebar){
	// Firefox
		window.sidebar.addPanel(title, url,'');
	}else if(window.opera && window.print){
		alert('このブラウザではブックマーク追加機能を使用できません。');
	} else if(document.all){
	//IE
		window.external.AddFavorite(url, title);
	} else {
		alert('このブラウザではブックマーク追加機能を使用できません。');
	}
}

// 検索：キーワード入力チェック
function checkKeyword(formObj,shakeId){
	if(formObj == null){return false;}
	if(shakeId == null){shakeId='searchArea';}
	if(formObj.keyword.value == ''){
		$('#'+shakeId).shake();
		return false;
	}
	formObj.submit();
	return true;
}

// 画像保護
function protectPhoto(){
	var self = this;
	this.targetPath = 'http://img0.photo';
	$("img[src^='"+this.targetPath+"']").contextmenu(function (){return false;});
	$("a[href^='"+this.targetPath+"']").contextmenu(function (){return false;});
	this.checkPath = function(path){
		var path = path || '';if(path=='') return true;
		var url = (path.toLowerCase().match(/^http:\/\/img[0-9]\.photo[0-9]\.ameba\.jp\//)) || '';
		if(url!='') return false;
		return true;
	}
}
