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 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 -->'
	}
}



window.onload = function(){

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

	jQuery.each(page.elements, function(i,requested){
		jQuery.each(site.elements, function(j, element){
			if(element.name == jQuery.trim(requested)){

				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 '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+''))){

											container = jQuery(''+element.position+'');

											jQuery(container).append(rotator.addClass(element.title));

											if (jQuery.browser.msie) {
												//Idiotic IE fix
												jQuery(container).css("overflow","hidden");
											}
										} 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;
					}
				}
			}
		});
	});

/*
	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://templates.strong.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;
/*			console.log(json.current);
			jQuery.each(json.elements,function(index,element){
				console.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");
	});


	//CAN POSSIBLE FIX SOME IE TROUBLES
	var zIndexNumber = 1000;
	jQuery('div').each(function() {
		jQuery(this).css('zIndex', zIndexNumber);
		zIndexNumber -= 10;
	});


	//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");
		}
	}

    //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();
    });

	//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();
		}
	});*/

	//BY-LINE
	var by_line_date = $("#byline .date").length > 0 ? $("#byline .date") : false;
	var by_line_source = $("#byline .source").length > 0 ? $("#byline .source") : false;

	if(by_line_date && by_line_source) by_line_date.after(" - ");
	if(by_line_date && by_line_date.text().length==23){
    	by_line_date.text(by_line_date.text().substr(8,2)+"."+by_line_date.text().substr(5,2)+"."+by_line_date.text().substr(0,4));
	}


	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){

                                    console.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 {
                                        console.log("element at index "+index+" is not active");
                                    }
				});

				if(!found){
                                    console.log("Did not find an active one, adding class to the first one");
                                    console.log(jQuery("#search-result-box .result-element"));
				    jQuery("#search-result-box .result-element:first").addClass("active");
                                    console.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/>");
					console.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("div.in-focus").each(function(index,element){ //#sidebar
			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=1044785&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);
            }
        }
    }
}
