var $L = new function(){

	var method = {};
	//var docTest = document;
	
	/* --------------------------------------------- */
	// ▼ユーザーエージェント
	/* --------------------------------------------- */
	method.agent = new function(){
		var agentObj;
		var ua = navigator.userAgent.toLowerCase();
		return {
			agent : navigator.userAgent,
			isIE : ua.match(/msie/),
			isIE6 : ua.match(/msie\s6.0/),
			isIE7 : ua.match(/msie\s7.0/),
			isIE8 : ua.match(/msie\s8.0/),
			isFF : ua.match(/firefox/),
			isOpera : ua.match(/opera/),
			isSafari : ua.match(/safari/) && !ua.match(/chrome/),
			isChrome : ua.match(/safari/) && ua.match(/chrome/)
		}
		
	}
	
	
	/* --------------------------------------------- */
	// ▼イベントリスナー
	/* --------------------------------------------- */
	
	//条件分岐はJS解析時の一回のみにする
	var listener;

	if(document.addEventListener){
		listener=function(element,eventType,listener,capture){

			//イベントハンドラ
			var handler = function(event){
				listener.call(element,getEvent(event,element,instance))
			}
			
			//返却されるオブジェクト
			var instance = {
				isActive : true,
				remove : function(){
					element.removeEventListener(eventType,handler,capture);
					instance.isActive = false;
				},
				restart : function(){
					element.addEventListener(eventType,handler,capture);
					instance.isActive = true;
				}
			}
			
			element.addEventListener(eventType,handler,false);
			return instance;
		}
	}else if(document.attachEvent){
		listener = function(element,eventType,listener){
			 // 実際に呼ばれるイベントハンドラ
			 var handler = function(){
			         listener.call(element, getEvent(window.event, element, instance));
			 };
			 // 返却されるオブジェクト
			 var instance = {
			         isActive : true,
			         remove : function(){
			                 instance.isActive=false;
			                 element.detachEvent('on' + eventType, handler);
			         },
			         restart : function(){
			                 instance.isActive=true;
			                 element.attachEvent('on' + eventType, handler);
			         }
			 };
			 element.attachEvent('on' + eventType, handler);
			 return instance;
	        };
	}
	
	//▼リスナー用の関数
	var getEvent = function(e, element, listener){
		return {
			 //      property        :               value(DOM)                      || value(IE)
			 _event                  :               e,
			 //      イベント関連のプロパティ
			 type                    :               e.type,
			 target                  :               e.target                        || e.srcElement,
			 currentTarget   :               element,
			 relatedTarget   :               e.relatedTarget         || e.fromElement ? e.fromElement : e.toElement,
			 eventPhase              :               e.eventPhase            || e.srcElement == element ? 2 : 3,
			 //      座標関連のプロパティ
			 clientX                 :               e.clientX,
			 clientY                 :               e.clientY,
			 screenX                 :               e.screenX,
			 screenY                 :               e.screenY,
			 //      キーイベント関連のプロパティ
			 altKey                  :               e.altKey,
			 ctrlKey                 :               e.ctrlKey,
			 shiftKey                :               e.shiftKey,
			 keyCode                 :               e.keyCode,
			 //      イベントがkeydownの場合、キー名を返却します。
			 get_keyChar             :               function(){
			                                                         return KeyEvent.get_keyChar(this);
			 },
			 //      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
			 //      DOM互換のデフォルト動作抑止メソッドおよびイベント伝播抑止メソッドです。
			 //      stopは、preventDefaultとstopPropagationを同時に実行します。
			 //      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
			 preventDefault  :               function(){
			                                                         e.preventDefault ? e.preventDefault() : e.returnValue = false ;
			 },
			 stopPropagation :               function(){
			                                                         e.stopPropagation ? e.stopPropagation() : e.cancelBubble = true;
			 },
			 stop                    :               function(){
			                                                         this.preventDefault();
			                                                         this.stopPropagation();
			 }
		}
	}

	/* --------------------------------------------- */
	// ▼ get_geom　//windowのサイズを返す
	/* --------------------------------------------- */
	method.get_geom = function(){
		var e	=	document.documentElement;
		var b	=	document.body;
		var sW	=	'scrollWidth';
		var sH	=	'scrollHeight';
		var cW	=	'clientWidth';
		var cH	=	'clientHeight';
		var sL	=	'scrollLeft';
		var sT	=	'scrollTop';
		var flag = (e[cW] == 0);
		//	評価中
		return {
			width			:	flag ?	Math.max(b[sW], b[cW])	:	Math.max((e[sW]	||	b[sW]), (e[cW] || b[cW])),
			height			:	flag ?	Math.max(b[sH], b[cH])	:	Math.max((e[sH]	||	b[sH]), (e[cH] || b[cH])),
			top				:	b[sT] 												||	e[sT],
			left			:	b[sL]												||	e[sL],
			clientWidth		:	flag ?	b[cW]					:	(e[cW]||b[cW]),
			clientHeight	:	flag ?	b[cH]					:	(e[cH]||b[cH])
		};
	}
	

	/* ------------------------------------------------*/
	//Cookieコンストラクタ
	/* ------------------------------------------------*/
	method.Cookie = function(name){
		this.$name = name;
		var allcookies = document.cookie;
		if(allcookies == '') return;
		
		var cookies = allcookies.split('; ');
		var cookie = null;
		for(var i = 0;i < cookies.length;i++){
			if(cookies[i].substring(0,name.length + 1) == (name + '=')){
				cookie = cookies[i];
				break;
			}
		}
		if(cookie == null) return;
		
		var cookieval = cookie.substring(name.length+1);
		
		var a = cookieval.split('&');
		for(var i = 0;i < a.length;i++){
			a[i] = a[i].split(':');
		}
		for(var i = 0;i < a.length;i++){
			this[a[i][0]] = decodeURIComponent(a[i][1]);
		}
	}

	method.Cookie.prototype.store = function(daysToLive,path,domain,secure){
		
		var cookieval = '';
		for(var prop in this){
			if((prop.charAt(0) == '$') || (typeof this[prop]) == 'function'){continue};
			if(cookieval != '') cookieval += '&';
			cookieval += prop + ':' + encodeURIComponent(this[prop]);
		}
		
		var cookie = this.$name + '=' +cookieval;
		if(daysToLive || daysToLive ==0){
			cookie += ';max-age=' + (daysToLive*24*60*60);
		}
		if(path) cookie += ';path=' + path;
		if(domain) cookie += ';domain=' + domain;
		if(secure) cookie += ';secure=' + secure;
		document.cookie = cookie;
		
	}
	method.Cookie.prototype.remove = function(path,domain,secure){
		for(var prop in this){
			if(prop.charAt(0) != '$' && typeof this[prop] != 'function')
			delete this[prop]
		}
		this.store(0,path,domain,secure)
	}

	method.addEventListener = listener
	return method;
}


var openMethod = function(){
		newWin=window.open("","NewWindow","toolbar=false,width=517px,height=698px,scrollbars=yes");
		document.search.submit();
		newWin.focus(); 
	};

var $digio = new function(){
	var obj = {};
	
	obj.m_open = function(fileurl){
		var foo = window.open(fileurl,'subwindow','width=320,height=240,scrollbars=no');
		foo.focus();
	}
	
	/* -------------------------------------------------------------------- */
	// メインFlashをインポート
	/* -------------------------------------------------------------------- */
	var VERSION = 9;
	obj.importMainFlash = function(){
		var so = new SWFObject("/includes/swf/mainflash.swf?" + new Date().getTime(), "FlashArea", "565", "428", "9", "#FFFFFF");
		//so.addParam("wmode", "transparent");
		/*
		for(var prop in so.installedVer){
			console.log(prop+':'+so.installedVer[prop])
		}*/
		if(so.installedVer.major < VERSION){
			$("#FlashArea").html('<a href="http://get.adobe.com/jp/flashplayer/" target="_blank"><img src="/includes/images/flashplayer.gif" alt="FlashPlayerをインストールしてください" /></a>')
		}else{
			so.write("FlashArea");
		}
	};
	
	obj.openWindow = function(fileurl,w,h,scroll,windowName){
		var wn = (!!windowName)?windowName:"window";
		var sc = (!scroll)?"yes":"no";
		var foo = window.open(fileurl,wn,'width='+w+',height='+h+',scrollbars='+sc);
		foo.focus();
	}
	
	var getHTML = function(name){
		var src = '';
		switch(name){
			case 'search':
				src+='<div class="searchBox">';
				src+='<form onsubmit="submitAndOpen();" target="NewWindow" action="http://www.stardigio.com/star/search.do" method="post" id="DigioSearchFormWrapper">';
				//src+='<form id="DigioSearchFormWrapper">';
				src+='<ul>';
				src+='<li class="radioBox">';
				src+='<input type="radio" checked="checked" value="2" name="kind">アーティスト名';
				src+='<input type="radio" value="1" name="kind">曲名';
				src+='</li>';
				src+='<li class="textBox"><input type="text" onclick="this.value=\'\';" value="検索文字を入力してください。" name="text"></li>';
				src+='<li class="selectBox">';
				src+='<select name="types">';
				src+='<option value="1">部分一致</option>';
				src+='<option value="3">前方一致</option>';
				src+='</select>';
				src+='</li>';
				src+='<li class="searchBtn">';
				src+='<input border="0" type="image" onclick="javascript:openMethod();return false" alt="検索" value="submit" src="/includes/images/btn_search.gif">';
				//src+="<a href=\"javascript:$digio.openWindow('/includes/page/search_mainte.html','550','550')\"><img src=\"/includes/images/btn_search.gif\" /></a>";
				src+='</li>';
				src+='</ul>';
				src+='<input type="hidden" value="1" name="term">';
				src+='</form>';
				src+='</div>';
				break;
			case 'requestLine':
				src+='<div class="requestLine">';
				src+='<p><img src="/includes/images/footer/request_line.gif" alt="リクエストライン" /></p>';
				src+='<p class="mail"><a href="mailto:digio@dkkaraoke.co.jp">digio@dkkaraoke.co.jp</a></p>';
				src+='<p class="textData">番組名を明記の上、<br />ご意見・ご感想をお寄せください。<br />お問い合せは【<a href="/contact/">お問い合せ</a>】ページを<br />';
				src+='リクエストは【<a href="/request/">リクエスト</a>】ページよりお願いします。</p>';
				src+='</div>';
				break;
			default : 
				src='error:パラメータ[name]が不正です。';
				break;
		};
		return src;
	};
	
	
	/* -------------------------------------------------------------------- */
	// HTML要素をインポート
	/* -------------------------------------------------------------------- */
	obj.importHTML = function(idName,obj){
		var argObj = (!!obj)?obj:{};
		var isRequestLine = (argObj.rLine != undefined)?argObj.rLine:true;
		
		var src=''
		switch(idName){
			case '#Header':
				src+='<div class="container950 clearfix">';
				src+='<h1 class="logo"><a href="/"><img src="/includes/images/logo.gif" alt="STAR digio" /></a></h1>';
				src+='<div class="headLink">';
				src+='<ul class="clearfix">';
				src+='<li><a href="/request/"><img src="/includes/images/btn_request.gif" alt="リクエスト" /></a></li>';
				src+='<li><a href="/faq/"><img src="/includes/images/btn_faq.gif" alt="よくある質問" /></a></li>';
				src+='<li><a href="/contact/"><img src="/includes/images/btn_mail.gif" alt="ご意見・お問い合わせ" /></a></li>';
				src+='</ul>';
				src+='</div>';
				src+=getHTML('search');
				src+='</div>';
				break;
			case '#SearchBox':
				src +=getHTML('search');
				break;
			case '.returnTop':
				src+='<span class="boxlink"><a href="/">トップ</a></span>';
				break;
			case '#SideNavi':
				src+='<ul class="genreNavi">';
				src+='<li class="ch400"><a href="/station400/">音楽＆トークバラエティ</a></li>';
				src+='<li class="jmusic_new"><a href="/channel/jmusic_new.html">邦楽新譜</a></li>';
				src+='<li class="jmusic"><a href="/channel/jmusic.html">邦楽</a></li>';
				src+='<li class="kayouenka"><a href="/channel/kayouenka.html">歌謡演歌</a></li>';
				src+='<li class="wmusic_new"><a href="/channel/wmusic_new.html">洋楽新譜</a></li>';
				src+='<li class="wmusic"><a href="/channel/wmusic.html">洋楽</a></li>';
				src+='<li class="dancesoul"><a href="/channel/dancesoul.html">ダンス＆ソウル</a></li>';
				src+='<li class="mix"><a href="/channel/mix.html">洋・邦ミックス</a></li>';
				src+='<li class="jazz"><a href="/channel/jazz.html">ジャズ</a></li>';
				src+='<li class="classic"><a href="/channel/classic.html">クラシック</a></li>';
				src+='<li class="relax"><a href="/channel/relax.html">リラックス音楽</a></li>';
				src+='<li class="world"><a href="/channel/world.html">ワールドミュージック</a></li>';
				src+='<li class="bgm"><a href="/channel/bgm.html">BGM</a></li>';
				src+='<li class="fm"><a href="/channel/fm.html">地上波・FM放送</a></li>';
				src+='</ul>';
				src+='<p><a href="/channel/lineup.html"><img src="/includes/images/sidebar/lineup.gif" alt="プログラムラインナップ" /></a></p>';
				src+='<ul class="digioLink">';
				src+='<li><a href="/channel/all_number.html"><img src="/includes/images/sidebar/linkimage_100.gif" alt="STAR digio 100チャンネル一覧" /></a></li>';
				src+='<li><a href="/about/"><img src="/includes/images/sidebar/linkimage_about.gif" alt="STAR digioとは？" /></a></li>';
				src+='<li><a href="/howto/"><img src="/includes/images/sidebar/linkimage_howto.gif" alt="視聴方法・料金" /></a></li>';
				src+='<li><a href="/station400/free_listenning.html"><img src="/includes/images/sidebar/linkimage_free.gif" alt="無料試聴" /></a></li>';
				src+='<li><a href="/mobile/"><img src="/includes/images/sidebar/linkimage_mobile.gif" alt="STAR digio携帯サイト" /></a></li>';
				src+='</ul>';
				break;
			case '#Footer':
				src+='<div class="container950">';
				if(isRequestLine){
					src+=getHTML('requestLine');
				}
				src+='<div class="linkimage clearfix">';
				src+='<div class="dk">';
				src+='<ul class="clearfix">';
				src+='<li><a href="http://www.clubdam.com/sk/" target="_balnk"><img src="/includes/images/footer/linkimage_sk.gif" alt="STAR karaoke" /></a></li>';
				src+='<li><a href="http://www.clubdam.com/eco/" target="_balnk"><img src="/includes/images/footer/linkimage_eco.gif" alt="EcoMusic TV" /></a></li>';
				src+='<li><a href="http://www.dkkaraoke.co.jp/business/eisei/stardam/stardam.html" target="_balnk"><img src="/includes/images/footer/linkimage_sdam.gif" alt="スターダム" /></a></li>';
				src+='<li><a href="http://www.dkkaraoke.co.jp/" target="_balnk"><img src="/includes/images/footer/linkimage_dkkaraoke.gif" alt="（株）第一興商" /></a></li>';
				src+='</ul>';
				src+='</div>';
				src+='<div class="clubdam">';
				src+='<h3><a href="http://www.clubdam.com/" target="_blank"><img src="/includes/images/footer/linkimage_clubdam_02.gif" alt="clubDAM.com" /></a></h3>';
				src+='<ul class="clearfix">';
				src+='<li class="download"><a href="http://www.clubdam.com/app/karaokeDownload/index.do" target="_blank"><img src="/includes/images/footer/linkimage_download.gif" alt="カラオケ音源ダウンロード" /></a></li>';
				src+='<li class="karadam"><a href="http://www.clubdam.com/app/karaokeAtDam/index.do" target="_blank"><img src="/includes/images/footer/linkimage_karadam.gif" alt="karaoke@dam" /></a></li>';
				src+='<li class="kashi"><a href="http://www.clubdam.com/app/damKashi/index.do" target="_blank"><img src="/includes/images/footer/linkimage_kashi.gif" alt="DAM歌詞" /></a></li>';
				src+='</ul>';
				src+='</div>';
				src+='';
				src+='</div>';
				src+='<ul class="textLink">';
				src+='<li><a href="/sitemap/">サイトマップ</a></li>';
				src+='<li><a href="/link/">リンク</a></li>';
				src+='<li><a href="http://www.dkkaraoke.co.jp/" target="_blank">企業情報</a></li>';
				src+='<li><a href="/user/">ご利用にあたって</a></li>';
				src+='<li><a href="/privacy/">プライバシーポリシー</a></li>';
				src+='<li class="last"><a href="/kojin/">個人情報の取り扱いについて</a></li>';
				src+='</ul>';
				src+='<p class="copy">Copyright &copy; 2010 DAIICHIKOSHO Co.,Ltd. All Right Reserved.</p>';
				src+='</div>';
				break;
			default :
				src+='error:パラメータ[idName]が不正です。';
				break;
		};
		$(idName).html(src);
	}
	
	return obj;
}





