my = new Array();
freezeUserBox = false;
pageName = "";
timeOffset = 0;
timeOffsetSet = false;
requestedHREF = top.location.href;
doAfterLogin = "";
version = 1.2;

var fpEngine = {
	init: function(page) {
        // fpEngine.checkForUpdates(); /* POTENSIELL INFINITE LOOP HER */
    	pageName = page;
        browser = BrowserDetect.browser;
        browserVersion = BrowserDetect.version;
        fpEngine.populateVars();
        if (pageName == 'frontpage') fpEngine.output_forumLatestFrontpage(4);
        fpEngine.handshake();
        userPing = new PeriodicalExecuter(fpEngine.handshake, 300);  /* SJEKKER HVORVIDT BRUKEREN FREMDELES ER LOGGET PÅ ELLER IKKE */
   		if (pageName == 'article') artEngine.init();
   
   	},

  	getTimeOffset: function(serverTimestamp) {
         if (serverTimestamp > 0) {
            var jsDate = new Date();
      		var timeOffset = jsDate.getTime() - (serverTimestamp * 1000);
      		timeOffset = timeOffset + jsDate.getTimezoneOffset();
      		return timeOffset;
   		} else return 0;
  	},

	handshake: function() {
		var timestamp = new Date().getTime() / 1000;
        lastHandshake = getCookieValue("ita_lastHandshake");
        if ((timestamp - lastHandshake) > 300) {
	      	var myAjax = new Ajax.Request("/hoved_action.php", {
	            method: 'post',
	           	requestHeaders: ['Cache-Control', 'no-cache, must-revalidate, no-store', 'Expires', '0', 'pragma', 'no-cache'],
	        	parameters: 'task=handshake&ajax=' + new Date() * 1,
	            onSuccess: function(req){
	            	eval("my = "+req.responseText);
	                my.timeOffset = fpEngine.getTimeOffset(my.serverTimestamp);
	                fpEngine.populateCookie();
	          		fpEngine.showUserBox();
	          		fpEngine.loadAdminStuff();
	          		writeSessionCookie("ita_lastHandshake", timestamp);
	        	}
	      	});
    	} else {
         	fpEngine.populateVars();
          	fpEngine.showUserBox();
          	fpEngine.loadAdminStuff();
     	}
	},


	output_forumLatestFrontpage: function(numTopics) {
        if (typeof numTopics == 'undefined') numTopics = 20;
        output = fpEngine.output_forumList(numTopics);
    	$('forumLatestFrontpage').innerHTML = output;
	},


	checkForUpdates: function() {
		if (GuruMeditation > version) window.location.reload(true);
	},


	output_forumList: function(numTopics, title, bothButtons) {
		if (typeof numTopics == 'undefined') numTopics = 10;
		if (typeof title == 'undefined') title = "FERSKE INNLEGG I <a href='/forum/' class='listHeaderLink' style='color: #fff;' title='Forumet'>FORUMET</a>";
		if (typeof bothButtons == 'undefined') bothButtons = true;
		output = '<div class="forumList">'
		output += '<h1>' + title + '</h1>';
		output += '<div class="forumListWrapper">';
		for (var i=0; i<=numTopics; i++) {
			if (typeof debatt_innlegg_overskrift[i] != 'undefined') {
			if (pageName == 'frontpage') bullet = '<img src="/gfx/icons/liOrange.png" />';
        		else bullet = '<a title="Les dette innlegget fra ' + debatt_innlegg_navn[i] + '" href="/forum/' + debatt_innlegg_id[i] + '/"><img src="/gfx/image.php?src=users/' + encodeURIComponent(debatt_innlegg_navn[i]) + '.jpg&h=20&w=20&default=/users/defaultUser.jpg" alt="' + debatt_innlegg_navn[i] + '" ></a>';
        		output += '<div class="forumListItem"><div class="bullet">' + bullet + '</div><div class="listText"><a href="/forum/' + debatt_innlegg_id[i] + '/"';
        		if ((elapsed_seconds(debatt_innlegg_dato[i]) <= 60)) output += ' style="color: #ee7000;" ';
        		else if (debatt_innlegg_status[i] == 'avsluttet') output += ' style="color: #b2b79a;" ';
        		output += '>' + debatt_innlegg_overskrift[i] + '</a></div></div>';
      		}
     	}
     	output += '</div>';
     	output += '<div class="forumListBottomLink"><div id="forumListNewPost"><a href="/forum/skriv/" title="Start et nytt emne i ITavisens Forum">Nytt emne</a></div>';
     	if (bothButtons) output += '<div id="forumListToForum"><a href="/forum/" title="Utforsk et av norges mest aktive teknologi-fora">Bes&oslash;k forumet</a></div>';
     	output += '</div>';
        output += '</div>';
     	return output;
	},


  populateVars: function() {
    my.username = getCookieValue("ita_username");
    // alert(my.username);
    my.id = getCookieValue("ita_id");
    my.status = getCookieValue("ita_status");
    my.newsletter = getCookieValue("ita_newsletter");
    my.timeOffset = getCookieValue("ita_timeOffset");
  },

  populateCookie: function() {
    writeSessionCookie("ita_username", my.username);
    writeSessionCookie("ita_id", my.id);
    writeSessionCookie("ita_status", my.status);
    writeSessionCookie("ita_newsletter", my.newsletter);
    writeSessionCookie("ita_timeOffset", my.timeOffset);
  },

  showUserBox: function() {
    if (!freezeUserBox) {
      var output = '';
      if ((my.username != false) && (my.username != "gjest")) {
        $('aboveLoginBox').innerHTML = '';
        output += '<a href="/brukere/' + encodeURIComponent(my.username) + '" title="Min profil"><img src="/gfx/image.php?src=users/' + encodeURIComponent(my.username) + '.jpg&h=34&w=34&default=/icons/defaultUser.jpg" alt="Gå til min side" /></a><span>Pålogget: <a href="/brukere/' + encodeURIComponent(my.username) + '" title="Gå til min brukerside"><b>' + my.username + '</b></a></span>';
        output += '<div class="loginBoxButton" id="goToProfile"><div><a href="/brukere/' + encodeURIComponent(my.username) + '" title="Min profil">Min Profil</a></div></div>';
        output += '<div class="loginBoxButton" id="logOff"><div><a href="javascript:fpEngine.logOff();" title="Logg ut">Logg ut</a></div></div>';
      } else {
        $('aboveLoginBox').innerHTML = '';
        output += '<a href="javascript:fpEngine.showLogin();" title="Logg på"><img src="/gfx/image.php?src=icons/defaultUser.jpg&h=34&w=34" alt="Logg på" /></a>';
        output += '<span>Du er ikke pålogget.</span>';
        output += '<div class="loginBoxButton" id="goToLogin"><div><a href="javascript:fpEngine.showLogin();" title="Logg på">Logg på</a></div></div>';
        output += '<div class="loginBoxButton" id="goToRegistration"><div><a href="/registrering/" title="Registrer deg på ITavisen">Registrer deg</a></div></div>';
      }
      $('headerLoginBox').innerHTML = output;
      Behaviour.apply();
    }
  },

  showLogin: function() {
      freezeUserBox = true;
      output = '';
      $('aboveLoginBox').innerHTML = '<a href="javascript: fpEngine.getNewPassword();" title="Glemt passordet ditt?">Glemt passordet?</a> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a href="/registrering/" title="registrering">Ny bruker</a>';
      output += '<form name="loginForm" method="POST" action="javascript:fpEngine.loginFormSubmit();">';
      output += '<div id="loginArea">';
      output += 'Bruker <input type="text" name="brukernavn" id="brukernavn" />';
      output += '<br/>Passord <input type="password" name="passord" id="passord" /><input type="submit" name="submit" value="ok" class="submitButton" />';
      output += '<div id="rememberMeButton"><input type="checkbox" name="rememberMe" id="rememberMe" /> husk</div>';

      output += '</div>';
      output += '</form>';
      $('headerLoginBox').innerHTML = output;
      setTimeout("$('brukernavn').focus();", 100);
      freezeLoginBox = true;
  },

  showLoginScreen: function(loginMsg){
    if (my.id < 1) {
      freezeUserBox = false;
      fpEngine.showUserBox();
      // FØRST, GRÅ UT SKJERMEN
      if (typeof loginMsg === 'undefined') loginMsg = false;
      var grayout = document.createElement('div');
      grayout.setAttribute('id', 'grayout');
      document.body.appendChild(grayout);
      if ((browser === "Explorer") && (browserVersion <= 6)) {
        grayout.style.position = 'absolute';
        grayout.style.height = document.body.offsetHeight;
      }

      // SÅ, LAG LOGIN-BOKS
      var loginScreenBox = document.createElement('div');
      loginScreenBox.setAttribute('id','loginScreenBox');
      //* loginScreenBox.setAttribute("onclick", "document.body.removeChild($('grayout')); document.body.removeChild($('loginScreenBox'))");**/
      output = '<div class="inner">';
      output += '<h1>Logg på ITavisen.no</h1>';
      output += '<div id="loginMsg">' + loginMsg + '</div>';
      output += '<form name="loginScreenForm" method="POST" action="javascript:fpEngine.loginFormSubmit();">';
      output += '<div id="loginArea">';
      output += 'Brukernavn <input type="text" name="brukernavn" id="brukernavn" />';
      output += '<br/>Passord <input type="password" name="passord" id="passord" /><input type="submit" name="submit" value="ok" class="submitButton" />';
      output += '<div id="rememberMeButton"><input type="checkbox" name="rememberMe" id="rememberMe" /> husk</div>';
      output += '</form></div>';
      output += '<div id="loginHelpArea"><a href="javascript: fpEngine.getNewPassword();" title="Glemt passordet?">Glemt passordet?</a><br /><br />';
      output += '<a href="/registrering/">Klikk her for å opprette en bruker</a>';
      output += '</div>'; 
      output += '<h5><a href="javascript: fpEngine.hideLoginScreen()" title="Avbryt pålogging">[x] lukk dette vinduet</a></h5>'
      output += '</div>';
      loginScreenBox.innerHTML = output;
      document.body.appendChild(loginScreenBox);
      setTimeout("$('brukernavn').focus();", 100);
      Position.center(loginScreenBox);
    }
  },

  hideLoginScreen: function() {
    if (doAfterLogin && !my.id) {
        doAfterLogin = "";
    }
    if ($('loginScreenBox')) document.body.removeChild($('loginScreenBox'));
    if ($('grayout'))   document.body.removeChild($('grayout'));
  },

  loginFormSubmit: function() {
    brukernavn = $F('brukernavn');
    passord = $F('passord');
    if (!brukernavn || !passord) {
      alert('Du må fylle inn både brukernavn og passord!');
    } else {
      var rememberMe = ($F('rememberMe')) ? $F('rememberMe') : "off";
      var myAjax = new Ajax.Request("/hoved_action.php", {
                  method: 'post',
            requestHeaders: ['Cache-Control', 'no-cache, must-revalidate, no-store', 'Expires', '0', 'pragma', 'no-cache'],
                  parameters: 'task=validateLogin&formUsername=' + brukernavn + '&formPassword=' + passord + '&formRememberMe=' + rememberMe + '&ajax=' + new Date() * 1,
                  onSuccess: function(req){
			if (eval("my = "+req.responseText)) {	
              if (my.errorMsg) { /* PÅLOGGING MISLYKKET */
                alert(my.errorMsg);
                fpEngine.populateVars();
                $('passord').focus();
              } else {  /* PÅLOGGING VELLYKKET */
                freezeUserBox = false;
                fpEngine.hideLoginScreen();
                my.timeOffset = fpEngine.getTimeOffset(my.serverTimestamp);
                fpEngine.populateCookie();
                fpEngine.showUserBox();
                fpEngine.loadAdminStuff();
                //if ($('commentInputArea')) forumEngine.renderPostButtons();
                if ($('topicButtons')) forumEngine.renderTopicButtons();
                if (typeof userEngine != 'undefined') userEngine.doLogIn();
                if (typeof pimpmypcEngine != 'undefined') pimpmypcEngine.doLogIn();
                if (typeof freecastEngine != 'undefined') freecastEngine.doLogIn();
                if (typeof newsletterEngine != 'undefined') newsletterEngine.doLogIn();
                if (typeof sausnebbEngine != 'undefined') sausnebbEngine.doLogIn();
                if (doAfterLogin) {
                  eval(doAfterLogin);
                  doAfterLogin = "";
                }
              }
            }
                     }
      });
    }
  },

  logOff: function() {
    var myAjax = new Ajax.Request("/hoved_action.php", {
                method: 'post',
          requestHeaders: ['Cache-Control', 'no-cache, must-revalidate, no-store', 'Expires', '0', 'pragma', 'no-cache'],
                parameters: 'task=logOff&ajax=' + new Date() * 1,
                onSuccess: function(req){
                          eval("my = "+req.responseText);
                          fpAdmin = "";
                          fpAdminRules = "";
        fpEngine.populateCookie();
        fpEngine.showUserBox();
        if ($('commentInputArea')) forumEngine.renderPostButtons();
        if ($('topicButtons')) forumEngine.renderTopicButtons();
        if (typeof userEngine != 'undefined') userEngine.doLogOff();
        if (typeof pimpmypcEngine != 'undefined') pimpmypcEngine.doLogOff();
        if (typeof freecastEngine != 'undefined') freecastEngine.doLogOff();
        if (typeof newsletterEngine != 'undefined') newsletterEngine.doLogOff();
        if (typeof sausnebbEngine != 'undefined') sausnebbEngine.doLogOff();
        Behaviour.apply();
      }
    });
  },

  loadAdminStuff: function() {
    if (((my.status == "superuser") && ((pageName == 'frontpage') || (pageName == 'article') || (pageName == 'spillFrontpage'))))  {
      if (pageName == 'article') filename = "/include/art/artAdmin.php";
      else filename = "/include/frontpage/fpAdmin.php";
      if (filename) {
        var myAjax = new Ajax.Request(filename, {
                      method: 'post',
                requestHeaders: ['Cache-Control', 'no-cache, must-revalidate, no-store', 'Expires', '0', 'pragma', 'no-cache'],
                parameterts: 'ajax=' + new Date() * 1,
                      onSuccess: function(req){
                                        eval(req.responseText);
                                        if (pageName == 'article') artAdmin.init();
                                         else if (pageName == 'spillFrontpage') fpAdmin.init(19030);
                                        else if (pageName == 'frontpage') fpAdmin.init(19000);
                Behaviour.apply();
                }
          });
          loadObjects('/css/admin.css');
         }
    }
  },

  outputNewsList: function(numStories, omit) {
        if (typeof omit == 'undefined') omit = 0;
    output = '';
    output = '<div id="newsList">';
    output += '<h4>SISTE NYHETER</h4>';
    for(i = 0; i<=numStories; i++) {
      if (typeof newsList_title[i] != 'undefined') {
              if (newsList_Ids[i] != omit) {
                        output += '<div class="newsListStory">';
                        output += '<a href="' + newsList_HREF[i] + '" title="Klikk for å lese hele saken"><img alt="Klikk for å lese hele saken" src="' + newsList_imageURL[i] + '" width="100" height="56" /></a>';
                        output += '<h2><a href="' + newsList_HREF[i] + '" title="Klikk for å lese hele saken">' + newsList_title[i] + '</a>';
                        if (newsList_comments[i] > 0) output += ' <a href="' + newsList_HREF[i] + '" class="numComments" title="Denne saken har ' + newsList_comments[i] + ' kommentarer">[' + newsList_comments[i] +']</a>';
                        output += '</h2>';
                        output += '</div>';
                }
      }
    }
    output += '<h4><a href="/nyheter/" title="Nyhetsoversikt"><u>BLA I NYHETER</u></a></h4>';
    output += '</div>';
    return output;
  },

  getNewPassword:function () {
    var usernameOrEmail = prompt('Vi kan godt sende deg et nytt passord, men da må du oppgi epost-adressen din: ', '');
    if (usernameOrEmail) {
      var myAjax = new Ajax.Request("/registrering/registrering_action.php", {
                  method: 'post',
            requestHeaders: ['Cache-Control', 'no-cache, must-revalidate, no-store', 'Expires', '0', 'pragma', 'no-cache'],
                  parameters: 'task=newPassword&usernameOrEmail=' + encodeURIComponent(usernameOrEmail) + '&ajax=' + new Date() * 1,
                  onSuccess: function(req){
          if (req.responseText) {
            alert(req.responseText);
          }
                    }
      });
    }
  }
};


var BrowserDetect = {
        init: function () {
                this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
                this.version = this.searchVersion(navigator.userAgent)
                        || this.searchVersion(navigator.appVersion)
                        || "an unknown version";
                this.OS = this.searchString(this.dataOS) || "an unknown OS";
        },
        searchString: function (data) {
                for (var i=0;i<data.length;i++)        {
                        var dataString = data[i].string;
                        var dataProp = data[i].prop;
                        this.versionSearchString = data[i].versionSearch || data[i].identity;
                        if (dataString) {
                                if (dataString.indexOf(data[i].subString) != -1)
                                        return data[i].identity;
                        }
                        else if (dataProp)
                                return data[i].identity;
                }
        },
        searchVersion: function (dataString) {
                var index = dataString.indexOf(this.versionSearchString);
                if (index == -1) return;
                return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
        },
        dataBrowser: [
                {         string: navigator.userAgent,
                        subString: "OmniWeb",
                        versionSearch: "OmniWeb/",
                        identity: "OmniWeb"
                },
                {
                        string: navigator.vendor,
                        subString: "Apple",
                        identity: "Safari"
                },
                {
                        prop: window.opera,
                        identity: "Opera"
                },
                {
                        string: navigator.vendor,
                        subString: "iCab",
                        identity: "iCab"
                },
                {
                        string: navigator.vendor,
                        subString: "KDE",
                        identity: "Konqueror"
                },
                {
                        string: navigator.userAgent,
                        subString: "Firefox",
                        identity: "Firefox"
                },
                {
                        string: navigator.vendor,
                        subString: "Camino",
                        identity: "Camino"
                },
                {                // for newer Netscapes (6+)
                        string: navigator.userAgent,
                        subString: "Netscape",
                        identity: "Netscape"
                },
                {
                        string: navigator.userAgent,
                        subString: "MSIE",
                        identity: "Explorer",
                        versionSearch: "MSIE"
                },
                {
                        string: navigator.userAgent,
                        subString: "Gecko",
                        identity: "Mozilla",
                        versionSearch: "rv"
                },
                {                 // for older Netscapes (4-)
                        string: navigator.userAgent,
                        subString: "Mozilla",
                        identity: "Netscape",
                        versionSearch: "Mozilla"
                }
        ],
        dataOS : [
                {
                        string: navigator.platform,
                        subString: "Win",
                        identity: "Windows"
                },
                {
                        string: navigator.platform,
                        subString: "Mac",
                        identity: "Mac"
                },
                {
                        string: navigator.platform,
                        subString: "Linux",
                        identity: "Linux"
                }
        ]

};
BrowserDetect.init();

var loadedobjects="";

function loadObjects(){
  if (!document.getElementById)
  return
  for (i=0; i<arguments.length; i++){
  var file=arguments[i]
  var fileref=""
  if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
  if (file.indexOf(".js")!=-1){ //If object is a js file
  fileref=document.createElement('script')
  fileref.setAttribute("type","text/javascript");
  fileref.setAttribute("src", file);
  }
  else if (file.indexOf(".css")!=-1){ //If object is a css file
  fileref=document.createElement("link")
  fileref.setAttribute("rel", "stylesheet");
  fileref.setAttribute("type", "text/css");
  fileref.setAttribute("href", file);
  }
  }
  if (fileref!=""){
  document.getElementsByTagName("head").item(0).appendChild(fileref)
  loadedobjects+=file+" " //Remember this object as being already added to page
  }
  }
}

function addCSS() {
  linkElement=document.createElement("style");
  linkElement.text="a{font-size: 32px;}";
  linkElement.type="text/css";
  document.head.appendChild(linkElement);
  alert("hei");
}

function urlescape(str) {
          str = encodeURI(str);
          str = str.replace(/%20/g, "_");
    return str;
}

norsk = new Array("æ","Æ","ø","Ø","å","Å","´","\"", "é","É","ü","Ü","û","Û");
html = new Array("&aelig;","&AElig;","&oslash;", "&Oslash;","&aring;","&Aring;","&rsquo;","&quot;","&eacute;","&Eacute;","&uuml;","&Uuml;","&ucirc;","&Ucirc;");

function fix_output(output) {
  output = norsk_to_html(output);
  return output;
}

function norsk_to_html(str) {
  return str;
}

function html_to_norsk(str) {
  for (var i = 0; i <= html.length; i++) {
    eval('str = str.replace(/' + html[i] + '/g,\'' + norsk[i] + '\');');
  }
  return str;
}


NorwegianWeekDaysLong = new Array ("søndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "lørdag");
NorwegianMonths = new Array("januar", "februar", "mars", "april", "mai", "juni", "juli", "august", "september", "oktober", "november", "desember");


function elapsed_time(timestamp) {
  output = '';
  var jsDate = new Date();
  jsDate.setTime(jsDate.getTime() - my.timeOffset);

  var date = new Date();
  date.setTime(timestamp);

  var yesterday = new Date();
  yesterday.setTime(jsDate.getTime());
  yesterday.setDate(jsDate.getDate() -1);

  var from = Math.round(date.getTime() / 1000);
  var to = Math.round(jsDate.getTime() / 1000);

          var day = date.getDate();
          var month = date.getMonth();
          var year = date.getFullYear();
          var weekday = date.getDay();

      var diff = to - from;
      var days = Math.floor(diff/86400 ); //calculate the days
      diff = diff - (days*86400); // subtract the days

      var hours = Math.floor(diff/3600 ); // calculate the hours
      diff = diff - (hours*3600); // subtract the hours

      var mins = Math.floor(diff/60 ); // calculate the minutes
      diff = diff - (mins*60); // subtract the mins

      var secs = diff; // what's left is the seconds


        if (date.getFullYear() == jsDate.getFullYear()){
               if (((' ' + date.getDate() + date.getMonth() + date.getFullYear()) == (' ' + jsDate.getDate() + jsDate.getMonth() + jsDate.getFullYear())) || (!days && (hours < 12))) {
                       if (hours < 1) {
                               if (!mins) {
                                       output = " nå";
                               }
                               else if (mins == "1"){
                                       output = " for " + mins + " minutt siden";
                               }
                               else {
                                       output = " for " + mins + " minutter siden";
                               }
                       }

                       else if (hours == 1) {
                               output = " for " + hours + " t";
                               if (mins) output +=  " " + mins + " min ";
                               else output += "ime ";
                               output += "siden";
                       }

                       else if (hours < 6) {
                               output = " for " + hours + " t";
                               if (mins) output +=  " " + mins + " min ";
                               else output += "imer ";
                               output += "siden";
                       }

                       else {
                               /* output = " for " + hours + " timer siden"; */
                               output = 'kl ' + zerofix(date.getHours()) + ':' + zerofix(date.getMinutes());
                       }
               }
               else if ((' ' + date.getDate() + date.getMonth() + date.getFullYear()) == (' ' + yesterday.getDate() + yesterday.getMonth() + yesterday.getFullYear())) output = ' i går kl ' + zerofix(date.getHours()) + ':' + zerofix(date.getMinutes());
               else if (days < 6) output = " på " + NorwegianWeekDaysLong[weekday];
               else output = " " + day + ". " + NorwegianMonths[month];
        }
        else {
               output = date.getDate() + '. ' + NorwegianMonths[date.getMonth()] + ' ' + date.getFullYear();
        }
  /* output = date.getDate() + '. ' + NorwegianMonths[date.getMonth()] + ' kl ' + zerofix(date.getHours()) + ':' + zerofix(date.getMinutes()); */
  return fix_output(output);
}


function dateTime_short(timestamp) {
  output = '';
  var jsDate = new Date();
  jsDate.setTime(jsDate.getTime() - my.timeOffset);

  var date = new Date();
  date.setTime(timestamp);

  var yesterday = new Date();
  yesterday.setTime(jsDate.getTime());
  yesterday.setDate(jsDate.getDate() -1);

  var from = Math.round(date.getTime() / 1000);
  var to = Math.round(jsDate.getTime() / 1000);

          var day = date.getDate();
          var month = date.getMonth();
          var year = date.getFullYear();
          var weekday = date.getDay();

      var diff = to - from;
      var days = Math.floor(diff/86400 ); //calculate the days
      diff = diff - (days*86400); // subtract the days

      var hours = Math.floor(diff/3600 ); // calculate the hours
      diff = diff - (hours*3600); // subtract the hours

      var mins = Math.floor(diff/60 ); // calculate the minutes
      diff = diff - (mins*60); // subtract the mins

      var secs = diff; // what's left is the seconds


        if (date.getFullYear() == jsDate.getFullYear()){
               if (((' ' + date.getDate() + date.getMonth() + date.getFullYear()) == (' ' + jsDate.getDate() + jsDate.getMonth() + jsDate.getFullYear())) || (!days && (hours < 12))) {
                               output = '' + zerofix(date.getHours()) + ':' + zerofix(date.getMinutes());
               }
               else if ((' ' + date.getDate() + date.getMonth() + date.getFullYear()) == (' ' + yesterday.getDate() + yesterday.getMonth() + yesterday.getFullYear())) output = ' i går';
               else if (days < 6) output = " på " + NorwegianWeekDaysLong[weekday];
               else output = " " + day + ". " + NorwegianMonths[month];
        }
        else {
               output = date.getDate() + '. ' + NorwegianMonths[date.getMonth() + 1] + ' ' + date.getFullYear();
        }
  /* output = date.getDate() + '. ' + NorwegianMonths[date.getMonth()] + ' kl ' + zerofix(date.getHours()) + ':' + zerofix(date.getMinutes()); */
  return fix_output(output);
}


function elapsed_seconds(timestamp) {
  var jsDate = new Date();
  jsDate.setTime(jsDate.getTime() - my.timeOffset);

  var date = new Date();
  date.setTime(timestamp);

  var from = Math.round(date.getTime() / 1000);
  var to = Math.round(jsDate.getTime() / 1000);
  var diff = to - from;
  return diff;
}


function zerofix (num) {  /* formatterer f.eks 2 til 02 */
  if(parseInt(num) < 0) var neg = true;
  if (Math.abs(parseInt(num)) < 10){
    num = "0" + Math.abs(num);
  }
  if (neg) num = "-"+num;
  return num;
}

function insertSmiley(smiley, divId) {
  if ($(divId)) {
    $(divId).value += smiley;
  }
}

function openSmileyWindow(){
  alert("Flere smileys...ikke implementert enda.");
}

function getPointerX(e) {
  if(browser == "Explorer") {
                                mouseX = Event.pointerX(event);
        } else {
                                mouseX = Event.pointerX(e);
        }
  return mouseX;
}

function getPointerY(e) {
  if(browser == "Explorer") {
          mouseY = Event.pointerY(event);
        } else {
          mouseY = Event.pointerY(e);
        }
  return mouseY;
}

Position.center = function(element){
          var options = Object.extend({
              zIndex: 999,
              update: false
          }, arguments[1] || {});
          element = $(element)
          if(!element._centered){
              Element.setStyle(element, {position: 'absolute', zIndex:
  options.zIndex });
              element._centered = true;
          }
          var dims = Element.getDimensions(element);
          Position.prepare();
          var winWidth = self.innerWidth ||
  document.documentElement.clientWidth || document.body.clientWidth || 0;
          var winHeight = self.innerHeight ||
  document.documentElement.clientHeight || document.body.clientHeight || 0;
          var offLeft = (Position.deltaX + Math.floor((winWidth-dims.width
  )/2));
          var offTop = (Position.deltaY + Math.floor((winHeight-dims.height
  )/2));
          element.style.top = ((offTop != null && offTop > 0) ? offTop : '0')
  + 'px';
          element.style.left = ((offLeft != null && offLeft > 0) ? offLeft :
  '0') + 'px';
          if(options.update){
              Event.observe(window, 'resize', function(evt){
  Position.center(element);
  }, false);
              Event.observe(window, 'scroll', function(evt){
  Position.center(element);
  }, false);
          }
}

function strip_tags_forum(str) {
  // str = str.replace(/<img([^>]+)alt='([^']+)'([^>]*)>/ig,"$2"); // behold smileys
  str = str.replace(/\\\//g, '/'); // counter of some obscure bug produced by eval();
  str = str.replace(/<br([\s]?)\/>/ig,"\n");  // behold linjeskift
  // str = str.replace(/<a href=([^\s]+)\starget=_blank>(.+)<\/a>/ig,"[url=$1]$2[/url]");  // behold lenker
  str = strip_tags(str);
  str = html_to_norsk(str);
  return str;
}

function strip_tags(str) {
  str = str.replace(/(<([^>]+)>)/ig,"");
  return str;
}

function ur_mod() {
  return ((my.status == 'moderator') || (my.status == 'superuser'));
}

function ur_super() {
  return (my.status == 'superuser');
}

function get_imgSrcURL(src, width, height) {
  return 'http://media.allerinternett.no/php/viewMediaPic.php?s=' + encodeURIComponent(src) + '&w=' + width + '&h=' + height;
}


function trim(str) {
  return str.replace(/^\s+|\s+$/g, '');
}

function iFrameDoc(elementName) {
      var doc;
      if( $(elementName).contentDocument )
            // For NS6
            doc = $(elementName).contentDocument;
      else if( $(elementName).contentWindow )
            // For IE5.5 and IE6
            doc = $(elementName).contentWindow.document;
      else if( $(elementName).document )
            // For IE5
            doc = $(elementName).document;
      else //other browser
            doc = $(elementName).document;

      return doc;
}

function in_array(str, daArray) {
  var foundMatch = false;
  daArray.each(function(arrayValue) {
    if (arrayValue == str) {
      foundMatch = true;
      return true;
    }
  });
  return foundMatch;
}
