/*
	kbdsticker.js
	
	Date: 2010.07.19
	Author: kanmigiken
*/

var laststate;
var lastmsg;
var lasttime;

//
// メーカー/型番 を変更したときの処理
//
function setmodel(obj) {
  var req = new XMLHttpRequest();
  if (req) {
    processing(true, "キーボード選択中...");
    req.onreadystatechange = function() {
      if (req.readyState == 4 && (req.status == 200 || req.status == 304)) {
        reloadj(1);
        processing(false, "キーボード選択完了");

        // AFFLILIATE 切り替え
        var res = new Array();
        var eqs = req.responseText.split("&");
        for (var i = 0; i < eqs.length; i++) {
          var eq = eqs[i].split("=");
          if (eq[0] == "affiliate") {
//            alert(decodeURIComponent(eq[1]));
            document.getElementById("material").src = decodeURIComponent(eq[1]);
          }
        }
      }
    };
    req.open('GET', 'param.php?model=' + encodeURIComponent(obj.options[obj.selectedIndex].value));
    req.send(null);

  }
}

//
// StickerMap で [Rendering] ボタンが押されたときの処理
//
function render(obj) {
  laststate = 0;
  lastmsg = null;
  lasttime = (new Date).getTime();
  processing(true, "レンダリング中...");
  polling(obj);
}


//
// Ajax 版レンダリング
//
function polling(obj) {
  var req = new XMLHttpRequest();
  if (req) {
    req.onreadystatechange = function() {
      if (req.readyState != 4) {
        return;
      }
      if (req.status == 200 || req.status == 304) {
        // URI エンコード式を配列に
        var res = new Array();
        var eqs = req.responseText.split("&");
        for (var i = 0; i < eqs.length; i++) {
          var eq = eqs[i].split("=");
          res[eq[0]] = decodeURI(eq[1]);
        }
        
        // ステータス行を更新
        processing(res.state > 0, res.msg + " (" + res.state + ")");
        if (res.state == 0) {
          // 処理完了
          window.riframe.location.href = "result.php";
          return;
        }
        else if (res.state > 0) {
          // 処理中
          var now = (new Date).getTime();
          if (laststate == res.state && lastmsg != null && lastmsg == res.msg) {
            if (now - lasttime > 10000) {
              processing(false, "タイムアウトしました");
              return;
            }
          }
          else {
            // 状態変化
            lasttime = now;
            laststate = res.state;
            lastmsg = res.msg;		   
          }
          // ポーリング
          setTimeout("window.parent.polling(null)", 1000);
        }
      }
      else {
        processing(false, "HTTPエラー(" + req.status + ")");
	  }
    };

    // レンダリングパラメータ
    var e = document.getElementsByName("cutter");
    var cutter = "";
    for (var i = 0; i < e.length; i++) {
      if (e[i].checked) {
        cutter = e[i].value;
        break;
      }
    }
	var lettering = 1;
	var debug = 0;
    e = document.getElementsByName("lettering");
    lettering = (e != null && e[0].checked) ? 1 : 0;
	/*
    e = document.getElementsByName("debug");
    debug = (e != null && e[0].checked) ? 1 : 0;
	*/

    req.open('GET', 'rendering.php' +
      (obj ? 
      "?cx=" + obj.cx +
      "&cy=" + obj.cy +
      "&cz=" + obj.cz +
      "&rx=" + obj.rx +
      "&ry=" + obj.ry +
      "&rz=" + obj.rz +
      "&tx=" + obj.tx +
      "&ty=" + obj.ty +
      "&d=" + obj.d +
      "&f=" + obj.f +
	  "&cutter=" + cutter +
	  "&lettering=" + lettering +
	  "&debug=" + debug
	  : "" ));
    req.send(null);
  }
}

//
// StickerMap にリロードさせる
//
function reloadj(mode) {
//alert("javascript:reload, mode=" + mode);
//alert(document["externalStickerMap"]);
//alert(document["externalStickerMap"].reloadx);

  document["externalStickerMap"].reloadx(mode);
}

//
// ステータスライン更新
//
function setstatus(msg) {
  var sel = document.getElementById("status");
  if (navigator.userAgent.indexOf("Firefox") > -1) {
    sel.textContent = msg;
  }
  else{
    sel.innerText = msg;
  }
}

//
// 処理中および処理終了時に呼ぶ関数
//
function processing(flag, msg) {
  var e1 = document.getElementById("model");
  var e2 = document.getElementById("file");
//  var e3 = document.getElementById("externalStickerMap");
  e1.disabled = e2.disabled = flag;
//  e3.processingx(flag);
  document["externalStickerMap"].processingx(flag);
  // rendering ボタンも押せなくしたい
  setstatus(msg);
}

//
// 画像アップロード
//
function upload(obj) {
//  setstatus("アップロード中");
  obj.form.submit();
  processing(true, "アップロード中...");
//  obj.disabled = true;
  return true;
}

//
// StickerMap デバッグ用
//
function tracelog(obj) {
  alert(obj.msg);
}


