String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g,''); };
String.prototype.normalize = String.prototype.normalise = function() { return this.trim().replace(/\s+/g,' '); };
String.prototype.startsWith = function(str,i){ i=(i)?'i':'';var re=new RegExp('^'+str,i);return (this.normalize().match(re)) ? true : false ; };
String.prototype.endsWith = function(str,i){ i=(i)?'gi':'g';var re=new RegExp(str+'$',i);return (this.normalize().match(re)) ? true : false ; };

var utils = {
    isset : function(variable) {return variable != undefined},
    hasValue : function(variable) {return utils.isset(variable) && variable!=''},
    exists : function(element) {return element != "" || jQuery(element).length > 0},
	log : function(message) {try{console.log(message);} catch(ex){/*NO LOG*/}}
};

var arena = {
	elements : jQuery("meta[name='Netblast-Arena-Page-Elements']").attr("content") != '' ? eval('(' + jQuery("meta[name='Netblast-Arena-Page-Elements']").attr("content") + ')') : []
}

var site = {
	elements : jQuery("meta[name='Netblast-Page-Elements']").attr("content") != '' ? eval('(' + jQuery("meta[name='Netblast-Page-Elements']").attr("content") + ')') : [],
	image : jQuery("meta[name='Netblast-Header-Image']").attr("content") != '' ? jQuery("meta[name='Netblast-Header-Image']").attr("content") : '<!-- No images could be found -->',
	google : {
		analytics: jQuery("meta[name='Google-Analytics-Account']").attr("content") != '' ? eval('(' + jQuery("meta[name='Google-Analytics-Account']").attr("content") + ')') : []
	},
	name : jQuery("meta[name='name']").attr("content") != '' ? jQuery("meta[name='name']").attr("content") : [],
	calendars : jQuery("meta[name='Netblast-Calendars']").attr("content") != '' ? eval('(' + jQuery("meta[name='Netblast-Calendars']").attr("content") + ')') : [],
	levels : [jQuery("meta[name='Netblast-ID-Level-2']").attr("content") != '' ? jQuery("meta[name='Netblast-ID-Level-2']").attr("content") : '',
			  jQuery("meta[name='Netblast-ID-Level-3']").attr("content") != '' ? jQuery("meta[name='Netblast-ID-Level-3']").attr("content") : '',
			  jQuery("meta[name='Netblast-ID-Level-4']").attr("content") != '' ? jQuery("meta[name='Netblast-ID-Level-4']").attr("content") : '',
			  jQuery("meta[name='Netblast-ID-Level-5']").attr("content") != '' ? jQuery("meta[name='Netblast-ID-Level-5']").attr("content") : '']
}

var page = {
	id : jQuery("meta[name='Netblast-Page-ID']").attr("content") != '' ? jQuery("meta[name='Netblast-Page-ID']").attr("content") : [],
	elements : jQuery("meta[name='Netblast-Page-Elements-Requested']").attr("content").split(','),
	image: jQuery("meta[name='Netblast-Local-Header-Image']").attr("content") != '' ? jQuery("meta[name='Netblast-Local-Header-Image']").attr("content") : '<!-- No images could be found -->',
	path: {
		image : jQuery("meta[name='Netblast-Path-Header-Image']").attr("content") != '' ? '../../images/'+jQuery("meta[name='Netblast-Path-Header-Image']").attr("content") : '<!-- No images could be found -->'
	}
}

function drawModule(element){

	switch(element.module){
		case 'Calendar' : {
			jQuery.each(element.calendars,function(k, calendar){
				jQuery.each(site.calendars,function(l, settings){
					if(settings.name == jQuery.trim(calendar)){
						utils.log("settings:");
						utils.log(settings);
						utils.log("calendar:");
						utils.log(calendar);
					}
				});
			});
			break;
		}

		case 'RSS' : {

			//VALIDATE
			if(!utils.hasValue(element.source)){
				return;
			}

			var wrapper,container;
			//IF SPECIFIC ELEMENT (BASED ON ID)
			if(element.position.startsWith("#")){
				if(utils.exists(jQuery(''+element.position+''))){
					wrapper = jQuery(''+element.position+'');
					jQuery(wrapper).empty();

					container = jQuery("<div/>").addClass("element column");

					//Add container to wrapper
					jQuery(wrapper).append(container);

				} else {
					utils.log("Could not find the element: "+element.position+", which was meant to contain an rss feed");
					return;
				}
			} else {
				wrapper = jQuery("<div/>").attr("id",element.name).addClass("rss-container nb-elements-container");
				container = jQuery("<div/>").addClass("element column");

				//POSITION
				jQuery(container).addClass(element.position);

				//OUTSIDE CONTENT
				if(element.position.endsWith("content")){
					if(element.position.startsWith("before")){
						jQuery("#toolbar").after(wrapper);
					} else {
						jQuery("#content").after(wrapper);
					}

				//SIDEBAR
				} else if(element.position.startsWith("sidebar")){
					if(utils.exists(jQuery('#sidebar'))){
						if(element.position.endsWith('top')){
							jQuery("#sidebar").prepend(wrapper);
						} else {
							jQuery("#sidebar").append(wrapper);
						}
					}


				//CENTER COLUMN
				} else if(element.position.startsWith("center-column")){
					if(utils.exists(jQuery('#center-column'))){
						jQuery("#center-column").append(wrapper);
					}


				//INSIDE CONTENT
				} else {
					//TOP
					if(element.position.startsWith('top')){
						if(element.position == 'top'){
							jQuery("#content").prepend(wrapper);
							jQuery(wrapper).addClass("clearfix");
						} else {
							jQuery("#content").prepend(wrapper);
						}
					//BOTTOM
					} else if(element.position == 'bottom'){
						jQuery("#content").append(wrapper);
						jQuery(wrapper).addClass("clearfix");
					}
				}

				//Add container to wrapper
				jQuery(wrapper).append(container);
			}

			//TITLE
			if(jQuery.trim(element.title) != ''){
				jQuery(container).append(jQuery("<h5/>").text(element.title));
			}

			//DIMENSIONS
			if(utils.isset(element.dimensions)){
				if(utils.isset(element.dimensions.height)){
					wrapper.css({'height':element.dimensions.height});
				}
			}

			//ENCODING
			var encoding = "iso";
			if(element.parameters.encoding)
				encoding = element.parameters.encoding;

			//SHOW LOAD
			jQuery(wrapper).addClass("loading");
			utils.log("loading rss");


			$.get('/Webdesk/rss?source='+element.source+'&encoding='+encoding, function(d) {
		        var html = "";
		        var length = 80;
				$(d).find('item').each(function(index,el) {
				if(index == element.size) return false;

			            //name the current found item this for this particular loop run
				    var $item = $(this);
				    // grab the post title
				    var title = $item.find('title').text();
				    // grab the post's URL
				    var link = $item.find('link').text();
				    // next, the description
				    var description = $item.find('description').text().length > length ? $item.find('description').text().substring(0,length).replace(/\w+$/, '')+"..." : $item.find('description').text();
				    //don't forget the pubdate
				    var pubDate = $item.find('pubDate').text();

			            // now create a var 'html' to store the markup we're using to output the feed to the browser window
				    html += "<div class=\"rss-element\"><a href=\"" + link + "\" target=\"_blank\"><h4>" + title + "<\/h4><\/a><p class=\"rss-presentation\">"+description+"</p><p class=\"read-more\"><a href=\""+link+"\" target=\"_blank\">Les mer</a></p></div>";
			    });

				//CYCLE
				if(element.parameters.cycle){
					try {
						var trueContent = $("<div/>").addClass("presentation").html(html);
						$(container).append(trueContent);
						$(trueContent).cycle(element.parameters.cycle);

					} catch(exception){
						alert("error: "+exception);
						alert($(trueContent));
					}
				} else {
					$(container).append($("<div/>").addClass("presentation").html(html));
				}
			});


			break;
		}


		case 'Rotator' : {

			//VALIDATE
			if(!utils.hasValue(element.source)){
				return;
			}

			var container = jQuery("<div/>").attr("id",element.name).addClass("rotator-container").addClass("clearfix");
			var rotator = jQuery("<div/>").addClass("rotator");

			//DIMENSIONS
			if(utils.isset(element.dimensions)){
				if(utils.isset(element.dimensions.height)){
					container.css({'height':element.dimensions.height});
				}
			}

			//SHOW LOAD
			jQuery(container).addClass("loading");
			utils.log("loading");

			try {
				jQuery.get("index.html?id="+element.source+"&template=JSON::Advanced", function(data) {

						//VALIDATE THE DATA - CHECKS IF THE PAGE HAS THE RIGHT TEMPLATE
						if(data.substring(6,13) != 'NB-JSON')
							return;

						var json = jQuery.evalJSON(data.substring(13,data.length-7));

						jQuery.each(json.elements,function(index,el){
							var panel = jQuery("<div />");
							if(utils.hasValue(el["image"])){

								//DIMENSIONS
								if(utils.isset(element.dimensions)){
									panel.css(element.dimensions);
								}
								panel.css('background-image','url(../../images/'+el["image"]+')');
							}

							var image = '';
							if(utils.hasValue(el["presentation-image"])){
								image = '<img src="../../images/'+el["presentation-image"]+'" />';
							}

							var title = '';
							if(utils.hasValue(el["title"])){
								title = '<h2>'+el["title"]+'</h2>';
							}

							var presentation = '';
							if(utils.hasValue(el["presentation"])){
								presentation = '<p>'+el["presentation"]+'</p>';
							}

							var caption = ''
							if(title != '' || presentation != ''){
								caption = '<div class="caption">'+ title + presentation +'</div>';
							}

							rotator.append(jQuery(panel).html(image + caption));
						});


						/** POSITION **/

						//SPECIFIC ELEMENT (BASED ON ID)
						if(element.position.startsWith("#")){
							//CHECK IF THE ELEMENT EXISTS
							if(utils.exists(jQuery(''+element.position+''))){
								jQuery(''+element.position+'').append(rotator);
							} else {
								utils.log("Could not find the element: "+element.position+", which was meant to contain a rotator");
								return;
							}

						//NOT AN ELEMENT - ADD THE POSITION AS CLASS
						} else {
							jQuery(container).addClass(element.position);



							//OUTSIDE CONTENT
							if(element.position.endsWith("content")){
								if(element.position.startsWith("before")){
									jQuery("#toolbar").after(jQuery(container).append(rotator));
								} else {
									jQuery("#content").after(jQuery(container).append(rotator));
								}

							//SIDEBAR
							} else if(element.position.startsWith("sidebar")){
								if(utils.exists(jQuery('#sidebar'))){
									if(element.position.endsWith('top')){
										jQuery("#sidebar").prepend(jQuery(container).append(rotator));
									} else {
										jQuery("#sidebar").append(jQuery(container).append(rotator));
									}
								}

							//INSIDE CONTENT
							} else {
								//TOP
								if(element.position.startsWith('top')){
									if(element.position == 'top'){
										jQuery("#content").prepend(jQuery(container).append(rotator));
										jQuery(jQuery(container).append(rotator)).addClass("clearfix");
									} else {
										jQuery("#content").prepend(jQuery(container).append(rotator));
									}
								//BOTTOM
								} else if(element.position == 'bottom'){
									jQuery("#content").append(jQuery(container).append(rotator));
									jQuery(jQuery(container).append(rotator)).addClass("clearfix");
								}
							}
						}

						//PAGER
						if(utils.isset(element.parameters.pager)){
							element.parameters.pager = '#rotator-'+element.source+'-navigation';
							jQuery(container).append('<div id="rotator-'+element.source+'-navigation" class="rotator-navigation">');
							jQuery(rotator).cycle(element.parameters);
						} else {
							jQuery(rotator).cycle(element.parameters);
						}

					});

					jQuery(container).removeClass("loading");
					utils.log("done loading");

				} catch(ex) {
					utils.log("[getSubPages("+id+") Error: "+ex);
				}
			break;
		}
		case 'Twitter' : {

			var twitter = jQuery('<div/>').addClass(element.position).addClass("twitter");

			//TITLE
			if(jQuery.trim(element.title)  != ''){
				jQuery(twitter).append(jQuery("<h5/>").text(element.title));
			}

			jQuery(twitter).attr({'id':element.name});

			jQuery(twitter).tweet({
				username: element.username,
				join_text: "auto",
				avatar_size: element.avatar_size,
				count: element.count,
				show_date: element.show_date,
				auto_join_text_default: element.labels.we_said,
				auto_join_text_ed: element.labels.we,
				auto_join_text_ing: element.labels.we_were,
				auto_join_text_reply: element.labels.we_replied_to,
				auto_join_text_url: element.labels.we_were_checking_out,
				loading_text: element.labels.loading_tweets
			});

			//TOP
			if(element.position.startsWith('top')){
				if(element.position == 'top'){
					jQuery("#content").prepend(twitter);
					jQuery(twitter).addClass("clearfix");
				} else {
					jQuery("#content").prepend(twitter);
				}
			//SIDEBAR
			} else if(element.position.startsWith('sidebar')){
				if(utils.exists(jQuery('#sidebar'))){
					if(element.position.endsWith('top')){
						jQuery("#sidebar").prepend(twitter);
					} else {
						jQuery("#sidebar").append(twitter);
					}
				}
			//BOTTOM
			} else if(element.position == 'bottom'){
				jQuery("#content").append(twitter);
				jQuery(twitter).addClass("clearfix");
			}
			break;
		}

		case 'Picasa' : {
			var picasa = jQuery('<div/>').addClass(element.position).addClass("picasa clearfix");
			jQuery(picasa).attr({'id':element.name});

			jQuery(picasa).EmbedPicasaGallery(element.username,{
				matcher: element.gallery,  // string or regexp matching album title
				size: 160,  // thumb size (32,48,64,72,144,160))
				msg_loading_list :  'Loading list from PicasaWeb',
				msg_loading_album : 'Loading album from PicasaWeb',
				msg_back :   'Back',
				authkey: ''
			});

			//TOP
			if(element.position.startsWith('top')){
				if(element.position == 'top'){
					jQuery("#content").prepend(picasa);
					jQuery(picasa).addClass("clearfix");
				} else {
					jQuery("#content").prepend(picasa);
				}
			//SIDEBAR
			} else if(element.position.startsWith('sidebar')){
				if(utils.exists(jQuery('#sidebar'))){
					if(element.position.endsWith('top')){
						jQuery("#sidebar").prepend(picasa);
					} else {
						jQuery("#sidebar").append(picasa);
					}
				}
			//BOTTOM
			} else if(element.position == 'bottom'){
				jQuery("#content").append(picasa);
				jQuery(picasa).addClass("clearfix");
			}
			break;
		}

		case 'Google Calendar' : {
			var calendar = jQuery("<iframe></iframe>").addClass(element.position).addClass("google-calendar");

			//DIMENSIONS
			var height = 500;
			if(utils.isset(element.dimensions)){
				if(utils.isset(element.dimensions.height)){
					height = element.dimensions.height;
				}
			}

			if(element.mode){
				var parameters = {
					'id':element.name,
					'src':'http://www.google.com/calendar/hosted/strong.no/embed?mode='+element.mode+'&showTitle=0&showNav=0&showPrint=0&showTabs=0&showCalendars=0&showTz=0&height=500&wkst=2&bgcolor=%23ffffff&src='+element.username+'&color=%23A32929&ctz=Europe%2FOslo',
					'style':'border-width:0',
					'width':'100%',
					'height':height,
					'frameborder':'0',
					'scrolling':'no'
				};
			} else {
				var parameters = {
					'id':element.name,
					'src':'http://www.google.com/calendar/hosted/strong.no/embed?showTitle=0&showNav=0&showPrint=0&showTabs=0&showCalendars=0&showTz=0&height=500&wkst=2&bgcolor=%23ffffff&src='+element.username+'&color=%23A32929&ctz=Europe%2FOslo',
					'style':'border-width:0',
					'width':'100%',
					'height':height,
					'frameborder':'0',
					'scrolling':'no'
				};
			}


			//TOP
			if(element.position.startsWith('top')){
				//FULL WIDTH
				if(element.position == 'top'){
					jQuery(calendar).attr(parameters);
					jQuery("#content").prepend(calendar);
					jQuery(calendar).addClass("clearfix");
				//COLUMN WIDTH
				} else {
					parameters.width = '200';
					parameters.height = '280';
					parameters.src = 'http://www.google.com/calendar/hosted/strong.no/embed?showTitle=0&showNav=0&showPrint=0&showTabs=0&showCalendars=0&showTz=0&mode=AGENDA&height=250&wkst=2&bgcolor=%23ffffff&src='+element.username+'&color=%23A32929&ctz=Europe%2FOslo';

						jQuery(calendar).attr(parameters);
					jQuery("#content").prepend(calendar);
				}
			//SIDEBAR
			} else if(element.position.startsWith('sidebar')){
				if(utils.exists(jQuery('#sidebar'))){
					parameters.width = '200';
					parameters.height = '280';
					parameters.src = 'http://www.google.com/calendar/hosted/strong.no/embed?showTitle=0&showNav=0&showPrint=0&showTabs=0&showCalendars=0&showTz=0&mode=AGENDA&height=250&wkst=2&bgcolor=%23ffffff&src='+element.username+'&color=%23A32929&ctz=Europe%2FOslo';

					jQuery(calendar).attr(parameters);

					if(element.position.endsWith('top')){
						jQuery("#sidebar").prepend(calendar);
					} else {
						jQuery("#sidebar").append(calendar);
					}
				}
			//BOTTOM
			} else if(element.position == 'bottom'){
				jQuery(calendar).attr(parameters);
				jQuery("#content").append(calendar);
				jQuery(picasa).addClass("clearfix");
			}
			break;
		}

		default : {
			return;
			break;
		}
	}

}


window.onload = function(){

	//HISTORY ACTIVATION
	jQuery.history.init(callback);
    jQuery("a[rel='history']").click(function(){
        jQuery.history.load(this.href.replace(/^.*#/, ''));
        return false;
    });


	//Draw the requested modules
	jQuery.each(page.elements, function(i,requested){

		//Check site elements
		jQuery.each(site.elements, function(j, element){
			if(element.name == jQuery.trim(requested) && !element.global){
				drawModule(element);
			}
		});
	});

	//Draw the arena modules
	jQuery.each(arena.elements, function(i, element){
		drawModule(element);
	});


/*
	jQuery('body').click(function(event){
		var textSize = false;
		var share = false;
		var search = false;
		var isToggler = false;

		if(jQuery(event.target).parent().hasClass("toggler"))
			isToggler = true;

		jQuery(event.target).parents().each(function(index,element){
			if(element.id == "text-size"){
				textSize = true;
				return;
			}

			if(element.id == "share"){
				share = true;
				return;
			}

			if(element.id == "search"){
				utils.log("search"+", isToggler: "+isToggler);

				if(isToggler)
					search = true;
				return;
			}
		});

		if(!textSize){
			jQuery("#text-size div.panel").fadeOut('fast');
			jQuery("#text-size div.toggler").removeClass('active');
		}

		if(!share){
			jQuery("#share div.panel").fadeOut('fast');
			jQuery('#share div.toggler').removeClass('active');
			jQuery(this).data('in', false);
			jQuery("#share div.panel").data('hidden', true);
		}

		if(!search){
			jQuery("#search div.panel").fadeOut('fast');
			jQuery("#search div.toggler").removeClass('active');
		}
	});
*/
}


function getStructure(id){
	if(!utils.hasValue(id)){
		return;
	}

	try {
		jQuery.get("http://www.elproffen.no/Webdesk/netblast/pages/index.html?id="+id+"&template=JSON::Advanced", function(data) {

			//VALIDATE THE DATA - CHECKS IF THE SITE HAS THE RIGHT TEMPLATE
			if(data.substring(6,13) != 'NB-JSON')
				return;

			var json = jQuery.evalJSON(data.substring(13,data.length-7));
			return json;
/*			utils.log(json.current);
			jQuery.each(json.elements,function(index,element){
				utils.log(element);
			});*/
		});
	} catch(ex) {
		utils.log("[getSubPages("+id+") Error: "+ex);
	}
}

jQuery(document).ready(function(){

	//List elements floating
    jQuery(".4-column #subpages .element:nth-child(4n+1), .4-column #neighbor-pages .element:nth-child(4n+1), .4-column #referenced .element:nth-child(4n+1)").css("clear","left");
    jQuery(".3-column #subpages .element:nth-child(3n+1), .3-column #neighbor-pages .element:nth-child(3n+1), .3-column #referenced .element:nth-child(3n+1)").css("clear","left");

	//NAVIGATION - SELECT
	jQuery("#navigation ul").find("#li"+page.id).addClass("selected");

	jQuery.each(site.levels,function(index,element){
		jQuery("li[id='li"+element+"']").addClass("selected");
	});


	//NB MAIL FILTER - DEPRECATED?
	jQuery(".nb-mailfilter").each(function(index,element){
    	jQuery(element).html('<a href="mailto:'+jQuery(element).attr("n")+"@"+jQuery(element).attr("d")+"."+jQuery(element).attr("t")+'">'+jQuery(element).attr("n")+"@"+jQuery(element).attr("d")+"."+jQuery(element).attr("t")+'</a>');
	});

	var pattern = new RegExp("\\[#([^#]*)#([^#]*)#([^#]*)#\\]");

	jQuery("*", jQuery("#main-area")).not("iframe").contents().each( function(index, element) {
        try {
    		if(element.nodeType === 3) {
        		if(pattern.test(element.data)){
        	    	element.data = element.data.replace(/\[#([^#]*)#([^#]*)#([^#]*)#\]/,"$1@$2.$3");
    	    	}
	        }
        } catch(exception){
            //Error
        }
	});


	//AJAX LOADER INDICATOR
	jQuery("#ajax-log").ajaxStart(function(){
   		jQuery(this).fadeIn("fast");
 	});

	jQuery("#ajax-log").ajaxStop(function(event,request,settings) {
		jQuery(this).fadeOut("slow");
	});

	jQuery("#ajax-log").ajaxError(function(event,request,settings) {
		jQuery(this).find("p").addClass("error");
	});

	jQuery("#ajax-log").ajaxComplete(function(event,request, settings){
		jQuery(this).fadeOut("slow");
	});



	//HEADER IMAGE
	if((site.image != '<!-- No images could be found -->') || (page.image != '<!-- No images could be found -->') || (page.path.image != '<!-- No images could be found -->')){


		//PRIORITY 1 - PAGE IMAGE
		if(page.image != '<!-- No images could be found -->'){
			jQuery("#header-image").append(jQuery("<img/>").attr({src:page.image}));
			utils.log("Header Image - Page");

		//PRIORITY 2 - IMAGE FOUND IN PATH
		} else if(page.path.image != '<!-- No images could be found -->'){
			jQuery("#header-image").append(jQuery("<img/>").attr({src:page.path.image}));
			utils.log("Header Image - Path");

		//PRIORITY 3 - IMAGE FOUND IN DEFAULT FOLDER
		} else {
			jQuery("#header-image").append(jQuery("<img/>").attr({src:site.image}));
			utils.log("Header Image - Default");
		}
	}

	//CONTACT INFO NUMBERS
	jQuery("#contact-information .number").each(function(index,element){
        var number = jQuery(this).text().replace(/\s/g, "");
        jQuery(this).text(number.substr(0,2)+" "+number.substr(2,2)+" "+number.substr(4,2)+" "+number.substr(6,2));
    });

    //GENERAL CLEANUP - REMOVE ALL EMPTY ELEMENTS
	jQuery(".nb-elements-container").find(".element").each(function(index,element){
        //IMAGE
        jQuery(element).find("img[src$='/images/']").remove();
        //TITLE
        jQuery(element).find("h2:empty").remove();
        //BYLINE
        jQuery(element).find("p").find("span:empty").remove();
        //PRESENTATION AND LINK
        jQuery(element).find("p:empty").remove();
        jQuery(element).find("span:empty").remove();


        //ADD LINKS TO THE ELEMENT, IF THERE IS A LINK SPECIFIED
    	var data = jQuery(element).data("parameters");
    	if(data && data.link){
       	    jQuery("h4,h5,img",$(this)).wrap('<a href="'+data.link+'" target="'+data.target+'"></a>');
    	}

    });

	//REMOVE ALL EMPTY ELEMENT CONTAINERS (SIDEBAR ELEMENTS, REFERENCED, SUBPAGES)
	jQuery(".nb-elements-container:empty").remove();

    //IN FOCUS
	jQuery(".in-focus").each(function(index,element){
	    //If the element contains no h4, then remove
		if(!utils.exists(jQuery(element).find("h4"))){
		    jQuery(element).remove();
		} else {
			//If there are no elements, remove the title as well
			if(!utils.exists(jQuery(element).find("div"))){
				jQuery(element).remove();
			}
		}
	});

	//INFO LINES
	/*jQuery(".info-line").each(function(index,element){
		if(jQuery(element).text().trim() == ""){
			jQuery(element).remove();
		}
	});*/


	jQuery("#text-size .toggler").click(function(){
    	jQuery("#text-size .panel").fadeIn('fast');
	});


	jQuery("#text-size").click(function(event){
		jQuery("#text-size div.toggler").addClass("active");
		jQuery("#text-size div.panel").fadeIn("fast");
	}).mouseleave(function(){
		jQuery("#text-size div.toggler").removeClass("active");
		jQuery("#text-size div.panel").fadeOut("fast");
	});

	jQuery("#share").click(function(event){
		jQuery("#share div.toggler").addClass("active");
		jQuery("#share div.panel").fadeIn("fast");
		jQuery(this).data("in", true);
		jQuery("#share div.panel").data("hidden", false);
	}).mouseleave(function(){
		jQuery("#share div.toggler").removeClass("active");
		jQuery("#share div.panel").fadeOut("fast");
		jQuery(this).data("in", false);
		jQuery("#share div.panel").data("hidden", true);
	});

	jQuery("#search div.toggler").click(function(event){
		if(jQuery("#search div.toggler").hasClass("active")){
			jQuery("#search div.toggler").removeClass("active");
			jQuery("#search div.panel").fadeOut("fast");

			jQuery("#text-size-disabled").attr("id","text-size");
			jQuery("#share-disabled").attr("id","share");
		} else {
			jQuery("#search div.toggler").addClass("active");
			jQuery("#search div.panel").fadeIn("fast");

			jQuery("#text-size").attr("id","text-size-disabled");
			jQuery("#share").attr("id","share-disabled");
			jQuery("#search input[id=find]").focus();
		}
	});


    //ICONS IN MENUS
	jQuery(".sf-menu a[icon!='../../images/']").each(function(index,element){
    	jQuery(element).addClass('icon').css('background-image','url('+jQuery(element).attr("icon")+')');
	});


	/*jQuery("#find").keyup(function(){
		var phrase = jQuery("#find").attr("value");
		var size = 0;
		if(phrase.length > 2){
			jQuery.get("http://templates.strong.no/Webdesk/netblast/pages/index.html?find="+phrase+"&id=1044785&site="+site.name+"&template=Search::Advanced", function(data){
				var trs = jQuery(data).find("tr");
				for(i=0;i<trs.length;i++){
					try {
						if(jQuery(trs[i+1]).find(".HitPresentation").length>0){
							i++;
						}
					} catch (ex){
						utils.log("IndexOutOfBoundException");
					}
					size++;
				}
				utils.log("Found "+size+" elements, when searching for "+phrase);
			});
		}
	});/

/*

var currentSearchPhrase = "";
var search = jQuery("#search input[name='find']");
jQuery(search).attr('autocomplete','off');

	jQuery(search).keyup(function(e){

		switch((e.which) ? e.which : event.keyCode){

			//ENTER
			case 13 : {
				utils.log("ENTER");
				break;
			}

			//ARROW DOWN
			case 40 : {
				utils.log("ARROW DOWN");

				var found = false;

				jQuery("#search-result-box .result-element").each(function(index,element){

                                    utils.log("["+index+"] "+jQuery(element).attr("class"));
				    if(jQuery(element).hasClass("active")){
					if(jQuery("#search-result-box .result-element").length > (index + 1)){
                                            found = true;
				            jQuery(element).removeClass("active");
                                            var next = jQuery("#search-result-box .result-element").get(index+1);
                                            jQuery(next).addClass("active");
                                            return;
	                	        }
	                            } else {
                                        utils.log("element at index "+index+" is not active");
                                    }
				});

				if(!found){
                                    utils.log("Did not find an active one, adding class to the first one");
                                    utils.log(jQuery("#search-result-box .result-element"));
				    jQuery("#search-result-box .result-element:first").addClass("active");
                                    utils.log(jQuery("#search-result-box .result-element"));
				}
				break;
			}

			//ARROW UP
			case 38 : {
				utils.log("ARROW UP");
				break;
			}

			//Escape
			case 27 : {
				utils.log("ESCAPE");
				break;
			}

			//ANY OTHER
			default : {
				var phrase = jQuery("#search input[name='find']").attr("value");
				utils.log(phrase);
				phrase = phrase.replace(/(^\s*)|(\s*$)/g, "");

				//DO NOT DO NEW SEARCH - IF THE PHRASE HASN'T BEEN CHANGED
				if(phrase == currentSearchPhrase){
				    if(phrase != ""){
    				        utils.log("SHOW SEARCHBOX");
				    }

                                    return;
				}

				currentSearchPhrase = phrase;

				if(phrase.length >= 3){
                                    jQuery("#search-result-box").empty();
					var result = jQuery("<div/>");
					utils.log("searching for "+currentSearchPhrase);

					jQuery.get("http://templates.strong.no/Webdesk/netblast/pages/index.html?find="+currentSearchPhrase+"&id=1044785&site="+site.name+"&template=Search::Advanced", function(data){
						var trs = jQuery(data).find("tr");

						utils.log("trs.length: "+trs.length);

						for(i=0;i<trs.length;i++){
							var element = jQuery("<div/>").addClass("result-element");
							var anchor = jQuery("<a/>").attr({href:jQuery(trs[i]).find(".HitTitle a").attr("href")});
							jQuery(element).append(anchor);

							var title = jQuery("<h3/>").text(jQuery(trs[i]).find(".HitTitle").text());
							jQuery(anchor).append(title);

							//IF NEXT IS PRESENTATION
							try {
								if(jQuery(trs[i+1]).find(".HitPresentation").length>0){
									jQuery(anchor).append(jQuery("<p/>").text(jQuery(trs[i]).find(".HitTitle").text()));
									i++;
								}
							} catch (ex){
								utils.log("IndexOutOfBoundException");
							}

							jQuery(result).append(element);
						}

						if(jQuery(result).children().length>0){
							utils.log("FOUND "+jQuery(result).children().length);

							jQuery("#search-result-box").append(result);
							jQuery("#search-result-box").fadeIn();
						} else {
							utils.log("FOUND NOTHING");
						}
					});

				} else {
jQuery("#search-result-box").empty();
					utils.log("AT LEAST 3 LETTERS");
				}

				break;
			}
		}
	});


*/
	jQuery("#search").bind("submit", function(){
		var phrase = jQuery("#find").attr("value").trim();
		if(utils.hasValue(phrase)){
			if(jQuery.history){
				if(window.location.hash != "#search/"+phrase){
					window.location.hash = "#search/"+phrase;
				} else {
					Search(phrase);
				}
			} else {
				Search(phrase);
			}
		}
		return false;
	});

	sitefunctions.navigation();
	sitefunctions.inFocus();
	sitefunctions.textresize();
});


var sitefunctions = {
	navigation : function(){
		jQuery('ul.sf-menu').supersubs({
			minWidth: 12,
			maxWidth: 27,
			extraWidth: 1
		}).superfish({
			delay:       1000,                            // one second delay on mouseout
			animation:   {opacity:'show'},  // fade-in and slide-down animation
			speed:       'fast',                          // faster animation speed
			autoArrows:  true,                           // disable generation of arrow mark-up
			dropShadows: true                            // disable drop shadows
		});
	},

    textresize : function(){
        if(utils.exists(jQuery("#text-size"))){

			var originalFontSize = jQuery("#content").css("font-size");

			jQuery("#text-size .reset").bind("click", function() {
				jQuery("#content").css("font-size", originalFontSize);
			});

			jQuery("#text-size .increase").bind("click", function() {
				var currentFontSize = jQuery("#content").css("font-size");
				var currentFontSizeNum = parseFloat(currentFontSize, 10);
				var newFontSize = currentFontSizeNum*1.2;
				jQuery("#content").css("font-size", newFontSize+"px");
				return false;
			});

			jQuery("#text-size .decrease").bind("click", function() {
				var currentFontSize = jQuery("#content").css("font-size");
				var currentFontSizeNum = parseFloat(currentFontSize, 10);
				var newFontSize = currentFontSizeNum*0.8;
				jQuery("#content").css("font-size", newFontSize+"px");
				return false;
			});
		}
    },

    inFocus : function() {
		jQuery("#sidebar div.in-focus").each(function(index,element){
			if(jQuery(element).find("h4").length>0 ){
				var parameters = eval("({"+jQuery(element).find('h4').attr('parameters')+"})")
				switch(parameters.order){
					case 'list' : {
						jQuery(element).find("div.element:lt("+parameters.size+")").css({display:'block'});
						break;
					}
					case 'random' : {
						var randomIndex = Math.floor(Math.random() * jQuery(element).find("div.element").length);
						var selected = jQuery(element).find("div.element")[randomIndex];
						jQuery(selected).css({display:'block'});
						break;
					}
				}
				utils.log("Activated: "+jQuery(element).find("h4").text());
			} else {
			   jQuery(element).remove();
			}
		});
    }
}


function Search(event){

	var phrase;

	if(event.data){
		phrase = event.data;
	} else {
		phrase = event;
	}

	utils.log("Search(\""+phrase+"\")");


	//Hide search box if it is active
	jQuery("#search div.toggler.active").trigger('click');

	jQuery("#search-result div.meta").empty();
	jQuery("#search-result div.elements").empty();

	try {
		var data = jQuery.ajax({type: 'GET', url: "index.html?find="+phrase+"&id=72089&site="+site.name+"&template=Search::Advanced", async: false}).responseText;
		var size = 0;
		var trs = jQuery(data).find("tr");
		for(i=0;i<trs.length;i++){
			var element = jQuery("<div/>").addClass("result-element");
			var anchor = jQuery("<a/>").attr({href:jQuery(trs[i]).find(".HitTitle a").attr("href")});
			jQuery(element).append(anchor);

			var title = jQuery("<h3/>").text(jQuery(trs[i]).find(".HitTitle").text());
			jQuery(anchor).append(title);

			//IF NEXT IS PRESENTATION
			try {
				if(jQuery(trs[i+1]).find(".HitPresentation").length>0){
					jQuery(anchor).append(jQuery("<p/>").text(jQuery(trs[i]).find(".HitTitle").text()));
					i++;
				}
			} catch (ex){
				utils.log("IndexOutOfBoundException");
			}

			size++;

			jQuery("#search-result div.elements").append(element);
		}
		jQuery("#search-result div.meta").html('<span class="phrase">'+phrase+'</span>, <span class="size">'+size+'</span>');

		jQuery("#search-result div.meta").prepend(
			jQuery("<span></span>").addClass("close").text("Close").click(function(){
																		jQuery("#search-result").fadeOut('fast');
																	})
		);

	} catch(exception) {
		utils.log("Error: [Search submit] "+exception);
	}


	jQuery("#search-result").css("display","block");
	return false;
}


//HISTORY
function callback(hash){
    if(utils.hasValue(hash)){
        if(hash.startsWith("search")){
            var phrase = hash.substring(hash.indexOf("/")+1).trim();
            if(utils.hasValue(phrase)){
                Search(phrase);
            }
        }
    }
}


/******* SITEMAP

var lists = $("#footer .sitemap li.level-1");

lists.each(function(index,element){

    var number_of_children = $(this).find("li").length;

    console.log($(this).text()+", children: "+number_of_children);

    if(number_of_children < 3){

    }

    $(this).css("width",((100/lists.length)-5)+"%");
});

*********/
