//  favoritesControls.js
//    Control code for favorites page.
//    Copyright (C) 2007, Zootique Co., Ltd. All rights reserved.

//  定数初期設定
  var baseModelTableColumn = 4;
  var baseModelBaseDir = "/catalogue/baseModel/";
  var baseModelImgDir = "/images/catalogue/baseModel/";
  var baseModelTableName = "BaseModelTable";
  var baseModelDivName = "BaseModelFavorites"
  var vintageStylesBaseDir = "/catalogue/vintage/";
  var vintageStylesImgDir = "/images/catalogue/vintage/";
  var vintageStylesTableName = "VintageStylesTable";
  var vintageStylesDivName = "VintageStylesFavorites";
//  グローバル変数
  var currentBaseModelTable;
  var currentVintageStylesTable;

//  ***プログラム本体***
//  ***イベントプロシージャ***

//  ****************************
//  *** イベントプロシージャ ***
//  ****************************
//  読み込み時
function OnLoad(){
  //  現在のテーブル保存
  currentBaseModelTable = document.getElementById( baseModelTableName );
  currentVintageStylesTable = document.getElementById( vintageStylesTableName );
  //  表示更新
  makeBaseModelFavoritesDocument();
  makeVintageStylesFavoritesDocument();
}

//  ********************
//  ***その他ルーチン***
//  ********************
function deleteBaseModelFavorites(obj){
  var designerCode, designNumber;
  var cookieArray, index, destCookie;
  var shouldDelete = false;

  cookieArray = getBaseModelFavorites();
  designerCode = obj.getAttribute( "designercode" );
  designNumber = obj.getAttribute( "designnumber" );
  if( designerCode == undefined || designNumber == undefined ){
    return undefined;
  }
  for( index = 0 ; index < cookieArray.length ; index++ ){
    if( cookieArray[index].designerCode == designerCode && cookieArray[index].designNumber == designNumber ){
      shouldDelete = true;
      break;
    }
  }
  if( shouldDelete ){
    cookieArray.splice( index, 1 );
  }
  //  残り0になった場合
  if( cookieArray.length == 0 ){
    deleteCookie( baseModelCookieName, "/" );
    //  表示の更新
    makeBaseModelFavoritesDocument();
  }
  //  クッキー文字列生成
  destCookie = makeBaseModelCookieString( cookieArray );
  //  消去済みクッキー書き込み
  writeCookie( baseModelCookieName, destCookie, 365, "/" );
  if( destCookie != readCookie( baseModelCookieName ) ){
    alert( "登録に失敗しました。\nエラーコード:fv_wr" );
    return;
  }
  //  表示の更新
  makeBaseModelFavoritesDocument();
}

function deleteVintageStylesFavorites( obj ){
  var itemCode;
  var cookieArray, index, destCookie;
  var shouldDelete = false;

  cookieArray = getVintageStylesFavorites();
  itemCode = obj.getAttribute( "itemcode" );
  if( itemCode == undefined ){
    return undefined;
  }
  for( index = 0 ; index < cookieArray.length ; index++ ){
    if( cookieArray[index].itemCode == itemCode ){
      shouldDelete = true;
      break;
    }
  }
  if( shouldDelete ){
    cookieArray.splice( index, 1 );
  }
  //  残り0になった場合
  if( cookieArray.length == 0 ){
    deleteCookie( vintageStylesCookieName, "/" );
    //  表示の更新
    makeVintageStylesFavoritesDocument();
  }
  //  クッキー文字列生成
  destCookie = makeVintageStylesCookieString( cookieArray );
  //  消去済みクッキー書き込み
  writeCookie( vintageStylesCookieName, destCookie, 365, "/" );
  if( destCookie != readCookie( vintageStylesCookieName ) ){
    alert( "登録に失敗しました。\nエラーコード:fv_wr" );
    return;
  }
  //  表示の更新
  makeVintageStylesFavoritesDocument();
}

function makeBaseModelFavoritesDocument(){
  var cookieArray;
  var tbody;
  var result;
  var targetObj;
  targetObj = document.getElementById( baseModelDivName );
  //  クッキー取得
  cookieArray = getBaseModelFavorites();
  //  登録済みチェック
  if( cookieArray == undefined ){     //  登録済みなし
    table = document.createTextNode( "何も登録されていません。" );
  }
  else{
    table = makeBaseModelTable( cookieArray );
  }
  //  内容出力
  targetObj.replaceChild( table, currentBaseModelTable );
  currentBaseModelTable = table;
}

function makeVintageStylesFavoritesDocument(){
  var cookieArray;
  var tbody;
  var result;
  var targetObj;
  targetObj = document.getElementById( vintageStylesDivName );
  //  クッキー取得
  cookieArray = getVintageStylesFavorites();
  //  登録済みチェック
  if( cookieArray == undefined ){     //  登録済みなし
    table = document.createTextNode( "何も登録されていません。" );
  }
  else{
    table = makeVintageStylesTable( cookieArray );
  }
  //  内容出力
  targetObj.replaceChild( table, currentVintageStylesTable );
  currentVintageStylesTable = table;
}

function makeBaseModelTable( cookieArray ){
  var i;
  //  テーブル作成
  table = document.createElement( "table" );
  tbody = document.createElement( "tbody" );
  //
  for( i = 0 ; i < cookieArray.length ; i++ ){
    if( i % 4 == 0 ){   //  新規の列
      tr = document.createElement( "tr" );
    }
    tr.appendChild( makeBaseModelCell( cookieArray, i ) );
    if( i % 4 == 3 || i == cookieArray.length - 1 ){  //  列終了 or 表終了
      tbody.appendChild( tr );
    }
  }
  //  終了
  tbody.appendChild( tr );
  table.appendChild( tbody );
  return table;
}

function makeVintageStylesTable( cookieArray ){
  var i;
  //  テーブル作成
  table = document.createElement( "table" );
  tbody = document.createElement( "tbody" );
  //
  for( i = 0 ; i < cookieArray.length ; i++ ){
    if( i % 2 == 0 ){   //  新規の列
      tr = document.createElement( "tr" );
    }
    tr.appendChild( makeVintageStylesCell( cookieArray, i ) );
    if( i % 2 == 1 || i == cookieArray.length - 1 ){  //  列終了 or 表終了
      tbody.appendChild( tr );
    }
  }
  //  終了
  tbody.appendChild( tr );
  table.appendChild( tbody );
  return table;
}

function makeBaseModelCell( cookieArray, index ){
  var img, imgfile, anchor, url, td, designerCode, designNumber, content;
  //  元データ取得
  designerCode = cookieArray[index].designerCode;
  designNumber = cookieArray[index].designNumber;
  //  イメージオブジェクト生成
  imgfile = baseModelImgDir + designerCode + "/" + designerCode + "_" + designNumber + "/" +
            designerCode + "_" + designNumber + "_ps.png";
  img = document.createElement( "img" );
  img.setAttribute( "src", imgfile );
  img.setAttribute( "alt", designerCode + "_" + designNumber );
  //  「削除」ボタン生成
  del = document.createElement( "input" );
  del.setAttribute( "type", "button" );
  del.setAttribute( "value", "削除" );
  del.setAttribute( "designerCode", designerCode );
  del.setAttribute( "designNumber", designNumber );
  del.onclick=function(){deleteBaseModelFavorites(this)};
  //  アンカーオブジェクト生成
  url = baseModelBaseDir + designerCode + "/" + designerCode + "_" + designNumber + ".shtml"
  anchor = document.createElement( "a" );
  anchor.setAttribute( "href", url );
  anchor.appendChild( img );
  //  内容作成
  td = document.createElement( "td" );
  td.appendChild( anchor );
  td.appendChild( document.createElement("br") );
  td.appendChild( del );
  return td;
}

function makeVintageStylesCell( cookieArray, index ){
  var img, imgfile, anchor, url, td, itemCode, content;
  //  元データ取得
  itemCode = cookieArray[index].itemCode;
  //  イメージオブジェクト生成
  imgfile = vintageStylesImgDir + itemCode + "/" + itemCode + "_wh_ps.jpg";
  img = document.createElement( "img" );
  img.setAttribute( "src", imgfile );
  img.setAttribute( "alt", itemCode );
  //  「削除」ボタン生成
  del = document.createElement( "input" );
  del.setAttribute( "type", "button" );
  del.setAttribute( "value", "削除" );
  del.setAttribute( "itemCode", itemCode );
  del.onclick=function(){deleteVintageStylesFavorites(this)};
  //  アンカーオブジェクト生成
  url = vintageStylesBaseDir + itemCode + "/" + itemCode + ".shtml"
  anchor = document.createElement( "a" );
  anchor.setAttribute( "href", url );
  anchor.appendChild( img );
  //  内容作成
  td = document.createElement( "td" );
  td.appendChild( anchor );
  td.appendChild( document.createElement("br") );
  td.appendChild( del );
  return td;
}
