void ShelfItemUpdate()
    {
        if (IsTouch)
        {
            Vector2 touchPos = TouchInterface.GetTouchPosition();
//calculate last touch
            ItemMoveMent    += (touchPos.x - lastTouch.x) * (Sensitive / 10.0f);
            MoveSpeed        = (touchPos.x - lastTouch.x) * (Sensitive / 10.0f) / (Time.deltaTime);
            currentMoveSpeed = MoveSpeed;
            if (ItemMoveMent > 0)
            {
                ItemMoveMent = 0;
            }
            if (ItemMoveMent < -(DetailLength * (ShelfItemList.Count - 1)))
            {
                ItemMoveMent = -DetailLength * (ShelfItemList.Count - 1);
            }
            lastTouch.x       = touchPos.x;
            currentShelfIndex = (int)(-(ItemMoveMent - (DetailLength / 2.0f)) / DetailLength);
            SnappingMorph.morphEasein(ItemMoveMent, -currentShelfIndex * DetailLength, Mathf.Abs(MoveSpeed) / DetailLength + Smooth);
//move all item
            for (int i = 0; i < ShelfItemList.Count; i++)
            {
                ShelfItemList [i].transform.localPosition = new Vector3(ItemMoveMent + i * DetailLength, 0, 0);
                float size = ((ScaleItemRate + 4) - Mathf.Abs(ShelfItemList [i].transform.localPosition.x)) / (ScaleItemRate + 4);
                ShelfItemList [i].transform.localScale = new Vector3(size, size, 1);
                ItemDetail idt = ShelfItemList [i].GetComponent <ItemDetail>();
                idt.SetSortingOrder(10 - (int)Mathf.Abs(ShelfItemList [i].transform.localPosition.x * 100));
            }
//move arrow item
            PrevPageArrow.transform.localPosition = new Vector3(-1 + ItemMoveMent + -DetailLength, 0, 0);
            NextPageArrow.transform.localPosition = new Vector3(1 + ItemMoveMent + ShelfItemList.Count * DetailLength, 0, 0);
        }
    }
    public void CreateShelfItem(ContentData[] dataList, List <DownloadedTexture> dtxList, bool IsFirstPage, bool IsLastPage)
    {
        if (Indecator != null)
        {
            Indecator.SetActive(false);
        }
        if (dataList.Length <= 0)
        {
            return;
        }
        //create item detail
        for (int i = 0; i < dataList.Length; i++)
        {
            dataList[i].IsFav  = PageDetailGlobal.IsFavourite(dataList[i].dataid);
            dataList[i].IsLike = PageDetailGlobal.GetLikeAlready(dataList[i].dataid);

            GameObject itemDetail = (GameObject)GameObject.Instantiate(ShelfItem);
            itemDetail.transform.parent        = ShelfList.transform;
            itemDetail.transform.localPosition = new Vector3(0 + i * DetailLength, 0, 0);

            float size = ((ScaleItemRate + 4) - Mathf.Abs(itemDetail.transform.localPosition.x)) / (ScaleItemRate + 4);
            itemDetail.transform.localScale = new Vector3(size, size, 1);
//			itemDetail.renderer.sortingOrder = 10-(int)Mathf.Abs(itemDetail.transform.localPosition.x*100);

            ItemDetail idt = itemDetail.GetComponent <ItemDetail>();
            idt.SetSortingOrder(10 - (int)Mathf.Abs(itemDetail.transform.localPosition.x * 100));
            idt.texture.AddDownloadTexture(dtxList[i]);
            idt.SetContentData(dataList[i]);
            ShelfItemList.Add(itemDetail);
        }
        //create arrow item
        //set position
        PrevPageArrow.transform.localPosition = new Vector3(-1 + -DetailLength, 0, 0);
        NextPageArrow.transform.localPosition = new Vector3(1 + dataList.Length * DetailLength, 0, 0);
        if (!IsFirstPage)
        {
            PrevPageArrow.gameObject.SetActive(true);
        }
        else
        {
            PrevPageArrow.gameObject.SetActive(false);
        }
        if (!IsLastPage)
        {
            NextPageArrow.gameObject.SetActive(true);
        }
        else
        {
            NextPageArrow.gameObject.SetActive(false);
        }
        currentShelfIndex = 0;
        content.SetContent(ShelfItemList [currentShelfIndex].GetComponent <ItemDetail> ().cData);
        content.ShowContent();
    }
    IEnumerator SnappingItem()
    {
        if (ShelfItemList.Count <= 0)
        {
            yield break;
        }
        while (!SnappingMorph.IsFinish())
        {
            SnappingMorph.Update();
            ItemMoveMent = SnappingMorph.val;

            if (ItemMoveMent > 0)
            {
                ItemMoveMent = 0;
            }
            if (ItemMoveMent < -(DetailLength * (ShelfItemList.Count - 1)))
            {
                ItemMoveMent = -DetailLength * (ShelfItemList.Count - 1);
            }
            currentShelfIndex = (int)(-(ItemMoveMent - (DetailLength / 2.0f)) / DetailLength);
            for (int i = 0; i < ShelfItemList.Count; i++)
            {
                ShelfItemList [i].transform.localPosition = new Vector3(ItemMoveMent + i * DetailLength, 0, 0);
                float size = ((ScaleItemRate + 4) - Mathf.Abs(ShelfItemList [i].transform.localPosition.x)) / (ScaleItemRate + 4);
                ShelfItemList [i].transform.localScale = new Vector3(size, size, 1);
                ItemDetail idt = ShelfItemList [i].GetComponent <ItemDetail>();
                idt.SetSortingOrder(10 - (int)Mathf.Abs(ShelfItemList [i].transform.localPosition.x * 100));
            }
            PrevPageArrow.transform.localPosition = new Vector3(-1 + ItemMoveMent + -DetailLength, 0, 0);
            NextPageArrow.transform.localPosition = new Vector3(1 + ItemMoveMent + ShelfItemList.Count * DetailLength, 0, 0);
            yield return(0);
        }
        content.SetContent(ShelfItemList [currentShelfIndex].GetComponent <ItemDetail> ().cData);
        content.ShowContent();
        //show IndexItem
    }