var debugging = false;
var gethtmlupdateMethod = 'POST';
if (!window.POBJ) var POBJ = {wrappertop:0,scrollY:0};
var loadeddummy;
var mastheadcolor = 1;
function switchMastheadColor(svg){
if (mastheadcolor==1){
svg.classList.add('white')
svg.parentNode.parentNode.setAttribute('data-head','white')
mastheadcolor=0;
}
else{
svg.classList.remove('white')
svg.parentNode.parentNode.setAttribute('data-head','black')
mastheadcolor=1;
}
}
var pgsnmbs;
var localstoragekey = 'fysiodummy';
var Mouse = {};
//var Types = {'cover':'forside','petit':'petit','text':'artikel','forskning':'forskning','annonce':'annonce'};
var Types = {};//{'petit':'petit','text':'artikel','forskning':'forskning','annonce':'annonce','kurser':'kursus','forening':'forening'};
var Pages = {types:{},pages:[],position:[]};
function px(i){
return i+'px';
}
function backurl(u){
return 'url('+u+')';
}
function onkeydown(e){
//console.log(e);
}
function offsetPos(o,asdict){
x = o.offsetLeft;
y = o.offsetTop;
while (o.parentNode != document.body){
o = o.parentNode;
x += o.offsetLeft;
y += o.offsetTop;
}
if (asdict) return {x:x,y:y}
else return [x,y];
}
function jsDummyArgs(){
return [POBJ.dummyid,POBJ.issueid];
}
function getEvent(key){
return POBJ.events[key];
}
function onload(){
var c;
loadDummy();
pgsnmbs = document.getElementsByClassName('pagenumber');
var pages = document.getElementsByClassName('page');
for (i=0; i < pages.length; i+=1){
if (!pages[i].classList.contains('xbuttons')) {
Pages.pages.push(pages[i]);
}
}
updatePageCount()
updatepagenumbers();
initpagenumbers();
pagepositions();
window.addEventListener('resize',Resize.Listen)
iniPageTypesPopup();
window.addEventListener('keydown',onkeydown);
if (document.getElementById('newer-dummies') || !POBJ.issueid) openAdmin();
addEventListener('scroll',bodyscroll);
c = document.getElementById('page-cover');
if (c) c.getElementsByClassName('cont')[0].addEventListener('focus',setCurrentPage);
}
function bodyscroll(){
var w = document.getElementById('wrapper');
//if (scrollY)
if (POBJ.scrollY==0 && window.scrollY>300) {
document.body.classList.add('scroll');
if (w) {
w.style.paddingTop = px(300);
POBJ.wrappertop = 300;
POBJ.scrollY = 300;
}
updateAfterResize();
}
else if (POBJ.scrollY==300 && window.scrollY<300) {
document.body.classList.remove('scroll');
if (w) {
w.style.paddingTop = px(0);
POBJ.wrappertop = 0;
POBJ.scrollY = 0;
}
updateAfterResize();
}
//Pages.wrappertop = POBJ.wrappertop + window.scrollY
}
function updateAfterResize(){
pagepositions();
}
function updatePageCount(){
var c,ann;
Pages.types = {}
Pages.ads = 0;
for (i=0; i < Pages.pages.length; i+=1){
//c = Pages.pages[i].className
c = Pages.pages[i].getAttribute('data-type');
ann = Pages.pages[i].getAttribute('data-ann');
if (ann=='port' || ann=='land') Pages.ads += 0.5;
//console.log(c)
if (!Pages.types[c]) Pages.types[c] = 0;
Pages.types[c] += 1;
//console.log(Pages.types);
}
updatepagedata();
}
function iniPageTypesPopup(){
var i, d, o = document.getElementById('page-types');
if (!o) return // we don’t have an issue nor a dummy to load data for
for (i in Types){
d = document.createElement('div');
d.id = 'page-type-'+i;
d.className = 'action page-type';
d.setAttribute('data-type', i);
d.addEventListener('click',setPageType);
d.innerHTML = Types[i];
//
o.appendChild(d);
}
}
function unsetPage(){
if (Pages.setting) {
Pages.setting.classList.remove('selected');
delete Pages.setting;
}
}
function setPage(p){
unsetPage()
Pages.setting = p;
Pages.setting.classList.add('selected');
}
function setPageType(e) {
var o = e.target,
tp = o.getAttribute('data-type'),
pop = document.getElementById('page-sizes'),
poptypes = document.getElementById('page-types');
if (Pages.setting) {
Pages.setting.setAttribute('data-type', tp);
Pages.pages.splice(Pages.pages.indexOf(Pages.setting),1,Pages.setting);
unsetPage();
}
pop.classList.add('hidden');
updatePageCount();
closeSetting();
}
SettingTimeOut = null;
function closeSetting(){
var i, pop = document.getElementById('page-sizes');
var act, actions = document.getElementsByClassName('action page-type selected');
pop.classList.add('hidden');
for(i=0;i
p.x && Mouse.x < p.x+p.w
&& Mouse.y > y && Mouse.y < y+p.h
){
Pages.pages[i].classList.add('over');
Mouse.pageover = Pages.pages[i];
Mouse.pageoverindex = i;
}
else {
Pages.pages[i].classList.remove('over');
//Mouse.pageover = null;
//delete Mouse.pageoverindex;
}
}
setMoveePos();
//console.log(Mouse);
}
function movepageend(e){
var i, p = document.getElementsByClassName('pages');
//Pages.pages.slice(Mouse.moveeindex,1)
//Pages.pages.splice(Mouse.pageoverindex+1,0,Mouse.movee);
console.log(Mouse);
if (Number.isInteger(Mouse.pageoverindex)){
if (Mouse.pageoverindex == Pages.pages.length-1){
var x = Pages.pages.splice(Mouse.moveeindex,1);
Pages.pages.push(x[0]);
}
else {
Pages.pages = array_move(Pages.pages, Mouse.moveeindex, Mouse.pageoverindex+1);
}
}
// if (Mouse.movee.getAttribute('data-side')=='left'){
// Mouse.parentee.insertBefore(Mouse.movee, Mouse.parentee.firstChild);
// }
// else {
// Mouse.parentee.appendChild(Mouse.movee);
// }
// Mouse.parentee.classList.remove('move')
Mouse.movee.style.left = 'auto';
Mouse.movee.style.top = 'auto';
Mouse.movee.classList.remove('move');
if(Mouse.pageover) Mouse.pageover.classList.remove('over');
for (i=0;i= 0){
Pages.pages.splice(position+1,0,p);
var currentspread = Pages.setting.parentNode.parentNode;
console.log(count,count%2)
if (count%2){
// we need a news spread
sprd = document.getElementById('newspread').cloneNode(true);
sprd.id = '';
sprd.className = "spread";
if (!currentspread.nextElementSibling){
// just append in the end
document.getElementById('wrapper').appendChild(sprd);
}
else {
document.getElementById('wrapper').insertBefore(sprd, currentspread.nextElementSibling);
}
therest = Pages.pages.slice(position+1);
}
else {
therest = Pages.pages.slice(position+1);
}
console.log(therest)
console.log(Pages.setting);
console.log(currentspread);
if (isLeftPage(Pages.setting)) {
currentspread.getElementsByClassName('pages')[0].appendChild(p);
currentspread = currentspread.nextElementSibling;
if (currentspread) currentspread.getElementsByClassName('pages')[0].innerHTML = '';
}
else {
currentspread = currentspread.nextElementSibling;
if (currentspread) currentspread.getElementsByClassName('pages')[0].innerHTML = '';
currentspread.getElementsByClassName('pages')[0].appendChild(p);
}
for (i=1; i=2
){
// go to next spread to fill in pages
currentspread = currentspread.nextElementSibling;
if (currentspread) currentspread.getElementsByClassName('pages')[0].innerHTML = '';
}
currentspread.getElementsByClassName('pages')[0].appendChild(therest[i]);
}
}
else {
Pages.pages.push(p);
if (count%2){
sprd = document.getElementById('newspread').cloneNode(true);
sprd.id = '';
sprd.className = "spread";
document.getElementById('wrapper').appendChild(sprd);
//sprd.getElementsByClassName('pages')[0].appendChild(Pages.pages[Pages.pages.length-1]);
//cont = sprd.previousElementSibling.getElementsByClassName('pages')[0];
//cont.appendChild(p)
sprd.getElementsByClassName('pages')[0].appendChild(p);
}
else {
sprd = document.getElementsByClassName('spread');
cont = sprd[sprd.length-1].getElementsByClassName('pages')[0];
//cont.insertBefore(p,cont.firstChild);
cont.appendChild(p);
}
}
updatepagenumbers();
initpagenumbers();
updatePageCount();
pagepositions();
}
function deletePage(o){
var position = Pages.pages.indexOf(Pages.setting),
currentspread = Pages.setting.parentNode.parentNode,
therest = Pages.pages.slice(position+1);
Pages.setting.parentNode.removeChild(Pages.setting);
for(i=0; i=2
){
currentspread = currentspread.nextElementSibling;
if (currentspread) currentspread.getElementsByClassName('pages')[0].innerHTML = '';
}
currentspread.getElementsByClassName('pages')[0].appendChild(therest[i]);
}
Pages.pages.splice(position,1);
while(currentspread.nextElementSibling) {
currentspread.parentNode.removeChild(currentspread.nextElementSibling);
}
console.log(currentspread.children.length);
// if the current spread is empty, delete it
if (currentspread.getElementsByClassName('pages')[0].children.length==0) currentspread.parentNode.removeChild(currentspread);
updatepagenumbers();
initpagenumbers();
updatePageCount();
pagepositions();
if (Pages.pages.length>position){
unsetPage();
setPage(Pages.pages[position]);
}
else closeSetting();
}
function iffiles(input){
console.log(input)
if (input.value) input.form.classList.remove('nofiles');
else input.form.classList.add('nofiles');
}
function highlightPageTypes(type){
if (document.getElementById('wrapper').className == type) document.getElementById('wrapper').className = ""
else document.getElementById('wrapper').className = type;
}
function pageSize(i=1){
var s = {0:'small',1:'default',2:'large'}
document.getElementById('wrapper').className = s[i];
document.body.className = s[i];
pagepositions();
}
function setPageAnn(t){
var f = {1:'port',2:'land'}
if (Pages.setting.getAttribute('data-ann') == f[t]){
Pages.setting.setAttribute('data-ann','')
}
else {
Pages.setting.setAttribute('data-ann',f[t])
}
updatePageCount();
closeSetting();
}
var DummyData = [];
function __saveDummy(){
var i, p;
DummyData = [];
for (i=0; i1) document.getElementById('wrapper').removeChild(document.getElementById('wrapper').lastChild);
loadDummy();
window.setTimeout(updatepagenumbers,500);
}
function loadDummy(){
if (!(localStorage[localstoragekey] || loadeddummy)) return;
var i, s, d, doc, spread, page,
DummyData,
wrapper = document.getElementById('wrapper'),
thumb,
thumbnails,
thumbnaildiv = document.getElementById('admin-thumbnails');
if (thumbnaildiv) thumbnails = thumbnaildiv.children[0].getElementsByClassName('thumb');
if (loadeddummy){
DummyData = loadeddummy;
}
else {
return;
//DummyData = JSON.parse(localStorage[localstoragekey]);
}
console.log(DummyData)
s = '';
doc = new DOMParser().parseFromString(s, 'text/html');
spread = doc.body.children[0];
d = '';
doc = new DOMParser().parseFromString(d, 'text/html');
page = doc.body.children[0];
var cspread, cpage, dd, cover;
// insert cover page data
dd = DummyData[0];
cover = document.getElementById('page-cover');
if (dd.head) cover.setAttribute('data-head',dd.head)
if (dd.cont) cover.getElementsByClassName('cont')[0].innerHTML = dd.cont;
// insert the pages
for (i=1; i parseInt(getComputedStyle(dt).getPropertyValue('height'))) {
dt.style.height = h + 'px';
dt.style.maxHeight = Math.min(h,window.innerHeight-20) + 'px';
}
else {
dt.style.height = h + 'px';
dt.style.maxHeight = Math.min(700,window.innerHeight-20) + 'px';
}
}
}
if (ts && POBJ[ts]) delete POBJ[ts];
if (d.event=='saveDummy') setTimeout(function(){document.getElementById('save-dummy-button').classList.remove('saving')},500);
if (POBJ.dummyid){
if (d.newid) POBJ.dummyid = d.newid
if (d.newdummy){
loadeddummy = JSON.parse(d.newdummy);
//loadDummy();
}
}
}
function tstamp() {
return (new Date()).getTime();
}
function GetXmlHttpObject() {
// Firefox, Opera 8.0+, Safari
try { return new XMLHttpRequest(); }
catch (e){}
// Internet Explorer
try { return new ActiveXObject("Msxml2.XMLHTTP.6.0");}
catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP.3.0");}
catch (e) {}
try { return new ActiveXObject("Msxml2.XMLHTTP");}
catch (e) {}
try { return xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) {}
return null;
}
function requestArticle() {
args = requestArticle.arguments;
url = encodeURI(args[0]);
prevurl = url;
if (args.length>1) {
//params = encodeURI(args[1].join('&'));
params = 'data='+encodeURI(JSON.stringify(args[1]))
if (typeof(gethtmlupdateMethod!='undefined')) {
if (gethtmlupdateMethod=='GET') {
if(params) url+=(url.indexOf('?')<0)?'?'+params:'&'+params;
//url+=params;
//if (params) url = url + '?' + params;
//if (typeof(gethtmlupdateDebug!='undefined') && gethtmlupdateDebug==true) alert(url);
params = null;
}
}
}
else params = null
console.log(params);
if (debugging) alert(url + ((params)?((url.indexOf('?')<0)?'?':'&')+params+'&test=1&ajax=1':''));
req = GetXmlHttpObject();
if (!req) req = new activeXObject('Microsoft.XMLHTTP');
if (req) {
req.onreadystatechange = checkRequestResponse;
req.open(gethtmlupdateMethod, url, true);
req.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
req.send(params);
}
}
function checkRequestResponse() {
if (req.readyState == 4) {
response = req.responseText;
processRawHTML(response);
}
}
function processRawHTML(input) {
console.log(input);
if (!input) return;
d = JSON.parse(input);
if (d.ts && POBJ[d.ts]) {
var f = POBJ[d.ts];
if (W.isarray(f)) {
var i;
for (i=0;i=0) array.splice(i,1);
return array;
},
isdefined: function(o) { return typeof(o)!='undefined'; },
isstring: function(o) { return typeof(o)=='string'; },
asint: function(o) {
// use as
// if (W.isdefined(i = asint(string_digit_number))) { .... }
// asint('2') -> 2
// asint(1.2) -> undefined
// asint('0') -> 0
if (W.isint(o)) return parseInt(o);
},
isint: function(o) {
if (W.isdefined(o)) return (''+parseInt(o) === o) || (parseInt(o) === o);
return false;
},
isarray: function(o) {
//http://stackoverflow.com/questions/4775722/javascript-check-if-object-is-array
if (Array.isArray) return Array.isArray(o);
return o instanceof Array;
},
isobject: function(o) { return o!=null && typeof(o)=='object'; },
Val: function() {
var i, args = this.Val.arguments;
for (i=0;i= arr.length) {
var k = new_index - arr.length + 1;
while (k--) {
arr.push(undefined);
}
}
arr.splice(new_index, 0, arr.splice(old_index, 1)[0]);
return arr; // for testing
};
function array_move(arr, old_index, new_index){
var i,res = []
var movee = arr[old_index];
for (i=0;i