
$.fn.popup = function(settings) {
		var p_flg = true;
		var p_set = false;
		var p_titl = false;
		var p_bfg = false;
		var p_hid = "";
		var p_stct = 0;
		var p_stpt = 0;
		var p_aypt = 0;
		var p_caller = 0;
		var p_elemay = [];
		var p_padding = 40;
		$(window).resize(function(){ _setPic(); _reback(); });
		settings = jQuery.extend({
			pop_speed: 'normal',
			pop_opacity: 0.8,
			pop_title: true,
			pop_top:'auto',
			pop_left:'auto',
			pop_back: true,
			pop_img:''
		}, settings);
		$(this).each(function(){p_elemay[p_elemay.length] = this;$(this).click(function(){if(!p_flg){_open(this);} return false;});});
		var imgary = (settings.pop_img == '') ? '' : settings.pop_img.split(',');
		_preloadimg(0);
		function _preloadimg(ct){
			if(ct<imgary.length){
				img = new Image();
				img.onload = function(){
					_preloadimg(++ct);
				}
				img.src = imgary[ct];
			}else{
				p_flg=false;
			}
		}
		function _open(el) {
			p_flg=true;
			p_caller = $(el);	
			theRel = $(p_caller).attr('type');
			galleryRegExp = /\[(?:.*)\]/;
			type = galleryRegExp.exec(theRel);
			p_set = false;
			p_stct = 0;
			
			if(($(p_caller).attr('href').indexOf('.swf') > 0 || $(p_caller).attr('href').indexOf('.txt') > 0) && type == "[text]"){
				$('body').append('<div class="popback"></div><div class="popHolder"><div class="popcontent"><div class="poploader"></div><div class="popContainer"></div><div class="popdetails"><div class="popnexttop"></div><p class="popdescription"></p><div class="popnextbtm"></div><a class="popclose" href="#"></a></div></div></div>');
				$('div.popHolder').addClass('popHolderimg');
				$('div.popdetails').addClass('popdetailsnom');
				$('p.popdescription').addClass('popdescriptionback');
				_reback();
				$('div.popHolder').css({'opacity': 0});	
				_setPic();
				$('div.poploader').show();
				_setIE(false);
				$('div.popback').css('opacity',0).fadeTo(settings.pop_speed,settings.pop_opacity,function(){
					$('div.popHolder').css('opacity',0).fadeIn(settings.pop_speed,function(){
						$('div.popHolder').attr('style','left:'+$('div.popHolder').css('left')+';top:'+$('div.popHolder').css('top')+';');
					});
				});
				if($(p_caller).attr('href').indexOf('.txt') > 0){
					$('div.popContainer').remove();
					_writeText(type);
				}else{
					_writeFlash(type);
				}
			}else{
				if(settings.pop_back){
					$('body').append('<div class="popback"></div>');
					$('body').append('<div class="popHolder"><div class="poptop"><div class="poptopleft"></div><div class="poptopmiddle"></div><div class="poptopright"></div></div><div class="popcontent"><div class="poploader"></div><div class="popContainer"></div><div class="popdetails"><div class="popnav"><a href="#" class="popprev">　</a><p class="popText">0/0</p><a href="#" class="popnext">　</a></div><p class="popdescription"></p><a class="popclose" href="#">　</a></div></div><div class="popbottom"><div class="popbottomleft"></div><div class="popbottommiddle"></div><div class="popbottomright"></div></div></div>');
					_reback();
				}else{
					$('body').append('<div class="popHolder"><div class="popcontent"><div class="poploader"></div><div class="popContainer"></div><div class="popdetails"><div class="popnav"><a href="#" class="popprev">　</a><p class="popText">0/0</p><a href="#" class="popnext">　</a></div><p class="popdescription"></p><a class="popclose" href="#">　</a></div></div></div>');
					$('div.popHolder').addClass('popHolderborder');
				}
				$('div.popcontent').addClass('popcontentnor');
				$('div.popdetails').addClass('popdetailsimg');
				$('p.popdescription').addClass('popdescriptionnom');
				$('body').append('<div class="popTitle"><div class="popTitleLeft"></div><div class="popTitleContent"></div><div class="popTitleRight"></div></div>');
				$('div.popHolder').css({'opacity': 0});	
				for(i = 0; i < p_elemay.length; i++){
					if($(p_elemay[i]).attr('type').indexOf(type) != -1){
						p_stct++;
						if(p_stct > 1) p_set = true;
					}
					if($(p_elemay[i]).attr('href') == $(el).attr('href')){
						p_stpt = p_stct;
						p_aypt = i;
					}
				}
				if(p_set){
					$('a.popprev').bind('click',function(){if(p_bfg && p_hid != 'prev'){_chgPic('prev');}return false;});
					$('a.popnext').bind('click',function(){if(p_bfg && p_hid != 'next'){_chgPic('next');}return false;});
				}else{
					$('div.popnav').hide();
				}
				_setPic();
				$('div.poploader').show();
				if(settings.pop_back){
					_setIE(false);
					$('div.popback').css('opacity',0).fadeTo(settings.pop_speed,settings.pop_opacity,function(){
						$('div.popHolder').css('opacity',0).fadeIn(settings.pop_speed,function(){
							$('div.popHolder').attr('style','left:'+$('div.popHolder').css('left')+';top:'+$('div.popHolder').css('top')+';');
						});
					});
				}else{
					$('div.popHolder').css('opacity',0).fadeIn(settings.pop_speed,function(){
						$('div.popHolder').attr('style','left:'+$('div.popHolder').css('left')+';top:'+$('div.popHolder').css('top')+';');
					});
				}
				if($(p_caller).attr('href').indexOf('.swf') > 0){
					_writeFlash(type);
				}else{
					$('div.popContainer').hide().append('<img id="popimage" src="" />');
					_preload();
				}
			}
		}
		showimage = function(cH,ctW,ctH){
			var scr = _getScroll();
			var win = _getWindow();
			$('div.popcontent').animate({'height':cH,'width':ctW},settings.pop_speed);
			if(settings.pop_top == "auto"){
				pTop = win['h']/2 + scr['t'] - ctH/2 + $('div.popTitle').height();
			}else{
				pTop = settings.pop_top;
			}
			if(settings.pop_left == "auto"){
				pLeft = win['w']/2 + scr['l'] - ctW/2;
			}else{
				pLeft = ($(document).width() /2) + settings.pop_left;
			}
			if(pTop < 0) pTop = $('div.popTitle').height();
			if(pLeft < 0) pLeft = 0;
			$('div.poploader').hide();
			$('div.popHolder').animate({'top': pTop,'left': pLeft,'width': ctW},settings.pop_speed,
			function(){
				$('div.popHolder').width(ctW);
//ナビ表示
				$('div.popdetails').fadeIn(settings.pop_speed);
				if(p_set){
					$('div.popnav').css('margin-left',0-parseInt(($('p.popText').width() + (parseInt($('p.popText').css('margin-left'))*2) + $('a.popprev').width() + $('a.popnext').width())/2));
				}
//タイトル表示
				if(settings.pop_title && p_titl){
					$('div.popTitle').css({
						'top' : $('div.popHolder').css('top'),
						'left' : parseInt($('div.popHolder').css('left')) + (p_padding/2),
						'display' : 'block'
					});
					$('div.popTitleContent').css('width','auto');
					if($('div.popTitle').width() > $('div.popHolder').width()){
						$('div.popTitleContent').css('width',$('div.popHolder').width() - ($('div.popTitleLeft').width() + $('div.popTitleRight').width() + p_padding));
					}else{
						$('div.popTitleContent').css('width','');
					}
					$('div.popTitle').animate({'top':(parseInt($('div.popHolder').css('top')) - $('div.popTitle').height()+1)},settings.pop_speed);
				}else{
					$('div.popTitle').hide();
				}
				$('div.popContainer').fadeIn(settings.pop_speed);
				if(settings.pop_back){
					$('div.popback').click(function(){_close();});
				}
				$('a.popclose').bind('click',function(){_close();return false;});
				p_bfg = true;
			});
		}
		function _close(){
			if(settings.pop_back){
				$('div.popHolder,div.popTitle').fadeOut(settings.pop_speed, function(){
					$('div.popback').fadeOut(settings.pop_speed, function(){
						$('div.popback,div.popHolder,div.popTitle').remove();
						_setIE(true);
						setTimeout(function(){p_flg = false;},500);
					});
				});
			}else{
				$('div.popHolder,div.popTitle').fadeOut(settings.pop_speed, function(){
					$('div.popHolder,div.popTitle').remove();
					setTimeout(function(){p_flg = false;},500);
				});
			}
		}
		function _reback(){
			if(settings.pop_back){
				$('div.popback').css({'height':$('body').height(),'width':$(document).width()});
			}
		}
		function _chgPic(str){
			p_bfg = false;
			if(str == 'prev') {
				p_aypt--;
				p_stpt--;
			}else{
				p_aypt++;
				p_stpt++;
			}
			$('div.popdetails').fadeOut(settings.pop_speed);
			$('div.popContainer').fadeOut(settings.pop_speed,function(){
				$('div.poploader').show();
				if($(p_caller).attr('href').indexOf('.swf') > 0){
					_writeFlash();
				}else{
					_preload();
				}
			});
			$('div.popTitle').animate({'top':parseInt($('div.popHolder').css('top'))},settings.pop_speed,function(){$(this).css('display','none');});
		}
		function _chkPos(){
			if(p_set){
				if(p_hid){
					$('a.pop'+p_hid+'.popdisabled').removeClass('popdisabled');
					p_hid = '';
				}
				if(p_stpt == p_stct) {
					$('a.popnext').addClass('popdisabled');
					p_hid = 'next';
				}else if(p_stpt == 1){
					$('a.popprev').addClass('popdisabled');
					p_hid = 'prev';
				}
				$('p.popText').text(p_stpt + '/' + p_stct);
				$c = $(p_elemay[p_aypt]);
				if($c.attr('rel')){
					$('p.popdescription').show().html($c.attr('rel'));
				}else if($(p_elemay[p_aypt]).find('p').html()){
					$('p.popdescription').show().html($c.find('p').html());
				}else{
					$('p.popdescription').hide();
				}
			}else{
				$c = $(p_caller);
				if($c.attr('rel')){
					$('p.popdescription').show().html($c.attr('rel'));
				}else if($c.find('p').html()){
					$('p.popdescription').show().html($c.find('p').html());
				}else{
					$('p.popdescription').html("").hide();
				}
			}
//タイトル
			if(settings.pop_title && ($c.attr('title') || $c.find('img').attr('alt'))){
				$('div.popTitle').css('display','block');
				sb = ($c.attr('title')) ? $c.attr('title') : $c.find('img').attr('alt');
				$('div.popTitle').css('width', sb.length * parseInt($('div.popTitleContent').css('font-size')) + parseInt($('div.popTitleLeft').css('width')) + parseInt($('div.popTitleRight').css('width')));
				$('div.popTitleContent').html(sb);
				$('div.popTitle').css('display','none');
				p_titl = true;
			}else{
				p_titl = false;
			}
		}
//表示配置
		function _setPic(){
			if($('div.popHolder').size() > 0){
				var scr = _getScroll();
				var win = _getWindow();
				if(settings.pop_top == "auto"){
					pTop = win['h']/2 + scr['t'] - $('div.popHolder').height()/2 + $('div.popTitle').height();
				}else{
					pTop = settings.pop_top + $('div.popTitle').height();
				}
				if(settings.pop_left == "auto"){
					pLeft = win['w']/2 + scr['l'] - $('div.popHolder').width()/2;
				}else{
					pLeft = $(document).width()/2 + settings.pop_left;
				}
				if(pTop < 0) pTop =  $('div.popTitle').height();
				if(pLeft < 0) pLeft = 0;
				$('div.popHolder').css({'top': pTop,'left': pLeft});
				$('div.popTitle').css({'top' : parseInt($('div.popHolder').css('top')) - $('div.popTitle').height() +1,'left' : parseInt($('div.popHolder').css('left')) + (p_padding/2)});
			}
		}
		function _preload(){
			_chkPos();
			img = new Image();
			img.onload = function(){
			$('div.popdetails').width(img.width); 
				ctW = img.width + p_padding;
				ctH = (cH = img.height + parseFloat($('div.popdetails').height()) + parseFloat($('div.popdetails').css('margin-top')) + parseFloat($('div.popdetails').css('margin-bottom'))) + p_padding;
				setTimeout('showimage('+cH+','+ctW+','+ctH+')',500);
			};
			$('#popimage').attr('src', img.src = ((p_set) ? $(p_elemay[p_aypt]) : $(p_caller)).attr('href').substring(1));
		}
		function _writeFlash(type){
			$('div.popContainer').hide().append('<div id="popimage"><br><br><br><br><p style="text-align:left;background-color:#FFFFFF;padding-left:40px;">動画をご覧いただくには、<br>最新の Adobe Flash Player が必要です。</p><br><A href="http://www.adobe.com/go/getflashplayer" target="_blank"><IMG src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" width="114" height="33" border="0" alt="FLASH PLAYERダウンロードへ"></A><br><br><br><br><br><br></div>');
			$('#popimage').hide();
			var hr = $(p_caller).attr('href').substring(1);
			var fp = hr.split(';');
			if(fp.length != 4){
				_close();
				return;
			}
			fp[2] = parseInt(fp[2]);
			fp[3] = parseInt(fp[3]);
			swfobject.embedSWF("http://uhb.jp/flview/flvStm.swf", "popimage", fp[2] , fp[3] , "8","/common/swf/expressInstall.swf",
			{
				'f': fp[0],
				'autoPlaySetting' : 'true',
				'skinSetting' : fp[1],
				'skinAutoHideSetting' : 'false',
				'autoSizeSetting' : 'true'
			},{'wmode' : 'transparent','menu' : 'false','allowScriptAccess' : 'sameDomain','quality' : 'high','salign' : 't'},{'align' : 'top'});
			_chkPos();
			
			if(type){
				$('div.popContainer').css({'position':'absolute','top':(400-fp[3]-p_padding)/2,'left':'10px','width':fp[2]});
				$('div.popdetails').css({'position':'absolute','top':'0px','left':fp[2] + parseFloat($('div.popdetails').css('margin-left')),'width':'400px'});
				ctW = fp[2] + parseFloat($('div.popdetails').width()) + p_padding;
				cH = 400-p_padding;
				ctH = 400;
			}else{
				$('div.popdetails').width(fp[2]);
				ctW = fp[2] + p_padding;
				cH = fp[3] + parseFloat($('div.popdetails').height()) + parseFloat($('div.popdetails').css('margin-top')) + parseFloat($('div.popdetails').css('margin-bottom'));
				ctH = cH + p_padding + parseFloat($('div.popTitle').height());
			}
			setTimeout('showimage(' + cH + ',' + ctW + ',' + ctH + ')',500);
		}
		function _writeText(){
			$('div.popdetails').css({
			'position':'absolute',
			'top':'0px',
			'left':'0px',
			'width':'400px'
			});
			_chkPos();
			ctW = parseFloat($('div.popdetails').width()) + p_padding;
			cH = 400-p_padding;
			ctH = 400;
			setTimeout('showimage('+cH+','+ctW+','+ctH+')',500);
		}
		function _setIE(flg){
			str = (flg) ? 'visible' : 'hidden';
			if($.browser.msie && $.browser.version == 6){
				if($('iframe').attr('name')){
					elem = parent.frames[$('iframe').attr('name')].document.getElementsByTagName('select');
					for(i=0;i<elem.length;i++){
						elem[i].style.visibility = str;
					}
				}
				$('select').css('visibility',str);
			}
		}
		function _getScroll(){
			l = document.body.scrollLeft || document.documentElement.scrollLeft || 0;
			t = document.body.scrollTop || document.documentElement.scrollTop || 0;
			return {t:t,l:l}
		}
		function _getWindow(){
			var h,w;
			if($.browser.opera){
				h = window.innerHeight;
				w = window.innerWidth;
			}else{
				h = $(window).height();
				w = $(window).width();
			}
			return {h:h,w:w}
		}
	};
