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

//  定数初期設定
  var baseModelCookieName = "BaseModelFavorites";
  var baseModelMax = 40;
  var vintageStylesCookieName = "VintageStylesFavorites";
  var vintageStylesMax = 30;
//  グローバル変数

//  コントロール初期設定

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

//  **********************************
//  *** オブジェクトコンストラクタ ***
//  **********************************
//  function baseModelCookie( designerCode, desingNumber, registeredTime )
//    Base Model のクッキーを設定する。
//    時刻(registeredTime)には何も指定されなければオブジェクト作成時刻が設定される。
//    指定する場合はDateオブジェクトを指定すること。
function baseModelCookie( designerCode, designNumber, registeredTime ){
  this.designerCode = designerCode;
  this.designNumber = designNumber;
  this.registeredTime = ( registeredTime == undefined ) ? new Date : registeredTime;
}

//  function vintageStylesCookie( itemCode )
//    Vintage Styles のクッキーを設定する。
//    時刻(registeredTime)には何も指定されなければオブジェクト作成時刻が設定される。
//    指定する場合はDateオブジェクトを指定すること。
function vintageStylesCookie( itemCode, registeredTime ){
  this.itemCode = itemCode;
  this.registeredTime = ( registeredTime == undefined ) ? new Date : registeredTime;
}

//  ********************
//  ***その他ルーチン***
//  ********************
//  makeBaseModelCookieString( cookieArray )
//  BaseModelのクッキーオブジェクトの配列からクッキー文字列を生成する。
function makeBaseModelCookieString( cookieArray ){
  var result = "";
  for( i = 0 ; i < cookieArray.length ; i++ ){
    if( result != "" ){
      result = result + "|";
    }
    result = result + cookieArray[i].designerCode + "_" + cookieArray[i].designNumber + "_" +
             cookieArray[i].registeredTime.getTime();
  }
  return result;
}

//  makeVintageStylesCookieString( cookieArray )
//  Vintage Styles のクッキーオブジェクトの配列からクッキー文字列を生成する。
function makeVintageStylesCookieString( cookieArray ){
  var result = "";
  for( i = 0 ; i < cookieArray.length ; i++ ){
    if( result != "" ){
      result = result + "|";
    }
    result = result + cookieArray[i].itemCode + "_" + cookieArray[i].registeredTime.getTime();
  }
  return result;
}

//  setBaseModelFavorites
//    Base Modelをお気に入りに登録する。
function setBaseModelFavorites( designerCode, designNumber ){
  var srcCookie;
  var cookieArray;
  var destCookie = "";
  var itemCode = designerCode + "_" + designNumber;
  var i;
  //  パラメータチェック
  if( designerCode.length < 3 || designerCode.length > 5 || designNumber.length < 3 || designNumber.length > 4 ){
    alert( "登録に失敗しました。\nエラーコード:fv_pm" );
    return;
  }
  //  登録済みクッキー取得
  srcCookie = getBaseModelFavorites();
  if( srcCookie != undefined ){   //  登録済みあり
    cookieArray = srcCookie;
  }
  else{
    cookieArray = new Array;
  }
  //  二重登録チェック
  for( i = 0 ; i < cookieArray.length ; i++ ){
    if( cookieArray[i].designerCode == designerCode && cookieArray[i].designNumber == designNumber ){
      alert( "この商品はすでに登録済みです。" );
      return false;
    }
  }
  //  追加
  i = cookieArray.length;
  //  上限超過チェック
  if( i >= baseModelMax ){
    alert( "Base Model の登録数の上限は " + baseModelMax + " です。\nいくつか削除してから再度お試しください。" );
    return;
  }
  cookieArray[i] = new baseModelCookie( designerCode, designNumber );
  //  クッキー文字列生成
  destCookie = makeBaseModelCookieString( cookieArray );
  //  追加
  writeCookie( baseModelCookieName, destCookie, 365, "/" );
  if( destCookie != readCookie( baseModelCookieName ) ){
    alert( "登録に失敗しました。\nエラーコード:fv_wr" );
    return;
  }
  alert( "表示の商品をMy Pageに登録しました。" );
}

function setVintageStylesFavorites( itemCode ){
  var srcCookie;
  var cookieArray;
  var destCookie = "";
  var i;
  //  パラメータチェック
  if( itemCode.length != 4 ){
    alert( "登録に失敗しました。\nエラーコード:fv_pm" );
    return;
  }
  //  登録済みクッキー取得
  srcCookie = getVintageStylesFavorites();
  if( srcCookie != undefined ){   //  登録済みあり
    cookieArray = srcCookie;
  }
  else{
    cookieArray = new Array;
  }
  //  二重登録チェック
  for( i = 0 ; i < cookieArray.length ; i++ ){
    if( cookieArray[i].itemCode == itemCode ){
      alert( "この商品はすでに登録済みです。" );
      return false;
    }
  }
  //  追加
  i = cookieArray.length;
  //  上限超過チェック
  if( i >= vintageStylesMax ){
    alert( "Vintage Styles の登録数の上限は " + vintageStylesMax + " です。\nいくつか削除してから再度お試しください。" );
    return;
  }
  cookieArray[i] = new vintageStylesCookie( itemCode );
  //  クッキー文字列生成
  destCookie = makeVintageStylesCookieString( cookieArray );
  //  追加
  writeCookie( vintageStylesCookieName, destCookie, 365, "/" );
  if( destCookie != readCookie( vintageStylesCookieName ) ){
    alert( "登録に失敗しました。\nエラーコード:fv_wr" );
    return;
  }
  alert( "表示の商品をMy Pageに登録しました。" );
}

function getBaseModelFavorites(){
  var cookieStrArray;
  var designerCode, designNumber;
  var result = new Array();
  var tempArray;
  var wholeCookie;
  var cookie = new baseModelCookie();
  wholeCookie = readCookie( baseModelCookieName );
  if( wholeCookie == "" ){
    return undefined;
  }
  cookieStrArray = breakdownCookie( wholeCookie );
  for( var i = 0 ; i < cookieStrArray.length ; i++ ){
    tempArray = breakdownCookie( cookieStrArray[i], "_" );
    cookie.designerCode = tempArray[0];
    cookie.designNumber = tempArray[1];
    cookie.registeredTime.setTime( parseInt(tempArray[2]) );
    result[i] = new baseModelCookie( cookie.designerCode, cookie.designNumber, cookie.registeredTime );
  }
  return result;
}

function getVintageStylesFavorites(){
  var cookieStrArray;
  var itemCode;
  var result = new Array();
  var tempArray;
  var wholeCookie;
  var cookie = new vintageStylesCookie();
  wholeCookie = readCookie( vintageStylesCookieName );
  if( wholeCookie == "" ){
    return undefined;
  }
  cookieStrArray = breakdownCookie( wholeCookie );
  for( var i = 0 ; i < cookieStrArray.length ; i++ ){
    tempArray = breakdownCookie( cookieStrArray[i], "_" );
    cookie.itemCode = tempArray[0];
    cookie.registeredTime.setTime( parseInt(tempArray[1]) );
    result[i] = new vintageStylesCookie( cookie.itemCode, cookie.registeredTime );
  }
  return result;
}
