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>';
										}
										
										rotator.append(jQuery(panel).html(image + title + presentation));
									});
									
									
									/** 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");
						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");	
						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':'500',
								'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(){
	
	//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");							  
	});
	
	
	//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();
		}
	});*/


	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("#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=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);
            }
        }
    }
}