
//名前空間用のオブジェクトを用意する
var CONTENTVIEW_CALLAPI = {};

//Call API
CONTENTVIEW_CALLAPI.abapi = function(name, param, method, callback) {
	AVWEB.avwCmsApiSync(ClientData.userInfo_accountPath(), name, method, param, callback, null);
};

/* get Json stored content info */
CONTENTVIEW_CALLAPI.getJsonContentInfo = function( doneFunc ) {
	
	//ファイルシステムが有効であればキャッシュ確認
	if( CONTENTVIEW_FILESYSTEM.fs == null ){
		//console.log("CONTENTVIEW_CALLAPI.getJsonContentInfo");
		AVWEB.avwGrabContentPageImage(ClientData.userInfo_accountPath(),
		     { contentId: CONTENTVIEW_GENERAL.contentID, sid: ClientData.userInfo_sid(), pageNo: 1 },
		     function (data) {
		    	CONTENTVIEW_GENERAL.pageImages = data;
		    	CONTENTVIEW_CALLAPI.getJsonContentInfoDone(doneFunc);
		     },
		     function (xmlHttpRequest, txtStatus, errorThrown) {
		    	 CONTENTVIEW.showErrorScreen();
		     }
		);
	} else {
		// 1ページ目のファイル取得
		var fileName = '/abook/' + CONTENTVIEW_GENERAL.contentID + "/page_1.dat";
		CONTENTVIEW_FILESYSTEM.fs.root.getFile( fileName, { create: false },
				function(fileEntry){
					fileEntry.file(function(file){
						var reader = new FileReader();
						reader.onloadend = function(e) {
							AVWEB.avwLog("read FileSystem");
							CONTENTVIEW_GENERAL.pageImages = e.target.result;
					    	CONTENTVIEW_CALLAPI.getJsonContentInfoDone(doneFunc);
						};
						//reader.readAsBinaryString(fileEntry);
						reader.readAsText(file);
						//reader.readAsArrayBuffer(fileEntry);
					});
				},
				function(err){
					// 失敗時のコールバック関数
					AVWEB.avwLog("NotRead FileSystem");
					AVWEB.avwGrabContentPageImage(
							ClientData.userInfo_accountPath(),
							{ contentId: CONTENTVIEW_GENERAL.contentID, sid: ClientData.userInfo_sid(), pageNo: 1 },
							function (data) {
								CONTENTVIEW_GENERAL.pageImages = data;
						    	CONTENTVIEW_CALLAPI.getJsonContentInfoDone(doneFunc);
							},
							function (xmlHttpRequest, txtStatus, errorThrown) {
								CONTENTVIEW.showErrorScreen();
							}
					);
				}
		);
	}
};

CONTENTVIEW_CALLAPI.getJsonContentInfoDone = function(doneFunc){
	
	var ajax1 = CONTENTVIEW_CALLAPI.webGetContentDataWhen();
	var ajax2 = CONTENTVIEW_CALLAPI.getSearchDataFromJsonWhen();
	var ajax3 = CONTENTVIEW_CALLAPI.getJsonDataPageTitleWhen();
	var ajax4 = CONTENTVIEW_CALLAPI.getJsonDataType4When();
	var ajax5 = CONTENTVIEW_CALLAPI.getJsonDataType5When();
	var ajax6 = CONTENTVIEW_CALLAPI.getDataJsonFileWhen();
	var ajax7 = CONTENTVIEW_CALLAPI.webGetContentPageSizeWhen();
	$.when(
    	 ajax1,ajax2,ajax3,ajax4,ajax5,ajax6,ajax7
	).done(function(data1, data2, data3, data4, data5, data6, data7) {
		//console.log("done:data1:" + data1);
		//console.log("done:data2:" + data2);
		//console.log("done:data3:" + data3);
		//console.log("done:data4:" + data4);
		//console.log("done:data5:" + data5);
		//console.log("done:data6:" + data6);
		//console.log("done:data7:" + data7);
		if(data1){
			CONTENTVIEW_CALLAPI.webGetContentDataDone(data1[0]);
		}
		if(data2){
			CONTENTVIEW_CALLAPI.getSearchDataFromJsonDone(data2[0]);
		}
		if(data3){
			CONTENTVIEW_CALLAPI.getJsonDataPageTitleDone(data3[0]);
		}
		if(data4){
			CONTENTVIEW_CALLAPI.getJsonDataType4Done(data4[0]);
		}
		if(data5){
			CONTENTVIEW_CALLAPI.getJsonDataType5Done(data5[0]);
		}
		if(data6){
			CONTENTVIEW_CALLAPI.getDataJsonFileDone(data6[0]);
		}
		if(data7){
			CONTENTVIEW_CALLAPI.webGetContentPageSizeDone(data7[0]);
		}
		if(doneFunc){
			doneFunc();
		}
	});
	
};


//未使用
CONTENTVIEW_CALLAPI.webGetPageImageContentSize = function() {
	
    var params = {
    		contentId: CONTENTVIEW_GENERAL.contentID,
    		sid: ClientData.userInfo_sid(),
    		isStreaming: ClientData.isStreamingMode(),
    		authCode: ClientData.authCode()
    };
	
	AVWEB.avwCmsApi(ClientData.userInfo_accountPath(),
	     "webContentPageSize",
	     "GET",
	     { contentId: CONTENTVIEW_GENERAL.contentID, sid: ClientData.userInfo_sid() },
	     function (data) {
	    	 CONTENTVIEW_GENERAL.widthContentImage = data.width;
	    	 CONTENTVIEW_GENERAL.heightContentImage = data.height;
	     },
	     null);
};

CONTENTVIEW_CALLAPI.webGetContentPageSizeWhen = function(){
	
    var params = {
    		contentId: CONTENTVIEW_GENERAL.contentID,
    		sid: ClientData.userInfo_sid(),
    		getType: 6,
    		isStreaming: ClientData.isStreamingMode(),
    		authCode: ClientData.authCode()
    };
	
    return AVWEB._callCmsApiWhen(
    		ClientData.userInfo_accountPath(),
    		"webGetContent",
    		"GET",
    		params
    );
    
};

CONTENTVIEW_CALLAPI.webGetContentPageSizeDone = function(data){
	if( data.contentData.pageInfoData.pagesInfo ){
		$.each(data.contentData.pageInfoData.pagesInfo, function(i, n){
			CONTENTVIEW_GENERAL.contentPageSizeArr.push(n);
		});
		
		//Get Page size of firstPage
		CONTENTVIEW_CALLAPI.getPageSizeByPageNo(1);
	} else {
		CONTENTVIEW.showErrorScreen();
	}
};

//Get Pagesize by pageNo
CONTENTVIEW_CALLAPI.getPageSizeByPageNo = function(pageNo){
    for(var i = 0; i < CONTENTVIEW_GENERAL.contentPageSizeArr.length; i++){
        var page = CONTENTVIEW_GENERAL.contentPageSizeArr[i];
        
        if(page.pageNo == pageNo){            
        	CONTENTVIEW_GENERAL.widthContentImage = page.pageWidth;
        	CONTENTVIEW_GENERAL.heightContentImage = page.pageHeight;            
        }
    }
};

CONTENTVIEW_CALLAPI.webGetContentDataWhen = function() {
	
    var params = {
    		contentId: CONTENTVIEW_GENERAL.contentID,
    		sid: ClientData.userInfo_sid(),
    		getType: 1,
    		isStreaming: ClientData.isStreamingMode(),
    		authCode: ClientData.authCode()
    };
    
    return AVWEB._callCmsApiWhen(
    		ClientData.userInfo_accountPath(),
    		"webGetContent",
    		"GET",
    		params
    );
    
};

CONTENTVIEW_CALLAPI.webGetContentDataDone = function(data) {
	 CONTENTVIEW_GENERAL.totalPage = data.contentData.allPageNum;
};

/* get Json stored page title */
CONTENTVIEW_CALLAPI.getJsonDataPageTitleWhen = function() {
	
    var params = {
    		contentId: CONTENTVIEW_GENERAL.contentID,
    		sid: ClientData.userInfo_sid(),
    		getType: 3,
    		isStreaming: ClientData.isStreamingMode(),
    		authCode: ClientData.authCode()
    };
	
    return AVWEB._callCmsApiWhen(
    		ClientData.userInfo_accountPath(),
    		"webGetContent",
    		"GET",
    		params
    );
    
};

CONTENTVIEW_CALLAPI.getJsonDataPageTitleDone = function(data) {
	 CONTENTVIEW_GENERAL.dataPageTitle = [];
     for (var nIndex = 0; nIndex < CONTENTVIEW_GENERAL.totalPage; nIndex++) {
    	 CONTENTVIEW_GENERAL.dataPageTitle.push("");
     }
     if (data.contentData) {

         if (data.contentData.titleInfo) {
        	 CONTENTVIEW_GENERAL.dataPageTitle = data.contentData.titleInfo;
         }
     }
};

/* get Json webGetContent4 */
CONTENTVIEW_CALLAPI.getJsonDataType4When = function() {
	
    var params = {
    		contentId: CONTENTVIEW_GENERAL.contentID,
    		sid: ClientData.userInfo_sid(),
    		getType: 4,
    		isStreaming: ClientData.isStreamingMode(),
    		authCode: ClientData.authCode()
    };
	
    return AVWEB._callCmsApiWhen(
    		ClientData.userInfo_accountPath(),
    		"webGetContent",
    		"GET",
    		params
    );
    
};

CONTENTVIEW_CALLAPI.getJsonDataType4Done = function(data) {
	 CONTENTVIEW_GENERAL.dataJsonType4 = data.contentData.linkData;
};

/* get Json webGetContent5 */
CONTENTVIEW_CALLAPI.getJsonDataType5When = function() {
	
    var params = {
    		contentId: CONTENTVIEW_GENERAL.contentID,
    		sid: ClientData.userInfo_sid(),
    		getType: 5,
    		isStreaming: ClientData.isStreamingMode(),
    		authCode: ClientData.authCode()
    };
	
    return AVWEB._callCmsApiWhen(
    		ClientData.userInfo_accountPath(),
    		"webGetContent",
    		"GET",
    		params
    );
    
};

CONTENTVIEW_CALLAPI.getJsonDataType5Done = function(data) {
	 CONTENTVIEW_GENERAL.dataJsonType5 = data.contentData.outlineData;
};

/* read file Json -> get page objects */
CONTENTVIEW_CALLAPI.getDataJsonFileWhen = function() {
	
    var params = {
    		contentId: CONTENTVIEW_GENERAL.contentID,
    		sid: ClientData.userInfo_sid(),
    		getType: 2,
    		isStreaming: ClientData.isStreamingMode(),
    		authCode: ClientData.authCode()
    };
	
    return AVWEB._callCmsApiWhen(
    		ClientData.userInfo_accountPath(),
    		"webGetContent",
    		"GET",
    		params
    );
    
};

CONTENTVIEW_CALLAPI.getDataJsonFileDone = function(data) {
	
    var JsonFile = data.contentData;
    CONTENTVIEW_GENERAL.pageObjectsData = [];
    if (JsonFile.vertical) {
        if (JsonFile.vertical.pages) {
       	 CONTENTVIEW_GENERAL.pageObjectsData = JsonFile.vertical.pages;
            
            //Start Function : No.9 - Editor : Long - Date : 08/16/2013 - Summary : 
            if(data.contentDataSub != null && data.contentDataSub.length > 0){                          
                for(var i = 0; i < CONTENTVIEW_GENERAL.pageObjectsData.length; i++){
                    var obj = CONTENTVIEW_GENERAL.pageObjectsData[i];
                    obj["contentDataSub"] = data.contentDataSub;
                }                                              
            }
            //End Function : No.9 - Editor : Long - Date : 08/16/2013 - Summary :
        }
    }
    else if (JsonFile.horizontal) {
        if (JsonFile.horizontal.pages) {
       	 CONTENTVIEW_GENERAL.pageObjectsData = JsonFile.horizontal.pages;
            //Start Function : No.9 - Editor : Long - Date : 08/16/2013 - Summary : 
            if(data.contentDataSub != null && data.contentDataSub.length > 0){		                     
                for(var i = 0; i < CONTENTVIEW_GENERAL.pageObjectsData.length; i++){
                    var obj = CONTENTVIEW_GENERAL.pageObjectsData[i];
                    obj["contentDataSub"] = data.contentDataSub;
                }		                     		            
            }
            //End Function : No.9 - Editor : Long - Date : 08/16/2013 - Summary : 	                 
        }
    }
    //Start : Function : No.12 - Editor : Long - Date: 08/27/2013 - Summary : Get Page Object for content type none
    else{
   	 CONTENTVIEW_GENERAL.pageObjectsData = JsonFile.content.pages;
        
        if(data.contentDataSub != null && data.contentDataSub.length > 0){                            
            for(var i = 0; i < CONTENTVIEW_GENERAL.pageObjectsData.length; i++){
                var obj = CONTENTVIEW_GENERAL.pageObjectsData[i];
                obj["contentDataSub"] = data.contentDataSub;
            }                                              
        }
    }
    
    //Get Data Of page to draw page
    if(CONTENTVIEW_GENERAL.contentType == COMMON.ContentTypeKeys.Type_NoFile){
        
        var pageDataInfo = [];
        pageDataInfo["height"] = JsonFile.height;
        pageDataInfo["width"] = JsonFile.width;
        pageDataInfo["alpha"] = JsonFile.backgroundAlpha;
        pageDataInfo["color"] = JsonFile.backgroundColor;
        
        CONTENTVIEW_GENERAL.totalPage = parseInt(JsonFile.totalPageNum);
        
        CONTENTVIEW_GENERAL.pageImages = CONTENTVIEW_CONTENTTYPENONE.returnImageString(pageDataInfo);
        CONTENTVIEW_GENERAL.widthContentImage = JsonFile.width;
        CONTENTVIEW_GENERAL.heightContentImage = JsonFile.height;
    }	 
            		        
    //End : Function : No.12 - Editor : Long - Date: 08/27/2013 - Summary : Get Page Object for content type none

    CONTENTVIEW_GETDATA.getPageObjectsByPageIndex(CONTENTVIEW_GENERAL.pageObjectsData, 0);
	
};


CONTENTVIEW_CALLAPI.loadDataBookmark = function(lstPageNo) {
    if (CONTENTVIEW_GENERAL.isSendingData == true) {

        var params = {
        		contentId: CONTENTVIEW_GENERAL.contentID,
        		sid: ClientData.userInfo_sid(),
        		pageNos: lstPageNo[0],
        		thumbnailFlg: 1,
        		isStreaming: ClientData.isStreamingMode(),
        		authCode: ClientData.authCode()
        };
    	
    	AVWEB.avwCmsApi(ClientData.userInfo_accountPath(),
		     "webContentPage",
		     "GET",
		     params,
		     function (data) {
		    	 CONTENTVIEW_GETDATA.getDataLoaded(data.pages);

		         //Resize Image
		         var imgTemp = new Image();
		         $('#img_bookmark_' + data.pages[0].pageNo).attr('src', COMMON.formatStringBase64(data.pages[0].pageThumbnail));

		         imgTemp.onload = function () {

		             if (imgTemp.width > imgTemp.height) {

		                 $("img.imgbox").attr('height', '');
		                 $("img.imgbox").removeAttr('height');
		                 $("img.imgbox").attr('width', '43');
		             }
		             else {
		                 $("img.imgbox").attr('width', '');
		                 $("img.imgbox").removeAttr('width');
		                 $("img.imgbox").attr('height', '43');
		             }
		         };

		         imgTemp.src = COMMON.formatStringBase64(data.pages[0].pageThumbnail);

		         lstPageNo = jQuery.grep(lstPageNo, function (value) {
		             return value != lstPageNo[0];
		         });

		         if (lstPageNo.length > 0) {
		        	 CONTENTVIEW_CALLAPI.loadDataBookmark(lstPageNo);
		         } else {
		        	 CONTENTVIEW_GENERAL.isSendingData = false;
		         }
		     },
		     null);
    }
};

/* get data using for search */
CONTENTVIEW_CALLAPI.getSearchDataFromJsonWhen = function() {
    //get data from JSON file

    var arrPageNo = '';
    for (var nIndex = 0; nIndex < CONTENTVIEW_GENERAL.totalPage; nIndex++) {
        if (nIndex == 0) {
            arrPageNo += (nIndex + 1);
        } else {
            arrPageNo += "," + (nIndex + 1);
        }
    }
    
    var params = {
    		contentId: CONTENTVIEW_GENERAL.contentID,
    		sid: ClientData.userInfo_sid(),
    		thumbnailFlg: 0,
    		isStreaming: ClientData.isStreamingMode(),
    		authCode: ClientData.authCode()
    };
    
    return AVWEB._callCmsApiWhen(
    		ClientData.userInfo_accountPath(),
    		"webContentPage",
    		"GET",
    		params
    );
    
};

CONTENTVIEW_CALLAPI.getSearchDataFromJsonDone = function(data) {
	CONTENTVIEW_GENERAL.contentName = data.contentTitle;
	CONTENTVIEW_GENERAL.dataWebContentPage = data;
};

CONTENTVIEW_CALLAPI.loadDataSearch = function(lstPageNo) {
    if (CONTENTVIEW_GENERAL.isSendingData == true) {
    	
        var params = {
        		contentId: CONTENTVIEW_GENERAL.contentID,
        		sid: ClientData.userInfo_sid(),
        		pageNos: lstPageNo[0],
        		thumbnailFlg: 1,
        		isStreaming: ClientData.isStreamingMode(),
        		authCode: ClientData.authCode()
        };
    	
    	AVWEB.avwCmsApi(ClientData.userInfo_accountPath(),
		     "webContentPage",
		     "GET",
		     params,
		     function (data) {
		    	 CONTENTVIEW_GETDATA.getDataLoaded(data.pages);

		         //Resize Image
		         var imgTemp = new Image();
		         $('#img_search_' + data.pages[0].pageNo).attr('src', COMMON.formatStringBase64(data.pages[0].pageThumbnail));

		         imgTemp.onload = function () {

		             if (imgTemp.width > imgTemp.height) {

		                 $("img.imgbox").attr('height', '');
		                 $("img.imgbox").removeAttr('height');
		                 $("img.imgbox").attr('width', '43');
		             }
		             else {
		                 $("img.imgbox").attr('width', '');
		                 $("img.imgbox").removeAttr('width');
		                 $("img.imgbox").attr('height', '43');
		             }
		         };

		         imgTemp.src = COMMON.formatStringBase64(data.pages[0].pageThumbnail);

		         lstPageNo = jQuery.grep(lstPageNo, function (value) {
		             return value != lstPageNo[0];
		         });

		         if (lstPageNo.length > 0) {
		        	 CONTENTVIEW_CALLAPI.loadDataSearch(lstPageNo);
		         } else {
		        	 CONTENTVIEW_GENERAL.isSendingData = false;
		         }
		     },
		     null);
    }
};

CONTENTVIEW_CALLAPI.ready = function(){
};

