/**
 * Script-file for default functions needed on all sites
 *
 * @author Alexander Vassbotn Røyne-Helgesen <alexander@allerinternett.no>
 * @package Art.Sys
 * @subpackage Javascript
 * @version $Id$
 */

/**
 * Let the page render if error is thrown
 */
window.onerror = function() {  return true;}


/**
 * Make sure console function calls don't fail in shitty browsers..
 */

  if (!window.console) window.console = {};
  if (!window.console.log) window.console.log = function() {};
  /* Point the rest of the console functions to the log function if they don't exist */
  if (!window.console.info) window.console.info = window.console.log;
  if (!window.console.debug) window.console.debug = window.console.log;
  if (!window.console.warn) window.console.warn = window.console.log;
  if (!window.console.error) window.console.error = window.console.log;


/*--------------------*/

/* A place to store data that is written inline serverside.
 * (-Yes it sucks that we have no way of writing out a variable with these data
 *  only once..) */
if (Object.isUndefined(window.serverData)) { window.serverData = {}; }


/*--------------------*/

if (Object.isUndefined(elementHelpers)) { var elementHelpers = {} }

elementHelpers.manageClass = function(id, class_name, add) {
  if(add == true){
    if($(id)){
      $(id).addClassName(class_name);
    }
  } else {
    if($(id)){
      if($(id).hasClassName(class_name)){
        $(id).removeClassName(class_name);
      }
    }
  }
}

/*--------------------*/

elementHelpers.CreateElement = function(elementToCreate){  
	return document.createElement(elementToCreate);
}

/*--------------------*/

elementHelpers.replaceInput = function(obj) {
  var newO  = elementHelpers.CreateElement('input');
	newO.setAttribute('type','password');
	newO.setAttribute('name',obj.getAttribute('name'));
	newO.setAttribute('id',obj.getAttribute('id'));											
	newO.setAttribute('tabindex',obj.getAttribute('tabindex'));																						
	obj.parentNode.replaceChild(newO,obj);
	newO.focus();
}

/*--------------------*/

if (Object.isUndefined(formHelpers)) { var formHelpers = {} }
formHelpers.defaultText = function(text_input_el) {
  /* Clears the default value of a text-field and resets it if no text has been entered.
   * usage:
   * <input type="text"
   *        onblur="formHelpers.defaultText(this);"
   *        onfocus="formHelpers.defaultText(this);"
   *        value="Default text value">
   */
  if (text_input_el.defaultValue == text_input_el.value) {
    text_input_el.value = "";
  } else if (text_input_el.value.trim() == "") {
    // Store default value
    text_input_el.value = text_input_el.defaultValue;
  }
};

/*--------------------*/

if (Object.isUndefined(Activity)) { var Activity = {} }

Activity.add = function(verb, object_type, object_id, previous_object_value,url){
  new Ajax.Request( GSO.Var.AjaxDir + 'activity.php',{
    parameters: {
      verb: verb, 
      object_type: object_type, 
      object_id:object_id, 
      previous_object_value:previous_object_value,
      url: url
    }
  });
}

/*--------------------*/

/**
 * For legacy support
 */
function sso_manageClass(id, field_className, add){  elementHelpers.manageClass(id, field_className, add);}



FORM = {
  HideElement : function(element){
    if($(element)){
      if($(element).visible()){
        $(element).hide();
      }
    }
  },
  ManageClassName : function(id, field_className, add){ elementHelpers.manageClass(id, field_className, add);},
  ShowElement : function(element){
    if($(element)){
      if(!$(element).visible()){
        $(element).show();
      }
    }
  },
  ResetField : function(field){
    if($(field)){
      $(field).value  = '';
    }
  },    
  Submit : function(form, callback){
      // Set up an ajax request to proccess the form
      if(callback){
        new Ajax.Request( $(form).action, {
          parameters: $(form).serialize(true),
          onSuccess:  function(response){callback(response);},
          onFailure:  function(response){callback(response);},
          onComplete: function(response){}
        });
      } else {
        new Ajax.Request( $(form).action, {
          parameters: $(form).serialize(true),
          onSuccess: function(response){

          },
          onFailure: function(response){

          },
          onComplete: function(response){

          }

        });
      }
  },
  ValidateReCaptcha : function(form){
    challengeField = $("recaptcha_challenge_field").value;
    responseField = $("recaptcha_response_field").value;
    new Ajax.Request( $(form).action, {
          parameters: $(form).serialize(true),
          onSuccess:  function(response){
            data  = response.responseText.evalJSON();
            if (data.status == 'success'){
              $("recaptcha_feedback").remove();  
              alert('success');
            } else {
              $("recaptcha_feedback").update(data.text);
              $("recaptcha_feedback").appear();
              Recaptcha.reload();
            }


          },
          onFailure:  function(response){},
          onComplete: function(response){}
        });
  },
  LoadReCaptcha : function (recaptcha_element){
     Recaptcha.create("6LcrW8kSAAAAAByfcQZQNb9qSSs7HvDc-wb8-iAW",
      recaptcha_element,
      {
        theme: "blue",
        callback: Recaptcha.focus_response_field
      }
    );
  },
  CreatePlaceHolderListeners : function(){
    $$('.placeholder input[type=text]').each(function(element){
      element.value =  '';
    });

    $$('.placeholder input[type=password]').each(function(element){
      element.value =  '';
    });

    $$('.placeholder label').each(function(element){
      Event.observe(element,'click',function(event){
        p	= $(element).up('div');
        $(p).addClassName('focused');
        $(element).focus();
      });
    });

    $$('.placeholder input').each(function(element){
      Event.observe(element,'focus',function(event){
        p	= $(element).up();
        $(p).addClassName('focused');
        $(element).focus();
      });

      Event.observe(element,'change',function(event){
        if($(element).value != ''){
          p	= $(element).up();
          $(p).addClassName('focused');
        }
      });

      Event.observe(element,'blur',function(event){
        if($(element).value == ''){
          p	= $(element).up();
          $(p).removeClassName('focused');
        }
      });
    });
  }
 };


var isiPad 	    = navigator.userAgent.match(/iPad/i) != null; 	
var isiPhone	  = navigator.userAgent.match(/iPhone/i) != null; 	
var isiPod	    = navigator.userAgent.match(/iPod/i) != null;
var isAndroid   = navigator.userAgent.match(/Android/i) != null;  
  
function openWindow(anchor, options) {

  var args = '';

  if (typeof(options) == 'undefined') { var options = new Object(); }
  if (typeof(options.name) == 'undefined') { options.name = 'win' + Math.round(Math.random()*100000); }

  if (typeof(options.height) != 'undefined' && typeof(options.fullscreen) == 'undefined') {
    args += "height=" + options.height + ",";
  }

  if (typeof(options.width) != 'undefined' && typeof(options.fullscreen) == 'undefined') {
    args += "width=" + options.width + ",";
  }

  if (typeof(options.fullscreen) != 'undefined') {
    args += "width=" + screen.availWidth + ",";
    args += "height=" + screen.availHeight + ",";
  }

  if (typeof(options.center) == 'undefined') {
    options.x = 0;
    options.y = 0;
    args += "screenx=" + options.x + ",";
    args += "screeny=" + options.y + ",";
    args += "left=" + options.x + ",";
    args += "top=" + options.y + ",";
  }

  if (typeof(options.center) != 'undefined' && typeof(options.fullscreen) == 'undefined') {
    options.y=Math.floor((screen.availHeight-(options.height || screen.height))/2)-(screen.height-screen.availHeight);
    options.x=Math.floor((screen.availWidth-(options.width || screen.width))/2)-(screen.width-screen.availWidth);
    args += "screenx=" + options.x + ",";
    args += "screeny=" + options.y + ",";
    args += "left=" + options.x + ",";
    args += "top=" + options.y + ",";
  }

  if (typeof(options.scrollbars) != 'undefined') { args += "scrollbars=1,"; }
  if (typeof(options.menubar) != 'undefined') { args += "menubar=1,"; }
  if (typeof(options.locationbar) != 'undefined') { args += "location=1,"; }
  if (typeof(options.resizable) != 'undefined') { args += "resizable=1,"; }

  var win = window.open(anchor, options.name, args);
  return false;

}

	
if (Object.isUndefined(objectHelpers)) { var objectHelpers = {} }

objectHelpers.strpos = function(haystack, needle, offset) {
  // http://kevin.vanzonneveld.net
	// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Onno Marsman    
	// +   bugfixed by: Daniel Esteban
	// *     example 1: strpos('Kevin van Zonneveld', 'e', 5);
	// *     returns 1: 14

	var i = (haystack+'').indexOf(needle, (offset ? offset : 0));
	return i === -1 ? false : i;
}
	
/*--------------------*/
// For legacy support
function strpos (haystack, needle, offset) {
	return objectHelpers.strpos(haystack, needle, offset);
}

function replaceT(obj){
	elementHelpers.replaceInput(obj);
}			

// ###########################################################
// methods to be assimilated into conformance

/*--------------------*/

function RemoveConsecutiveValues(strString, strConValue){
	while (strString.indexOf(strConValue + strConValue) >= 0)
		strString = strString.replace(strConValue + strConValue, strConValue);
	return strString;
}	

/*--------------------*/

function stripslashes(str) {

	// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +   improved by: Ates Goral (http://magnetiq.com)
	// +      fixed by: Mick@el
	// +   improved by: marrtins
	// +   bugfixed by: Onno Marsman
	// +   improved by: rezna
	// +   input by: Rick Waldron
	// +   reimplemented by: Brett Zamir (http://brett-zamir.me)
	// *     example 1: stripslashes('Kevin\'s code');
	// *     returns 1: "Kevin's code"
	// *     example 2: stripslashes('Kevin\\\'s code');
	// *     returns 2: "Kevin\'s code"
	return (str+'').replace(/\\(.?)/g, function (s, n1) {
		switch(n1) {
		    case '\\':
			return '\\';
		    case '0':
			return '\0';
		    case '':
			return '';
		    default:
			return n1;
		}
	});

}

/*--------------------*/

function ad_pretext() {}

/*--------------------*/

function ad_posttext() {}

/*--------------------*/

var searchTerms=null;
function parseReferrer(term) {
  var ref = document.referrer.split('?');
  var parms = ref[1].split('&');
  for (var i=0; i < parms.length; i++) {
    var pos = parms[i].indexOf('=');
    if (pos > 0) {
      if(term == parms[i].substring(0,pos))
        searchTerms  = parms[i].substring(pos+1);
    }
  }
} 


function locateSearchTerms(){
  terms = searchTerms;
  if (terms.indexOf('+') > -1){
    var parms = terms.split('+');	
    for (var i=0; i < parms.length; i++) {
      highlightSearchTerms(parms[i]);
    }		
  } else if (terms.indexOf('%20') > -1){
    var parms = terms.split('%20');	
    for (var i=0; i < parms.length; i++) {
      highlightSearchTerms(parms[i]);
    }		
  } else {
      highlightSearchTerms(terms);			
  }
}

function highlightSearchTerms(sword) {
  $$('body').map(Element.extend).first().descendants().each(function (el) {
    if (el.nodeType == Node.ELEMENT_NODE && el.tagName != 'TEXTAREA' && el.tagName != 'INPUT' && el.tagName != 'SCRIPT') {
      $A(el.childNodes).each(function (onlyChild) {
        var pos = onlyChild.textContent.indexOf(sword);
        if (onlyChild.nodeType == Node.TEXT_NODE && pos >= 0) {
                //console.log(onlyChild);
                var spannode = document.createElement('span');
            spannode.className = 'searchHighlight';
            var middlebit = onlyChild.splitText(pos);
            var endbit = middlebit.splitText(sword.length);
            var middleclone = middlebit.cloneNode(true);
            spannode.appendChild(middleclone);
            middlebit.parentNode.replaceChild(spannode, middlebit);

                //onlyChild. = el.innerHTML.replace(new RegExp('('+sword+')', 'gi'), '<span class="highlight">$1</span>');
        }
      });
    }
  });
}

/*--------------------*/

// load javascript in the head when you want to
function load_script(url, callback) {
  var f = arguments.callee;
  if (!("queue" in f))
    f.queue = {};
  var queue =  f.queue;
  if (url in queue) { // script is already in the document
    if (callback) {
      if (queue[url]) // still loading
        queue[url].push(callback);
      else // loaded
        callback();
    }
    return;
  }
  queue[url] = callback ? [callback] : [];
  var script = document.createElement("script");
  script.type = "text/javascript";
              script.async = true;
              //script.charset = "utf-8";
  script.onload = script.onreadystatechange = function() {
    if (script.readyState && script.readyState != "loaded" && script.readyState != "complete")
      return;
    script.onreadystatechange = script.onload = null;
    while (queue[url].length)
      queue[url].shift()();
    queue[url] = null;
  };
  script.src = url;
  //document.getElementsByTagName("head")[0].appendChild(script);
              (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script);
}

/*--------------------*/

function load_script2(url, callback) {
    var js = document.createElement('script');
    js.type = 'text/javascript';
    if(callback){
      js.onload = callback;
    }
     //IE won't respond to onload with script elements, uses onreadystatechange. No harm assigning in non-IE
    js.onreadystatechange = function () {
        var rs = js.readyState;
        //alert(rs); //UNCOMMENT THIS ALERT IF YOU WISH TO SEE THE readyState
        //js.readyState when script is fully loaded will be 'loaded' if it was not already
        //in the browser's cache, or 'complete' if it was already cached.
        //Is 'loading' while in process of loading
        if (typeof callback == 'function' && rs.match(/(loaded|complete)/i)) {
            if(callback){
              callback();
            }
        }
    };
     //best not to define the script element's src until
     //after onload and onreadystatechange have been defined
    js.src = url;
    document.body.appendChild(js);
    //document.getElementsByTagName("head")[0].appendChild(js);
}

/*--------------------*/

// add css in the head when you need to override other styles
function addNewStyle(newStyle) {
    var styleElement = document.getElementById('styles_js');
    if (!styleElement) {
  styleElement = document.createElement('style');
  styleElement.type = 'text/css';
  styleElement.id = 'styles_js';
  document.getElementsByTagName('head')[0].appendChild(styleElement);
    }
    styleElement.appendChild(newStyle);
}

/*--------------------*/

function clearText(thefield, focused, removeClass){
  if (thefield.defaultValue==thefield.value){
    if(thefield.value.indexOf('Eks.') == 0) {
      elementHelpers.manageClass(thefield.id, 'greyText', false);
      thefield.value = "";
    }
  } else if(thefield.value == "" && focused == false && removeClass == false) {
    elementHelpers.manageClass(thefield.id, 'greyText', true);
    thefield.value = thefield.defaultValue;
  } else if(removeClass == true && thefield.value.indexOf('Eks.') != 0) {
    elementHelpers.manageClass(thefield.id, 'greyText', false);
  }
}
	
/*--------------------*/  

function checkText(thefield, default_value){
  if(thefield.value == '') {
    thefield.value = default_value;
    $(thefield).addClassName('greyText');
  }
}

/*--------------------*/
	
function center_div(div_id,div_width){

  var div_element	= $(div_id);
  if(div_width == 0){
    div_width	= $(div_id).getWidth();
  }
  a	= Math.round(document.viewport.getWidth() / 2);
  b	= Math.round(div_width / 2);
  c	= a - b;

  div_element.style['left']		= c + 'px';
  div_element.style['width']		= div_width + 'px';		
}


        
	
  function add_new_style(newStyle) {
    var styleElement = document.getElementById('styles_js');
    if (!styleElement) {
      styleElement = document.createElement('style');
      styleElement.type = 'text/css';
      styleElement.id = 'styles_js';
      document.getElementsByTagName('head')[0].appendChild(styleElement);
    }

    if(Prototype.Browser.IE || styleElement.styleSheet){
       styleElement.styleSheet.cssText = newStyle
    } else { // everyone else does it this way
      styleElement.appendChild(document.createTextNode(newStyle));
    }
  }

function loadStyleSheet (url) { 
    if (document.createStyleSheet) { 
document.createStyleSheet(url); 
    } else { 
      var stylesheet = document.createElement("link");
      stylesheet.rel = "stylesheet";
      stylesheet.media = "all";
      stylesheet.href = url;
      stylesheet.type = "text/css";          
      (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(stylesheet);
    	
    } 
    console.log(url);
}

function time2str(ts) // timestamp (seconds)
{
	var dayName = new Array("s&oslash;ndag", "mandag", "tirsdag", "onsdag", "torsdag", "fredag", "l&oslash;rdag");
	var now = Math.floor(((new Date()).getTime())/1000);
	var diff = now - ts;
	var years = Math.floor(diff/31536000);
	diff = diff%31536000;
	var months = Math.floor(diff/2620800);
	diff = diff%2620800;
	var weeks = Math.floor(diff/604800);
	diff = diff%604800;
	var days = Math.floor(diff/86400);
	diff = diff%86400;
	var hour = Math.floor(diff/3600);
	diff = diff%3600;
	var mins = Math.floor(diff/60);
	diff = diff%60;
	
	if( years > 0 )
	{
		if( years == 1 )
			return "i fjor";
		else
			return "for " + years+" &aring;r siden";
	}
	else if( months > 0 )
	{
		if( months == 1 )
			return "forrige m&aring;ned";
		else
			return "for " + months+" m&aring;neder siden";
	}
	else if( weeks > 0 )
	{
		if( weeks == 1 )
			return "forrige uke";
		else
			return "for " + weeks+" uker siden";
	}
	else if( days > 0 )
	{
		if( days == 1 )
			return "i g&aring;r";
		else if( days > 1 && days < 8 )
			return "p&aring; "+dayName[(new Date(ts*1000)).getDay()];
		else
			return "for " + days+" dager siden";
	}
	else if( hour > 0 )
	{
		if( hour == 1 )
			return "for " + hour+" time siden";
		else
			return "for " + hour+" timer siden";
	}
	else
	{
		if(mins == 0){
      return "akkurat nå";
      } else if( mins < 1 ){
      return "for et øyeblikk siden";  
    } else if( mins < 2 ){
			return "for 1 minutt siden";
      }	else{
			return "for " + mins+" minutter siden";
      }
	}
}

SITE = {
  Setting : {
    DebateAnchorElementId : 'debatt',
    SiteURL : SITE_URL
  }, 
  CheckSiteURL : function(){
    if(!SITE.Setting.SiteURL){
      SITE.Setting.SiteURL = 'http://' + window.location.host + '';
    }
    
  }
};





    
MODAL = {
  Setting : {
    MODAL_CONTENT_ELEMENT : _MODAL_CONTENT_ELEMENT,
    MODAL_CONTENT_WRAPPER : _MODAL_CONTENT_WRAPPER,
    MODAL_CONTENT_SCREEN : _MODAL_CONTENT_SCREEN,
    MODAL_HELP_ELEMENT : _MODAL_HELP_ELEMENT
  },
  Action : {
    Initialize : function(anchor){
        // If an anchor is given, insert the modal content elements before
        if(anchor && $(anchor)){
          $(anchor).insert({
            before: '<div id="' + MODAL.Setting.MODAL_CONTENT_WRAPPER + '" style="position:relative;"><div id="' + MODAL.Setting.MODAL_CONTENT_ELEMENT + '" class="last" style="display:none;"></div><div id="' + MODAL.Setting.MODAL_HELP_ELEMENT + '" class="notice last" style="display:none;"></div><div id="' + MODAL.Setting.MODAL_CONTENT_SCREEN + '" style="display:none;"></div></div>'
          });
        } else {
          $$('div:first').each(
            function(element){
              $(element).insert({
                before: '<div id="' + MODAL.Setting.MODAL_CONTENT_WRAPPER + '" style="position:relative;"><div id="' + MODAL.Setting.MODAL_CONTENT_ELEMENT + '" class="last" style="display:none;"></div><div id="' + MODAL.Setting.MODAL_HELP_ELEMENT + '" class="notice last" style="display:none;"></div><div id="' + MODAL.Setting.MODAL_CONTENT_SCREEN + '" style="display:none;"></div></div>'
              });
            }
          )
          
        }
        if($(MODAL.Setting.MODAL_CONTENT_ELEMENT)){
          console.log('Modal is initialized');
        } else {
          console.warn('Modal is NOT initialized!');
        }

        Event.observe(window,'keypress', function(event){
          if($(MODAL.Setting.MODAL_CONTENT_ELEMENT).visible() && event.keyCode == 27){
            MODAL.Action.Unload();
          }
        });

        Event.observe(MODAL.Setting.MODAL_CONTENT_SCREEN,'click', function(event){
          if($(MODAL.Setting.MODAL_CONTENT_ELEMENT).visible()){
            MODAL.Action.Unload();
          }
        });

        Event.observe(window,'resize',function(event){
          MODAL.Action.CenterBox(MODAL.Setting.MODAL_CONTENT_ELEMENT);
        });

    },
    Show : function(content){

      // Update div with content
      $(MODAL.Setting.MODAL_CONTENT_ELEMENT).update(content);

      // Assign events to close buttons
      $$('#' + MODAL.Setting.MODAL_CONTENT_ELEMENT + ' .close').each(function(element){
        Event.observe(element,'click',function(event){
        
          MODAL.Action.Unload();
        });
      })

      

      // Show modal box if not visible
      if(!$(MODAL.Setting.MODAL_CONTENT_ELEMENT).visible()){
        Effect.toggle(MODAL.Setting.MODAL_CONTENT_SCREEN, 'appear', { duration: 0.0 });
        Effect.toggle(MODAL.Setting.MODAL_CONTENT_ELEMENT, 'appear', { duration: 0.3 });
      }

      // Center modal box
      MODAL.Action.CenterBox(MODAL.Setting.MODAL_CONTENT_ELEMENT);

      window.onscroll = function() {
            MODAL.Action.FixPositionFixed(MODAL.Setting.MODAL_CONTENT_ELEMENT);
            MODAL.Action.FixPositionFixed(MODAL.Setting.MODAL_CONTENT_SCREEN);          
            MODAL.Action.FixPositionFixed(MODAL.Setting.MODAL_HELP_ELEMENT);                        
      };
      MODAL.Action.FixPositionFixed(MODAL.Setting.MODAL_CONTENT_ELEMENT);
      MODAL.Action.FixPositionFixed(MODAL.Setting.MODAL_CONTENT_SCREEN);                  
      MODAL.Action.FixPositionFixed(MODAL.Setting.MODAL_HELP_ELEMENT);                        
      

    },
    FixPositionFixed : function(div_id){
      if($(div_id)){
        if(isiPad){
         $(div_id).style.top  = (window.pageYOffset) + 'px';
        } else if(isAndroid){
          $(div_id).style.top = (window.pageYOffset) + 'px';
        }
      }
    },
    CenterBox : function(div_id,div_width){
      
      var div_element	= $(div_id);
      var inner_count = 0;
      $$('#' + div_id + ' .inner').each(function(element){
        if(inner_count == 0){
          div_width = $(element).getWidth();
        }
        inner_count++;
      });


      if(div_width == undefined){
        div_width	= $(div_id).getWidth();
      }
      if(div_width == 0){
        div_width = $(div_id).getWidth();
      }
      a	= Math.round(document.viewport.getWidth() / 2);
      b	= Math.round(div_width / 2);
      c	= a - b;


      //div_element.style['width']		= div_width + 'px';
      
      //if(isiPad){
        
      //} else {
        div_element.style['left']		= c + 'px';      
      //}

    },
    Unload : function(){

      // To fix a bug when using toggle(). When using toggle, sometimes the content_element closes and the content_screen is not closed
      if($(MODAL.Setting.MODAL_CONTENT_SCREEN).visible() && $(MODAL.Setting.MODAL_CONTENT_ELEMENT).visible()){
        $(MODAL.Setting.MODAL_CONTENT_SCREEN).fade({ duration: 0.0 });
        $(MODAL.Setting.MODAL_CONTENT_ELEMENT).fade({ duration: 0.0 });

        //$(MODAL.Setting.MODAL_CONTENT_ELEMENT).style['width'] = '0px';

        if($(MODAL.Setting.MODAL_HELP_ELEMENT)){
          if($(MODAL.Setting.MODAL_HELP_ELEMENT).visible()){
            $(MODAL.Setting.MODAL_HELP_ELEMENT).fade({ duration: 0.0 });
          }
        }
      }

      window.location.hash = '/';

    },
    Load : {
      Activity : function(page, callback){

        // If we do not have a modal content element, force initialization
        if(!$(MODAL.Setting.MODAL_CONTENT_ELEMENT)){
          MODAL.Action.Initialize();
        }

        // Close help element if the help element is visible
        if($(MODAL.Setting.MODAL_HELP_ELEMENT)){
          if($(MODAL.Setting.MODAL_HELP_ELEMENT).visible()){
            $(MODAL.Setting.MODAL_HELP_ELEMENT).hide();
          }
        }

        // Set a default ajax load spinner before each load
        $(MODAL.Setting.MODAL_CONTENT_ELEMENT).update('<div style="width:40px; text-align:center;margin:10px auto;"><img src="' + GSO_WEB_ROOT + 'resources/img/ajax_loader.gif" alt="Laster.." /></div>');

        if(callback){
          FORM.ShowElement('ajaxLoader');
          new Ajax.Request(page, {
            onSuccess:  function(response){callback(response);},
            onFailure:  function(response){callback(response);},
            onComplete: function(response){}
          });
        } else {
          new Ajax.Request(page, {
            onSuccess: function(response){
              
            },
            onFailure: function(response){
              
            },
            onComplete: function(response){
              
            }

          });
        }

      }
    }
  },
  Template : {
    Size: {
      XS : {
        'width': 200
      },
      S : {
        'width': 350
      },
      M : {
        'width': 400
      },
      L : {
        'width': 550
      },
      XL : {
        'width': 680
      }
    }
  }
}

document.observe('dom:loaded', function() {  
  
  if($('body-content')){
    MODAL.Action.Initialize('body-content');
  } else if($('body_content')){
    MODAL.Action.Initialize('body_content');
  } else {
    MODAL.Action.Initialize('debatt');
  }
  
  if(document.referrer != ''){

    if (document.referrer.indexOf('google.com') > -1){
      searchQueryVar = 'q';
      parseReferrer(searchQueryVar);
      locateSearchTerms();
    }
    else if (document.referrer.indexOf('google.no') > -1){
      searchQueryVar = 'q';
      parseReferrer(searchQueryVar);
      locateSearchTerms();
    }
    else if (document.referrer.indexOf('yahoo.com') > -1){
      searchQueryVar = 'p';
      parseReferrer(searchQueryVar);
      locateSearchTerms();
    }
    else if (document.referrer.indexOf('kvasir.no') > -1){
      searchQueryVar = 'q';
      parseReferrer(searchQueryVar);
      locateSearchTerms();
    }

  }


});
