const parteApiUrl = window._x_webapp_parte_url ? window._x_webapp_parte_url : 'https://cite.parte.com';
const parteUrlPathCrdLst = '/v1/posts';
const parteUrlPathCrdDtl = '/v1/posts/';
const parteUrlPathInfDtl = '/v1/post_users/';

function getParteData(urlpath, data, cloneBlock) {
	jQuery.ajax({
        url: parteApiUrl + urlpath,
        type: 'GET',
        dataType: 'json',
        data: data
	})
	.done(function(json) {
        cloneBlock(json);
        console.log("parte api success");
	})
	.fail(function(json) {
        console.log("parte api error");
	})
}

function getParteDataWithSearchEngine(urlpath, data, cloneBlock) {
	jQuery.ajax({
        url: parteApiUrl + urlpath,
        type: 'GET',
        dataType: 'json',
        data: data
	})
	.done(function(json) {
		json.post['search_products'] = getParteSearchItemDatas(json.post.products);
		json.post['search_similar_products'] = getParteSearchItemDatas(json.post.similar_products);
        cloneBlock(json);
        console.log("parte api success");
	})
	.fail(function(json) {
        console.log("parte api error");
	})
}

function getParteSearchItemDatas(parte_items) {
	var rootPath = window._x_webapp_root ? window._x_webapp_root : '/';
	var url = rootPath + "addons/influencer_coordinate/get_search_item_data";
	var parteSearchItemDatas ={};
    var item_serials = parte_items.map(function(json_item) {
        return "'" + json_item.product_id + "'";
    });
    
    jQuery.ajax({
        url: url,
        type: 'GET',
        dataType: 'json',
        async: false,
        data:{
            itemSerials:item_serials.join(','),
        }
    })
    .done(function(json) {
        var items = json;
        for (var i = 0; i < items.length; i++) {
            var k = items[i]['item_code'];
            parteSearchItemDatas[k] = items[i];
        }
    });
    return parteSearchItemDatas;
}

function isDisplayGenderType(type) {
	var gender = false;
    switch (type){
    case 0:
        gender = true;
        break;
    case 1:
        gender = true;
        break;
    case 2:
        gender = false;
        break;
    case 3:
        gender = false;
        break;
    case 4:
        gender = false;
        break;
    default:
    	gender = false;
    }
    return gender;
}

function isNewItem(item){
  var day_from = new Date();
  var day_to   = new Date(item['created_at']);

  // 経過時間をミリ秒で取得
  // ミリ秒を日付に変換(端数切捨て)
  var ms = day_from.getTime() - day_to.getTime();
  var days = Math.floor(ms / (1000*60*60*24));

  if(days < 30){
      return true;
  }else{
      return false;
  }
}

//指定されたパラメータを除いた上で指定のパラメータを追加する
function trimAndAddParam(trimParams, addParam){
    var params = trimParamMulti(trimParams);
    
    if(params == ''){
        return '?' + addParam;
    }else{
        return params += '&'+ addParam;
    }
}

//指定されたパラメータを除いたパラメータを返す
//除いた結果、パラメータがない場合は空を返す
function trimParamMulti(targetPrams){
  var urlParam = location.search.substring(1);
  var ret = ''; 
  
  if(urlParam) {
      var params = urlParam.split('&');
      var isFirst = true;
   
      for (let i in params) {
      	var isInclude = false;
          var paramItem = params[i].split('=');
          for (let j in targetPrams) {
              if (paramItem[0] == targetPrams[j]) {
              	isInclude = true;
              }
          }
          if (!isInclude) {
          	if(isFirst){
                  isFirst=false;
                  ret = '?'+ params[i];
              }else{
                  ret += '&'+ params[i];
              }
          }
      }
  }
  return ret;
}

//対象のパラメータが存在した場合は値を取得する処理(取得できなければ空を返す)
function getParamVal(id){
    var urlParam = location.search.substring(1);
    var ret = '?'; 
    
    if(urlParam) {
        var params = urlParam.split('&');
        for (i = 0; i < params.length; i++) {
            var paramItem = params[i].split('=');
            if (paramItem[0] == id) {
                return paramItem[1];
            }
        }
    }
    return '';          
}

function setApiData(data, key, val) {
    if (val) data[key] = val;
}

function getHeightLink(numHeight, searchHeightMap){
	var searchHeights = Object.keys(searchHeightMap);
	var from_height = 185;
    var to_height = 0;
    var heightLink = '';
    
    for (var i = 0; i < searchHeights.length; i++) {
        // 数値を切り出し、対象数値が範囲内かチェックする
        nos = searchHeightMap[searchHeights[i]].cdDtlNo.split('_');
        if(nos[0] <= numHeight && numHeight < nos[1]){
            from_height = nos[0];
            to_height = nos[1];
            break;
        }
    }
    
    heightLink = 'from_height=' +from_height +'&to_height='+to_height;
    if (to_height == 96){
        heightLink = 'to_height='+to_height;
    }
    if (to_height == 0){
        heightLink = 'from_height=' +from_height;
    }
    return heightLink;
}

//---------------------------------------------
//ページング
//（全件数、1ページあたりの表示件数、ページリンク表示数、中心は何番目か）
//---------------------------------------------
function listPaging(totalCnt,dispCnt,pageLinkCnt,pageLinkHalf) {
    var base_page = jQuery('p.pager_number');

    var currentPage = getParamVal('p');                //現在のページ
    if (!currentPage) currentPage = 1;
    currentPage = Number(currentPage);
    var totalPageCnt = Math.floor(totalCnt / dispCnt); //合計ページ数
    if (totalCnt % dispCnt > 0) totalPageCnt = totalPageCnt + 1;

    var pageSeqFirst = 0;                           //表示する番号の最初のページ番号
    var pageSeqLast = 0;                            //表示する番号の最後のページ番号
    //最初のページ番号の設定
    if (totalPageCnt >= pageLinkCnt && ((totalPageCnt - currentPage) < (Math.floor(pageLinkCnt / 2)+1))) {
        pageSeqFirst = totalPageCnt - (pageLinkCnt-1);
    } else {
        if (( currentPage - pageLinkHalf) < 1) {
            pageSeqFirst = 1
        } else {
            pageSeqFirst = currentPage - (pageLinkHalf-1);
        }
    }
    //最後のページ番号の設定
    if ((pageSeqFirst + (pageLinkCnt-1)) > totalPageCnt) {
        pageSeqLast = totalPageCnt;
    }else {
        pageSeqLast = pageSeqFirst + (pageLinkCnt-1);
    }

    //ページング描画
    //1ページ目以外は＜を表示
    if (currentPage != '1') {
        base_page.append('<a class="arrow_l" href="' + trimAndAddParam(['p'],'p=' + (currentPage - 1)) + '"><span class="number_l"></span></a>');
    }
    //連番ページ番号
    for (var i=pageSeqFirst  ; i < pageSeqLast + 1; i++ ) {
        if (i==pageSeqFirst && pageSeqFirst > 1) {
            base_page.append('<a href="' + trimAndAddParam(['p'],'p=1') + '"><span style="margin-right: 3px">1</span><span class="first">...</span></a>');
        }
        if (i == currentPage) {
            base_page.append('<a class="on" href="' + trimAndAddParam(['p'],'p=' + i) + '">' + i + '</a>');
        } else {
            base_page.append('<a href="' + trimAndAddParam(['p'],'p=' + i) + '">' + i + '</a>');
        }
        if (i==pageSeqLast && currentPage < totalPageCnt && totalPageCnt > pageSeqLast){
            base_page.append('<a href="' + trimAndAddParam(['p'],'p=' + totalPageCnt) + '"><span class="last">...</span><span style="margin-left: 3px">'+ totalPageCnt +'</span></a>');
        }
    }
    //最後のページ以外は＞を表示
    if (currentPage != pageSeqLast) {
        base_page.append('<a class="arrow_r" href="' + trimAndAddParam(['p'],'p=' + (currentPage + 1)) + '"><span class="number_r"></span></a>');
    }
}

//セレクトボックスのページ遷移制御
function moveLink(obj){
    index = obj.selectedIndex;
    href = obj.options[index].value;
    location.href = href;
}
