/**************************************************
 * 対象画像に処理を加える
 * @return
 **************************************************/
function runIphoneJS() {
	var object;
	var canvas;
	var context;
	var radius;
	var sradius		= null;
	var offset = 0;
	j$('img.iphone').each(function(){
		object	= this.parentNode;
		canvas	= document.createElement('canvas');

		var flgExec = true;
		if(!canvas.getContext){ flgExec = false; }
		if(this.width<16 || this.height<16){ flgExec = false; }

		if(flgExec){
			//============================================================
			// canvasのコンテキスト初期化
			//============================================================
			context = canvas.getContext("2d");
			context.clearRect(0,0,canvas.width,canvas.height);

			//============================================================
			// イメージオブジェクトをcanvasに置き換える
			//============================================================
			object.replaceChild(canvas, this);

			//============================================================
			// canvasに元画像のDOM情報を設定
			//============================================================
			canvas.id				= this.id;
			canvas.src				= this.src;
			canvas.alt				= this.alt;
			canvas.title 			= this.title;
			canvas.className		= this.className.getPopString('iphone');
			canvas.style.cssText	= this.style.cssText;
			canvas.style.width		= this.width + 'px';
			canvas.style.height		= this.height + 'px';
			canvas.height			= this.height;
			canvas.width			= this.width;
			if(this.getAttribute('onclick')!='') canvas.setAttribute('onclick',this.getAttribute('onclick'));

			//============================================================
			// 丸め範囲
			//============================================================
			var rad = Math.max(Math.round(Math.min(canvas.width, canvas.height) / 2 * 0.25), 4);
			rad = Math.round(rad / 4) * 4;
			offset	= rad / 4;
			sradius	= rad * 0.75;
			radius	= sradius;
			sradius	= radius * 0.75;

			//============================================================
			// 影をつける
			//============================================================
			var info = {
					x:	0,
					y:	0,
					w:	canvas.width,
					h:	canvas.height,
					r:	rad,
					a:	0.5
			};
			addShadow(context, info);

			//============================================================
			// 設定値保存
			//============================================================
			context.save();

			//============================================================
			// 描画範囲を画像のサイズのみにし、角の丸い矩形にする
			//============================================================
			var cDivHeight	= (canvas.height / 2);
			var cSubOffset	= (offset * 2);
			var inforr = {
					x:	offset,
					y:	0,
					w:	canvas.width - cSubOffset,
					h:	canvas.height - cSubOffset,
					r:	radius
			};
			rr(context, inforr);
			context.clip();

			//============================================================
			// 画像の上にフィルターを掛ける
			//============================================================
			// 元画像
			context.drawImage(this, offset, 0, canvas.width - cSubOffset, canvas.height - cSubOffset);
			// 明るい部分(上部)
			drawBright(context, {x:cSubOffset, y:offset, w:canvas.width - (2 * cSubOffset), h:cDivHeight - offset, r:sradius, a:0.6});
			// 暗い部分(下部)
			drawDark(context, {x:offset, y:cDivHeight - offset, w:canvas.width - cSubOffset, h:cDivHeight - offset, r:sradius, a:0.4});
			// 枠
			drawFrame(context, {x:offset, y:0, w:canvas.width - cSubOffset, h:canvas.height - cSubOffset, r:radius, a:0.25});
			// 可視属性をvisibleに変更
			canvas.style.visibility = 'visible';

			//============================================================
			// 設定値復元
			//============================================================
			context.restore();
		}
	});
}
/**************************************************
 * 指定の文字列以外を取得（半角スペース区切り）
 * @param popStr
 * @return
 **************************************************/
String.prototype.getPopString = function(popStr){
	var ary = this.split(' ');
	var res = new Array();
	var cnt = 0;
	for(var i=0; i<ary.length; i++){
		if(ary[i]==popStr){ continue; }
		res[cnt++] = ary[i];
	}
	return res.join(' ');
};
/**************************************************
 * 実行してよいブラウザかどうか
 * @return
 **************************************************/
function isExecOK(){
	if(-1<navigator.appName.indexOf('Microsoft Internet Explorer', 0) && -1<navigator.userAgent.indexOf('MSIE', 0)){
		return false;
	}
	if(-1<navigator.appName.indexOf('Netscape', 0) && -1<navigator.userAgent.indexOf('Chrome', 0)){
		return false;
	}
	return true;
}
/**************************************************
 * 処理開始(onloadで使用する)
 * @return
 **************************************************/
function startIphoneJS(){
	if(isExecOK()){
		runIphoneJS();
	}
}

