jQuery(function() {
 	createBorderedImageWrapper(".article img");
	createImageFlow(".imageflow");
	createDropDownContainer('.dropdown-container');
	createBreadCrumb("span.brodsmule_link > a.display_menu");
	createToolTip(".tooltip");
	createAnchorFreeMenu(".mainmenu");
});

function linkElement(url, newWindow) {
  if (newWindow) {
    window.open(url);
  } else {
    location.href=url;
  }
}

function createAnchorFreeMenu(target) {
	jQuery("a[href='#']").click(function(event) {
		return false;
	});
}

function showMenu() {
  jQuery('li.aktiv > div.dropdown-container').slideDown(440, 'easeOutExpo', null);
}

function hideMenu(){
  jQuery('#studier-dropdown').slideUp(340, 'easeInCubic', null);
}

function adjustHeaderHeights() {
  if(jQuery(".innhold h1").length != 0){
    hoyde_heading = jQuery(".innhold h1").outerHeight();
    if (jQuery.browser.msie) {
      jQuery(".faktaboks, .sidelinker").css("margin-top", hoyde_heading + 21 + "px");
      jQuery(".skjema, .katalog").css("margin-top", hoyde_heading - 49 + "px");
    } else {
      jQuery(".faktaboks, .sidelinker").css("margin-top", (hoyde_heading + 27)+ "px");
      jQuery(".skjema, .katalog").css("margin-top", hoyde_heading - 45 + "px");
    }
  }
}

function get_css_value_as_int(padding){
  return parseInt(jQuery(".innhold h1").css(padding).substring(0, 2))
}

function get_css_value_as_int_with_source(padding, source){
  return parseInt(jQuery(source).css(padding).substring(0, 2))
}

function createBorderedImageWrapper(target) {
	jQuery(target).wrap("<div class='articleImage'>");
	jQuery(".articleImage")
		.append("<span class='border border1'></span>")
		.append("<span class='border border2'></span>")
		.append("<span class='border border3'></span>")
		.append("<span class='border border4'></span>");
}

function kalkulerMatrise(){
  if ( jQuery("div#matrise").length > 0) {
    var antall_bachelor_fag = jQuery('#bachelor .fag').length;
    var antall_master_fag = jQuery('#master .fag').length;
    var antall_rader = Math.ceil(antall_bachelor_fag/2) + Math.ceil(antall_master_fag/2);
    var enkelt_hoyde = Math.floor(188/antall_rader);

    if (antall_rader > 5) {
      jQuery("#matrise .fag a").css("height",  enkelt_hoyde + "px").css("line-height", enkelt_hoyde - 2 + "px");
    }
  }
}

function createDropDownContainer(target) {
 
 	jQuery(target).each(function () {
    jQuery(this).parent().eq(0).hoverIntent({
      timeout: 300, 
      over: function () {
        var current = jQuery('.dropdown-container:eq(0)', this);
        current.slideDown(440, 'easeOutExpo', null);
      },
      out: function () {
        var current = jQuery('.dropdown-container:eq(0)', this);
        current.slideUp(340, 'easeInCubic', null);
      }
    });
 	jQuery(this).parent().eq(0).hover(
      function(){
        jQuery(this).children('a').addClass("stay-hover");
      },
      function(){
        jQuery(this).children('a').removeClass("stay-hover");
      });
	});
}

function createImageFlow(target) {

	jQuery(target).each(function(){
    	var instanceOne = new ImageFlow();
    	  instanceOne.init({
          ImageFlowID: jQuery(this).attr("id"),
          captions: false,
          slider: true,
          buttons: true,
          reflections: true,
          reflectionGET: '&fade_start=20%25&bgc=ffffff',
          reflectionPNG: false,
          percentOther: 90,
          percentLandscape: 120,
          aspectRatio: 2.4,
          imageCursor: 'pointer',
          imageFocusM: 1.3,
          imagesHeight: 0.7,
          opacity: false,
          opacityArray: [10,7,6,5],
          xStep: 210,
          startID: 3,
          startAnimation: true
        });
  });

}


function createBreadCrumb(target) {
  jQuery(target).each(function() {
    jQuery(this).bind("click", showMenu)
  });
}

function createToolTip(target) {
  jQuery(target).tooltip( {
    extraClass: "toolTipStyle"
  });
}

function setExampleValueInField(classForField, text){
  jQuery(classForField).focus(
    function() {
      if (this.value == text) {
        this.value = '';
        jQuery(this).removeClass("hint");
      }
    });

  jQuery(classForField).blur(
    function() {
      if (this.value == '') {
        this.value = text;
        jQuery(this).addClass("hint");
      }
    });

  if (jQuery(classForField)[0].value == '')
  {
    jQuery(classForField)[0].value = text;
    jQuery(classForField).addClass("hint");
  }
  if (jQuery(classForField)[0].value == text)
  {
    jQuery(classForField).addClass("hint");
  }
}

/**
   * hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
   * <http://cherne.net/brian/resources/jquery.hoverIntent.html>
   *
   * @param  f  onMouseOver function || An object with configuration options
   * @param  g  onMouseOut function  || Nothing (use configuration options object)
   * @author    Brian Cherne <brian@cherne.net>
   */
(function(jQuery) {
  jQuery.fn.hoverIntent = function(f, g) {
    var cfg = {
      sensitivity:7,
      interval:100,
      timeout:0
    };
    cfg = jQuery.extend(cfg, g ? {
      over:f,
      out:g
    } : f);
    var cX,cY,pX,pY;
    var track = function(ev) {
      cX = ev.pageX;
      cY = ev.pageY;
    };
    var compare = function(ev, ob) {
      ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
      if ((Math.abs(pX - cX) + Math.abs(pY - cY)) < cfg.sensitivity) {
        jQuery(ob).unbind("mousemove", track);
        ob.hoverIntent_s = 1;
        return cfg.over.apply(ob, [ev]);
      } else {
        pX = cX;
        pY = cY;
        ob.hoverIntent_t = setTimeout(function() {
          compare(ev, ob);
        }, cfg.interval);
      }
    };
    var delay = function(ev, ob) {
      ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
      ob.hoverIntent_s = 0;
      return cfg.out.apply(ob, [ev]);
    };
    var handleHover = function(e) {
      var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
      while (p && p != this) {
        try {
          p = p.parentNode;
        } catch(e) {
          p = this;
        }
      }
      if (p == this) {
        return false;
      }
      var ev = jQuery.extend({}, e);
      var ob = this;
      if (ob.hoverIntent_t) {
        ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
      }
      if (e.type == "mouseover") {
        pX = ev.pageX;
        pY = ev.pageY;
        jQuery(ob).bind("mousemove", track);
        if (ob.hoverIntent_s != 1) {
          ob.hoverIntent_t = setTimeout(function() {
            compare(ev, ob);
          }, cfg.interval);
        }
      } else {
        jQuery(ob).unbind("mousemove", track);
        if (ob.hoverIntent_s == 1) {
          ob.hoverIntent_t = setTimeout(function() {
            delay(ev, ob);
          }, cfg.timeout);
        }
      }
    };
    return this.mouseover(handleHover).mouseout(handleHover);
  };
})(jQuery);


/*
   * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
   *
   * Uses the built in easing capabilities added In jQuery 1.1
   * to offer multiple easing options
   *
   * TERMS OF USE - jQuery Easing
   *
   * Open source under the BSD License.
   *
   * Copyright Â© 2008 George McGinley Smith
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without modification,
   * are permitted provided that the following conditions are met:
   *
   * Redistributions of source code must retain the above copyright notice, this list of
   * conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above copyright notice, this list
   * of conditions and the following disclaimer in the documentation and/or other materials
   * provided with the distribution.
   *
   * Neither the name of the author nor the names of contributors may be used to endorse
   * or promote products derived from this software without specific prior written permission.
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
   * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
   *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
   * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
   * OF THE POSSIBILITY OF SUCH DAMAGE.
   *
   */

// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend( jQuery.easing,
{
  def: 'easeOutQuad',
  swing: function (x, t, b, c, d) {
    //alert(jQuery.easing.default);
    return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
  },
  easeInQuad: function (x, t, b, c, d) {
    return c*(t/=d)*t + b;
  },
  easeOutQuad: function (x, t, b, c, d) {
    return -c *(t/=d)*(t-2) + b;
  },
  easeInOutQuad: function (x, t, b, c, d) {
    if ((t/=d/2) < 1) return c/2*t*t + b;
    return -c/2 * ((--t)*(t-2) - 1) + b;
  },
  easeInCubic: function (x, t, b, c, d) {
    return c*(t/=d)*t*t + b;
  },
  easeOutCubic: function (x, t, b, c, d) {
    return c*((t=t/d-1)*t*t + 1) + b;
  },
  easeInOutCubic: function (x, t, b, c, d) {
    if ((t/=d/2) < 1) return c/2*t*t*t + b;
    return c/2*((t-=2)*t*t + 2) + b;
  },
  easeInQuart: function (x, t, b, c, d) {
    return c*(t/=d)*t*t*t + b;
  },
  easeOutQuart: function (x, t, b, c, d) {
    return -c * ((t=t/d-1)*t*t*t - 1) + b;
  },
  easeInOutQuart: function (x, t, b, c, d) {
    if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
    return -c/2 * ((t-=2)*t*t*t - 2) + b;
  },
  easeInQuint: function (x, t, b, c, d) {
    return c*(t/=d)*t*t*t*t + b;
  },
  easeOutQuint: function (x, t, b, c, d) {
    return c*((t=t/d-1)*t*t*t*t + 1) + b;
  },
  easeInOutQuint: function (x, t, b, c, d) {
    if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
    return c/2*((t-=2)*t*t*t*t + 2) + b;
  },
  easeInSine: function (x, t, b, c, d) {
    return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
  },
  easeOutSine: function (x, t, b, c, d) {
    return c * Math.sin(t/d * (Math.PI/2)) + b;
  },
  easeInOutSine: function (x, t, b, c, d) {
    return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
  },
  easeInExpo: function (x, t, b, c, d) {
    return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
  },
  easeOutExpo: function (x, t, b, c, d) {
    return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
  },
  easeInOutExpo: function (x, t, b, c, d) {
    if (t==0) return b;
    if (t==d) return b+c;
    if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
    return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
  },
  easeInCirc: function (x, t, b, c, d) {
    return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
  },
  easeOutCirc: function (x, t, b, c, d) {
    return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
  },
  easeInOutCirc: function (x, t, b, c, d) {
    if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
    return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
  },
  easeInElastic: function (x, t, b, c, d) {
    var s=1.70158;var p=0;var a=c;
    if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
    if (a < Math.abs(c)) {
      a=c; var s=p/4;
    }
    else var s = p/(2*Math.PI) * Math.asin (c/a);
    return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
  },
  easeOutElastic: function (x, t, b, c, d) {
    var s=1.70158;var p=0;var a=c;
    if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
    if (a < Math.abs(c)) {
      a=c; var s=p/4;
    }
    else var s = p/(2*Math.PI) * Math.asin (c/a);
    return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
  },
  easeInOutElastic: function (x, t, b, c, d) {
    var s=1.70158;var p=0;var a=c;
    if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
    if (a < Math.abs(c)) {
      a=c; var s=p/4;
    }
    else var s = p/(2*Math.PI) * Math.asin (c/a);
    if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
    return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
  },
  easeInBack: function (x, t, b, c, d, s) {
    if (s == undefined) s = 1.70158;
    return c*(t/=d)*t*((s+1)*t - s) + b;
  },
  easeOutBack: function (x, t, b, c, d, s) {
    if (s == undefined) s = 1.70158;
    return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
  },
  easeInOutBack: function (x, t, b, c, d, s) {
    if (s == undefined) s = 1.70158;
    if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
    return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
  },
  easeInBounce: function (x, t, b, c, d) {
    return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
  },
  easeOutBounce: function (x, t, b, c, d) {
    if ((t/=d) < (1/2.75)) {
      return c*(7.5625*t*t) + b;
    } else if (t < (2/2.75)) {
      return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
    } else if (t < (2.5/2.75)) {
      return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
    } else {
      return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
    }
  },
  easeInOutBounce: function (x, t, b, c, d) {
    if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
    return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
  }
});

  /*
   *
   * TERMS OF USE - EASING EQUATIONS
   *
   * Open source under the BSD License.
   *
   * Copyright Â© 2001 Robert Penner
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without modification,
   * are permitted provided that the following conditions are met:
   *
   * Redistributions of source code must retain the above copyright notice, this list of
   * conditions and the following disclaimer.
   * Redistributions in binary form must reproduce the above copyright notice, this list
   * of conditions and the following disclaimer in the documentation and/or other materials
   * provided with the distribution.
   *
   * Neither the name of the author nor the names of contributors may be used to endorse
   * or promote products derived from this software without specific prior written permission.
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
   * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
   *  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
   *  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
   * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
   * OF THE POSSIBILITY OF SUCH DAMAGE.
   *
   */
