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