/**
* This file is part of HTML2print.
*
* HTML2print is free software: you can redistribute it and/or modify it under the
* terms of the GNU Affero General Public License as published by the Free
* Software Foundation, either version 3 of the License, or (at your option) any
* later version.
*
* HTML2print is distributed in the hope that it will be useful, but WITHOUT ANY
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
* PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License along
* with HTML2print. If not, see .
*/
window.HTML2print = window.HTML2print || {};
(function(undefined) {
'use strict';
// http://stackoverflow.com/questions/8567114/how-to-make-an-ajax-call-without-jquery
function callAjax(url, callback){
var xmlhttp;
// compatible with IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
xmlhttp.withCredentials = true;
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4 && xmlhttp.status == 200){
// CHANGE WINDOW TITLE WITH FILENAME
//var windowTitle = /\/.+\/(.+).json/.exec(url);
//top.document.title = windowTitle[1];
callback(xmlhttp.responseText);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
}
HTML2print.Docs = function() {};
HTML2print.Docs.prototype.initialize = function(src) {
this.src = src || {};
var viewport = document.getElementById("viewport");
var toolbar = document.getElementById("toolbar");
var select = document.createElement('select');
select.setAttribute('name', 'documents');
for (var key in this.src) {
var elt = document.createElement("option");
elt.setAttribute('value', this.src[key]);
var txt = document.createTextNode(key);
elt.appendChild(txt);
select.appendChild(elt);
}
toolbar.insertBefore(select, toolbar.firstChild);
// restores last document or loads the first one
var hash = window.location.hash;
if (hash && hash.substring(0,2) === "#!") {
var src = hash.substring(2);
viewport.src = src;
select.value = src;
} else {
var stateObj = { doc: select.value };
window.history.pushState(stateObj, "", "#!" + select.value);
viewport.src = select.value;
};
// push to history when on changes document
select.addEventListener("change", function(event) {
var stateObj = { doc: this.value };
window.history.pushState(stateObj, "", "#!" + this.value);
viewport.src = this.value;
});
}
callAjax("build/js/src.json", function(data) {
var src = JSON.parse(data);
var docs = new HTML2print.Docs;
docs.initialize(src);
});
})();