//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
// 
// 事例紹介ライブラリ
//
// update　：　2011.08.31
// 
// 依存関係　：　jquery
//               main.js
//               swfobject_v2.2.js
//               K8iUrl
// 
//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
clsPortfolioLib = new Object();
clsPortfolioLib = function(){

  //********************************************************
  //プロパティ
  //********************************************************
  //デバッグフラグ
  this.blnDebug = 0;
  
  //インスタンス名
  this.strInsName = "pl";
  
  //XMLオブジェクト
  this.objXML = new Object();
  
  //パス
  this.strXmlPath = "/data/getxml.php";
  this.strImgPath = "/data/img/";
  
  //初期表示事例
  this.strDefIdx = "01";

	// 非表示class名
	this.clsHide = "hide";

	// FLASHを表示するか？（true | false）
	this.show_flg = true;
  
  //********************************************************
  //コンストラクタ
  //********************************************************
  // jqueryの『$』を置き換える
	if(! $plj) { var $plj = jQuery; }
  
  //開発環境用パス設定
  if (document.location.href.match(/192\.168\.15\.24/)) {
    this.strXmlPath = "/data/getxml.xml";
  }
  
  //XMLキャッシュ対策
  this.strXmlPath += "?cash=" + (new Date()).getTime();

	// URL
	this.url_o = new K8iUrl();

  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  //
  // 共通メソッド
  //
  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++

  //********************************************************
  //初期化処理
  //********************************************************
  this.init = function(){

    //$plj(document).ready(function(){ 
    $plj.event.add(window, 'load', function(){
      //デバッグウィンドウ生成
      if (this.blnDebug){
        var objDebugWindow = document.createElement("div");
        objDebugWindow.id = "DebugArea";
        objDebugWindow.innerHTML ="hogehoeg"
        document.body.appendChild(objDebugWindow);
        $plj("#DebugArea").css({
          position:"absolute", 
          top:"0px", 
          left:"0px", 
          "z-index":"9999", 
          width:"auto", 
          border:"1px solid #999999", 
          background:"#ffffff", 
          opacity: "0.8"
        });
      }
      
      //初期表示事例取得
      var strParam = (pl.getParam())["portfolio"];
      if( (strParam != "") && (strParam != undefined)  ) {
        pl.strDefIdx = strParam;
      }

      //ウィンドウロードのタイミングでXML取得
      $plj.ajax({ type : "GET", url : pl.strXmlPath, dataType:"xml", 
        success : pl.setXml, error : pl.setError});
        
    });
  }
  
  //********************************************************
  //デバッグ
  //********************************************************
  this.debug = function(vstrValue){
    if (!$plj("#DebugArea")){ return; }
    $plj("#DebugArea").html(vstrValue);
  }

  //********************************************************
  //GETパラメータ取得
  //********************************************************
  this.getParam = function(){
    
    var strQuery = window.location.search.substring(1);
    var astrParams = strQuery.split('&');
    var aobjQuery = new Array();
    
    for (var i=0; i<astrParams.length; i++) {
      if (astrParams[i].indexOf('=') < 0){ continue; }
      var aobjTemp = astrParams[i].split('=');
      aobjQuery[aobjTemp[0]] = aobjTemp[1];
    }
    
    return aobjQuery;
  }
    
  //********************************************************
  //XML取得処理
  //********************************************************
  this.setXml = function(xml){
    pl.objXML = xml;
    pl.showList();
  }

  //********************************************************
  //XML取得エラー
  //********************************************************
  this.setError = function(XMLHttpRequest, textStatus, errorThrown){
    //alert(textStatus);
  }

  //********************************************************
  //リスト表示
  //********************************************************
  this.showList = function(){
    
    var strBrowser = navigator.userAgent;

		if ( this.url_o.getParamObj() && this.url_o.getParamObj()['flash'] === 'none' ) {  // HTML版のとき
			
			// body class
			$plj('body').addClass('noFlash');
			$plj('body').removeClass('hasFlash');

			$plj("body.noFlash .hasFlash").addClass( this.clsHide );  // 非表示
			$plj("body.noFlash .noFlash").removeClass( this.clsHide );  // 表示

		} else {  // FLASH版のとき

			// body class
			$plj('body').removeClass('noFlash');
			$plj('body').addClass('hasFlash');

			$plj("body.hasFlash .hasFlash").removeClass( this.clsHide );  // 表示
			$plj("body.hasFlash .noFlash").addClass( this.clsHide );  // 非表示

		}

    //======================================================
    //iPad
    //======================================================
		/*
    if (strBrowser.indexOf("iPad") != -1){
			一旦、iPadとの振り分けなしで、コメントアウト（2011.08.29）
      //iPad版
      this.showListIPad();
      
      //事例初期表示
      this.showDataIPad(this.strDefIdx);
    }
    */
    //======================================================
    //PC
    //======================================================
		/*
    else{
			*/
      //FLASH版
      this.showListFLASH();
      
      //HTML版
      this.showListHTML();

      //事例初期表示
      this.showDataHTML(this.strDefIdx);
		/*
    }
    */
    //======================================================
    //大画像プリロード
    //======================================================
    this.preImgLoad();
  }

  //********************************************************
  //画像プリロード
  //********************************************************
  this.preImgLoad = function(){
    
    if (!$plj("#PortfolioTitle")){ return; }
    
    var objItem = $plj(this.objXML).find("item");
    for (var i=0; i<objItem.length; i++){
      $plj("<img>").attr("src", this.strImgPath + $plj(objItem[i]).find("img_l").text());
    }
  }

  //********************************************************
  //詳細へ遷移
  //********************************************************
  this.linkDetail = function(vstrIndex){

    var strDevice = "";
    if (document.location.href.match(/\/ipad\//)) {
      strDevice = "/ipad";
    }
    location.href = strDevice + "/portfolio/?portfolio=" + vstrIndex;
  }


  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  //
  // PC版
  //
  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  //********************************************************
  //リスト表示（FLASH版）
  //********************************************************
  this.showListFLASH = function(){

    //出力エリアなしの場合は処理しない
    var objWorkList = document.getElementById("FlashWorklistArea");
    if (!objWorkList){ return; }

		// HTML版のときは処理しない
		if( $plj("body").hasClass("noFlash") ) { return; }

    //出力情報定義
    var objSwfInfo = {
      "top"     : {"src":"/flash/portfolio.swf", "width":"635", "height":"168" },
      "detail"  : {"src":"/portfolio/flash/portfolio.swf", "width":"860", "height":"86" }
    }
    
    //FLASH出力エリア生成
    var strHTML = "";
    var strSwfType = "";

		//alert( this.url_o.getUrl() );  // DBUG
		if ( this.url_o.getUrl().match(/\/portfolio\//) ) {  // 実績・導入事例ページのとき
      strSwfType = "detail";
		}else{  // サイトトップページのとき
			strSwfType = "top";
		}
		
		// 非表示にしていた代替HTMLを表示にする（JS無効時には非表示）
		$plj("#FlashPortfolio").html( $plj("#FlashPortfolio .altHtml").html() );

    //FLASH出力
    var strSwfPath = objSwfInfo[strSwfType]["src"] + "?cash=" + (new Date()).getTime();
    var strSwfWidth = objSwfInfo[strSwfType]["width"];
    var strSwfHeight = objSwfInfo[strSwfType]["height"];
    var swfobjectOpt = {
    	flashvars   : { xmlpath: this.strXmlPath, imgpath: this.strImgPath, defidx : this.strDefIdx },
    	params      : {	base: ".", allowScriptAccess:"always" },
    	attributes  : {}
    };

		if(this.show_flg) {
			swfobject.embedSWF(
				strSwfPath,
				"FlashPortfolio",
				strSwfWidth, strSwfHeight, "9.0.0", null,
				swfobjectOpt.flashvars,
				swfobjectOpt.params,
				swfobjectOpt.attributes
				);
		}

  }

  //********************************************************
  //リスト表示（HTML版）
  //********************************************************
  this.showListHTML = function(){

    //出力エリアなしの場合は処理しない
    var objWorkList = document.getElementById("HtmlWorklistArea");
    if (!objWorkList){ return; }

		// FLASH版のときは処理しない
		if( $plj("body").hasClass("hasFlash") ) { return; }

		if ( (! this.url_o.getParamObj() ) || (this.url_o.getParamObj()['flash'] !== 'none' ) ) {  // FLASH版のとき
			$plj("#HtmlWorklistArea").css( { display : 'none' } );  // 非表示

			$plj("body.noFlash #FlashWorklistArea").addClass( this.clsHide );  // 非表示

			return;
    }
    
    //オブジェクト取得
    var objListItems = ($plj(this.objXML).find("item"));

    //HTML生成
    var strClass = "";
    var strHTML = "";
    strHTML += "<ul class=\"clearfix\">";
    for (var i=0; i<objListItems.length; i++){
      
      ((i+1)%6) ? strClass="class=\"\"" : strClass="class=\"lastItemCol\"";
      objThisItem = objListItems[i];
      strTitle = $plj(objThisItem).find("title").text();
      strImg = "<img src=\"" + this.strImgPath + $plj(objThisItem).find("img_s").text() + "\" alt=\"" + strTitle + "\" width=\"110\" height=\"80\" />";
      
      strHTML += "<li " + strClass + ">";
      strHTML += "<span class=\"imgArea\">";
      strHTML += "<a href=\"javascript:void(0);\" onclick=\"" + this.strInsName + ".showDataHTML('" + $plj(objThisItem).find("idx").text() + "')\">" + strImg + "</a>";
      strHTML += "</span>";
      strHTML += "<span class=\"txtArea\">";
      strHTML += "<a href=\"javascript:void(0);\" onclick=\"" + this.strInsName + ".showDataHTML('" + $plj(objThisItem).find("idx").text() + "')\">" + strTitle + "</a>";
      strHTML += "</span>";
      strHTML += "</li>";
    }
    strHTML += "</ul>";
    
    //出力
    $plj("#HtmlWorklistArea").html(strHTML);

  }

  //********************************************************
  //事例表示処理（PC版）
  //********************************************************
  this.showDataHTML = function(vstrIndex){
    
    //出力エリアなしの場合は処理しない
    var objWorkList = document.getElementById("PortfolioTitle");
    if (!objWorkList){ return; }
    
    //インデックス取得
    var intIndex = 0;
    var objItem = $plj(this.objXML).find("item");
    for (var i=0; i<objItem.length; i++){
      if (parseInt($plj(objItem[i]).find("idx").text()) != parseInt(vstrIndex)){ continue;}
      var objThisItem = objItem[i];
      break;
    }

    //リンクタグ生成
    var strLink = "";
    if($plj(objThisItem).find("link").text() == "※公開終了"){
      strLink = "※公開終了";
      $plj("#PortfolioLink").removeClass("link01OtherWin");
    }else{
      strLink = "<a href=\"" + $plj(objThisItem).find("link").text() + "\" target=\"_blank\">" + $plj(objThisItem).find("link").text() + "</a>";
      $plj("#PortfolioLink").addClass("link01OtherWin");
    }
    
    //タイトル文字列生成
    var strTitle = $plj(objThisItem).find("title").text();
    
    //画像タグ列生成
    var strImg = "<img src=\"" + this.strImgPath + $plj(objThisItem).find("img_l").text() + "\" width=\"570\" height=\"444\" alt=\"" + strTitle + "\" />";

    $plj("#PortfolioLink").html(strLink);
    $plj("#PortfolioImage").html(strImg);
    $plj("#PortfolioTitle").html(strTitle);
    $plj("#PortfolioDesc").html($plj(objThisItem).find("description").text());
    $plj("#PortfolioClient").html("（" + $plj(objThisItem).find("client").text() + "）");
    $plj("#PortfolioContents").html($plj(objThisItem).find("contents").text());
    
    $plj("#PortfolioImage").hide();
    $plj("#PortfolioImage").fadeIn(750);
    
    var strWorks = "";
    var objWorks = $plj(objThisItem).find("record");
    strWorks += "<ul class=\"icons\">";
    for (var i=0; i<objWorks.length; i++){
      strWorks += "<li>" + $plj(objWorks[i]).text() + "</li>";
    }
    strWorks += "</ul>";
    $plj("#PortfolioWorks").html(strWorks);
  }


  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  //
  // iPad版
  //
  //++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  //********************************************************
  //リスト表示（iPad版）
  //********************************************************
  this.showListIPad = function(){

    //出力エリアなしの場合は処理しない
    var objWorkList = document.getElementById("IPadWorklistArea");
    if (!objWorkList){ return; }
    
    //トップ判定
    var blnTop = 0;
    if (!document.location.href.match(/\/ipad\/portfolio\//)) {
      blnTop = 1;
    }
    
    //オブジェクト取得
    var objListItems = ($plj(this.objXML).find("item"));

    //HTML生成
    var strClass = "";
    var strHTML = "";
    strHTML += "<ul>\n";
    for (var i=0; i<objListItems.length; i++){
      
      objThisItem = objListItems[i];
      strTitle = $plj(objThisItem).find("title").text();
      strImg = "<img src=\"" + this.strImgPath + $plj(objThisItem).find("img_s").text() + "\" alt=\"" + strTitle + "\" width=\"110\" height=\"80\">";
      
      var strScript = this.strInsName + ".showDataIPad";
      if (blnTop){ strScript = this.strInsName + ".linkDetail"; }
      strScript += "('" + $plj(objThisItem).find("idx").text() + "')";
      
      strHTML += "<li>";
      strHTML += "<a href=\"javascript:void(0);\" onclick=\"" + strScript + "\">";
      strHTML += strImg + strTitle;
      strHTML += "</a>";
      strHTML += "</li>\n";
    }
    strHTML += "</ul>\n";

    //出力
    $plj("#IPadWorklistArea").html(strHTML);

    //イベントアサイン
    $plj(function(){
    	$plj(window).bind("orientationchange",function(){ pl.setIPasScroll(); });
    	$plj(document).bind("DOMContentLoaded",function(){ pl.setIPasScroll(); });
    })
    
    //幅高さ調整
    this.setIPasScroll();
    
  }
  this.setIPasScroll = function(){
    
    //トップページ判定
    var blnTop = 0;
    if (!document.location.href.match(/\/ipad\/portfolio\//)) {
      blnTop = 1;
    }
    
  	//高さ調整
    if (blnTop){ 
      $plj("#scrollArea").height(window.innerHeight - 73); 
    	var myScrollH = new iScroll("inner");
    }
    
    //幅調整
    var intOneWidth = 156;
    if (blnTop){ intOneWidth = 148; }
  	var widthX = $plj("li", "#IPadWorklistArea").length * intOneWidth + 10;
  	$plj("#IPadWorklistArea").css({width : widthX + "px"});

  	//スクロールオブジェクト定義
  	var myScrollW = new iScroll("IPadWorklistArea");
  }

  //********************************************************
  //事例表示処理（iPad版）
  //********************************************************
  this.showDataIPad = function(vstrIndex){

    //出力エリアなしの場合は処理しない
    var objWorkList = document.getElementById("PortfolioTitle");
    if (!objWorkList){ return; }
    
    //インデックス取得
    var intIndex = 0;
    var objItem = $plj(this.objXML).find("item");
    for (var i=0; i<objItem.length; i++){
      if (parseInt($plj(objItem[i]).find("idx").text()) != parseInt(vstrIndex)){ continue;}
      var objThisItem = objItem[i];
      break;
    }
    
    //リンクタグ生成
    var strLink = "";
    if($plj(objThisItem).find("link").text() == "※公開終了"){
      strLink = "※公開終了";
      $plj("#PortfolioLink").removeClass("linkBlank");
    }else{
      strLink = "<a href=\"" + $plj(objThisItem).find("link").text() + "\" target=\"_blank\">" + $plj(objThisItem).find("link").text() + "</a>";
      $plj("#PortfolioLink").addClass("linkBlank");
    }
    
    //タイトル文字列生成
    var strTitle = $plj(objThisItem).find("title").text();
    
    //画像タグ列生成
    var strImg = "<img src=\"" + this.strImgPath + $plj(objThisItem).find("img_l").text() + "\" width=\"570\" height=\"444\" alt=\"" + strTitle + "\" />";

    $plj("#PortfolioLink").html(strLink);
    $plj("#PortfolioImage").html(strImg);
    $plj("#PortfolioTitle").html(strTitle);
    $plj("#PortfolioDesc").html($plj(objThisItem).find("description").text());
    $plj("#PortfolioClient").html("（" + $plj(objThisItem).find("client").text() + "）");
    $plj("#PortfolioContents").html($plj(objThisItem).find("contents").text());
    
    $plj("#PortfolioImage").hide();
    $plj("#PortfolioImage").fadeIn(500);
    
    var strWorks = "";
    var objWorks = $plj(objThisItem).find("record");
    for (var i=0; i<objWorks.length; i++){
      strWorks += "<li>" + $plj(objWorks[i]).text() + "</li>";
    }
    $plj("#PortfolioWorks").html(strWorks);
    
    //タイトル切り替え
    $plj("title").text(strTitle + "｜実績・導入事例｜株式会社モーク・ワン");
  }

}
//_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/

//**********************************************************
//初期化
//**********************************************************
pl = new clsPortfolioLib();
pl.init();
