
/* Create Namespace */
if (!window.Paperlit) { window.Paperlit = {}; }

// if issueId or pageNumber are specified on hash, use them (this let direct urls work, e.g.: for sharing)
Paperlit.windowHash = location.hash.substring(1, location.hash.length).split("/");
// Set reader general parameters
Paperlit.action = '';
Paperlit.projectId = 'prj_5b51eaa237e4c';
Paperlit.publicationId = '';
Paperlit.issueId = '';
Paperlit.token = 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwcm9qZWN0SWQiOiJwcmpfNWI1MWVhYTIzN2U0YyIsInByb2plY3RQZXJtaXNzaW9uc0JpdG1hc2siOjF9.Jdym_yn2BjTeei3pjEzNOQ3e2J3AZMFKaGaaVcxaWQw';
Paperlit.pageNumber = '1';
Paperlit.readerUrl = 'https://reader.paperlit.com';
Paperlit.accessToken = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJwcm9qZWN0SWQiOiJwcmpfNWI1MWVhYTIzN2U0YyIsInByb2plY3RQZXJtaXNzaW9uc0JpdG1hc2siOjF9.Jdym_yn2BjTeei3pjEzNOQ3e2J3AZMFKaGaaVcxaWQw";
Paperlit.debug = "";
Paperlit.showUnpublished = "";
Paperlit.originHost = location.protocol + "//" + location.host + location.pathname;

// Add iframe css
Paperlit.head = document.getElementsByTagName("head")[0];
Paperlit.embedCss = document.createElement('link');
Paperlit.embedCss.type = "text/css";
Paperlit.embedCss.rel = "stylesheet";
Paperlit.embedCss.href = Paperlit.readerUrl + "/css/embed.css";
Paperlit.head.appendChild(Paperlit.embedCss);

// Add jQuery if not loaded (necessary for width() and height function() )
if (typeof jQuery == "undefined")
	document.write('<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></scr' + 'ipt>');

// Hash is used to display publication, issue, pageNumber
// e.g.: #publicationId/issueId/pageNumber
//       #mainPublicationId/publicationId/issueId/pageNumber (in case of newsstand, multipublication)
Paperlit.updateHash = function() {
	location.hash = Paperlit.projectId + "/" + Paperlit.publicationId + "/" + Paperlit.issueId + "/" + Paperlit.pageNumber 
}
// update hash to reflect page change event
Paperlit.changePageNumber = function(value) {
	var issueId = value.split(";")[0];
	var pageNumber = value.split(";")[1];
	Paperlit.issueId = issueId;
	Paperlit.pageNumber = pageNumber;
	Paperlit.updateHash();
}
// when reader is loaded, update document title with publication name
Paperlit.setDocumentTitle = function(title) {
	document.title = title;
}
// update publication id (if newsstand)
Paperlit.setPublicationId = function(publicationId) {
	Paperlit.publicationId = publicationId;
	Paperlit.updateHash();
}
Paperlit.authorizationError = function() {
	alert("Invalid Url");
	document.location.href = document.location.origin;
};
Paperlit.clearHash = function(){
	history.pushState("", document.title, window.location.pathname + window.location.search);
}

Paperlit.setIframeDimensions = function(){
	document.getElementById("ppIframe").style.width = window.innerWidth + "px";
	document.getElementById("ppIframe").style.height = window.innerHeight + "px";
}

window.addEventListener("orientationchange", function() {
	if (navigator.userAgent.match(/iPad/i) !== null && navigator.userAgent.match(/iPhone/i) !== null ) {
		document.getElementById("ppIframe").style.width = window.innerWidth + "px";
		document.getElementById("ppIframe").style.height = window.innerHeight + "px";
	}
})

Paperlit.openUrl = function(url){
    window.open(url, "dpmLogin", "width=800,height=500");
}

window.onmessage = function(evt) {
	if (evt.origin == Paperlit.readerUrl) {
		// evt data pattern: action:value
		var action = evt.data.split(":")[0];
		var value = evt.data.split(":")[1];
		switch (action) {
		    case "openUrl":
		        Paperlit.openUrl(value);
		        break;
			case "changePageNumber":
				Paperlit.changePageNumber(value);
				// Every time return URL for share
				document.getElementById("ppIframe").contentWindow.postMessage("urlForShare:" + encodeURIComponent(document.location.href), Paperlit.readerUrl);
				break;
			case "setDocumentTitle":
				Paperlit.setDocumentTitle(value);
				break;
			case "clearHash":
				Paperlit.clearHash();
				break;
			case "setPublicationId":
				Paperlit.setPublicationId(value);
				break;
			default:
				break;
		}
	}
};

window.onload = function(evt) {
	// No hash set: use GET parameter to build reader
	//Paperlit.publicationId = (Paperlit.windowHash[0] == "") ? // windowHash[0] is never undefined
	//	Paperlit.publicationId : 
	//	Paperlit.windowHash[0];
	
	var readerBaseUrl = Paperlit.readerUrl;
	var token = Paperlit.token
	var PayerID;
	var paypalToken;
	var userToken;
	var pelcroJWT;
	var iip;
	if(Paperlit.windowHash.length > 0){
		var parsedHash = Paperlit.windowHash[0].split("?");
		if(parsedHash.length > 1){
			var hashedQueryString = parsedHash[1];
			var hashedAction = parsedHash[0];
			var paramArray = hashedQueryString.split("&");
			var params = {};
			for(var i=0; i<paramArray.length; i++){
				var p = paramArray[i].split("=");
				var key = p[0]
				params[key] = p[1]
			}
			if(params.PayerID){
				PayerID = params.PayerID;
			}
			if(params.token){
				paypalToken = params.token;
			}
			if(params.userToken){
				userToken = params.userToken;
			}
            if(params.pelcroJWT){
                pelcroJWT = params.pelcroJWT;
            }
            if(params.iip){
                iip = params.iip;
            }

		}

		if (Paperlit.windowHash[0] !== undefined && Paperlit.windowHash[0] != ""){
			if(parsedHash.length > 1){
				Paperlit.action = hashedAction;
			}else{
				Paperlit.projectId = Paperlit.windowHash[0];	
			}
		}
		if (Paperlit.windowHash[1] !== undefined){
			Paperlit.publicationId = Paperlit.windowHash[1];	
		}
		if (Paperlit.windowHash[2] !== undefined){
			Paperlit.issueId = Paperlit.windowHash[2];
		}
		if (Paperlit.windowHash[3] !== undefined){
			Paperlit.pageNumber = Paperlit.windowHash[3];
		}
	}
	if(Paperlit.action=="latest"){
		readerBaseUrl += "/latest/" + Paperlit.projectId;
	}else if (Paperlit.action=="success") {
		readerBaseUrl += "/paywall/success"
	}else if (Paperlit.action=="cancel"){
		readerBaseUrl += "/paywall/cancel"
	}else{
		readerBaseUrl += "/read/" + Paperlit.projectId;
	}	
	
	if(Paperlit.publicationId){
		readerBaseUrl+= "/" + Paperlit.publicationId 
	}
	if(Paperlit.publicationId && Paperlit.issueId){
		readerBaseUrl+= "/" + Paperlit.issueId 
	}

	var readerHash = "?token=" + token + "&page=" + Paperlit.pageNumber + "&host=" + Paperlit.originHost + "&e=1";
	if(PayerID){
		readerHash += "&PayerID=" + PayerID
	}
	if(paypalToken){
		readerHash += "&paypalToken=" + paypalToken;
	}
	if(userToken){
		readerHash += "&userToken=" + userToken;
	}
	if(pelcroJWT){
        readerHash += "&pelcroJWT=" + pelcroJWT;
    }
	if(iip){
        readerHash += "&iip=" + iip;
    }
	if(Paperlit.debug){
		readerHash += "&debug=" + Boolean(Paperlit.debug);
	}
	if(Paperlit.showUnpublished){
		readerHash += "&show-unpublished=" + Boolean(Paperlit.showUnpublished);
	}
	var iframeElement = document.createElement("iframe");
	iframeElement.id = "ppIframe";
	iframeElement.src = readerBaseUrl + readerHash;
	iframeElement.scrolling = "no";
	document.getElementById("pp-reader-wrapper").appendChild(iframeElement);
	
	if (navigator.userAgent.match(/iPad/i) !== null && navigator.userAgent.match(/iPhone/i) !== null ) {
		Paperlit.setIframeDimensions();
	}
	
}

/* There is a bug (Safary) that prevent iframe resize event propagation to its content resizing when orientation change 
 * Force resizing changing iframe wrapper dimension
 */
if (navigator.userAgent.match(/iPad/i) !== null) {
	window.onresize = function() {
		var wrapperWidth = $("#pp-reader-wrapper").width();
		var wrapperHeight = $("#pp-reader-wrapper").height();
		var windowWidth = $(window).width();
		var windowHeight = $(window).height();
		$("#ppIframe").width(wrapperWidth);
		$("#ppIframe").height(wrapperHeight);
	}
}
