$(init_page);
var page_height;
var cur_caption = 0;
var sux_browser, very_sux_browser = false;
 
// init_sifr();  
  
function init_page(){
  BrowserDetect.init();
  if(BrowserDetect.browser == 'Explorer' && BrowserDetect.version < 8)sux_browser = true;
  if(BrowserDetect.browser == 'Explorer' && BrowserDetect.version < 7)very_sux_browser = true;
 
 	$('.fancybox').fancybox( 
 		{
 			width:300,
 			padding:0,
 			overlayShow:true,
 			overlayOpacity:0,
 			autoDimensions:true,
 			autoScale:false,
			scrolling:'no'
 		}
  );
  if($('#menu_canvas').get()[0]!=undefined){
    setup_menu();
  }
  vtext(); // vertical text
  
  
  if(preload_images!=undefined){ 
 
		$.imgpreload(preload_images ,function(){
 
			$('#menu_canvas').fadeIn();
			slide_content();
		});
	
	}
	/*
  if(very_sux_browser || sux_browser ){
    $('#menu_canvas').show();
		slide_content();

  }*/
  
  
  $('a.fivestar_balloon').fivestar_balloon();
  
  $('.content_close').click(close_content);
  $('.content_open').click(slide_content);
  
  if($('#backgrounds img').length>1){
    background_slideshow();
  }
  
  if($('body').hasClass('template-page_map')){
    // On map page, switch the location on close button.
    $('.content_close').insertAfter('.content_open');
  }
	
	// resize page to fit content
	if($('#content')[0].scrollHeight > 0);
		$('#content').height($('#content')[0].scrollHeight);
	$('#page').height((parseFloat($('#content').height()) + 80) + 'px');
}

var background_idx = 0;
function background_slideshow(){
  
  $('#backgrounds img').each(function(i){
      if(i>0){
        $(this).hide();  
      }
  }); 
	
	$('#content .bg img').each(function(i){
      if(i>0){
        $(this).hide();  
      }
  });  
  
  setTimeout(function(){next_slide()}, 6500); 
}

function next_slide(){
  //alert( $('#backgrounds img')[background_idx]);
   $($('#backgrounds img')[background_idx]).fadeOut('slow');
   $($('#content .bg img')[background_idx]).fadeOut('slow');

   background_idx ++;
   if(background_idx > $('#backgrounds img').length-1){
     background_idx = 0;
   }   
   
 
   $($('#backgrounds img')[background_idx]).fadeIn('slow');
   $($('#content .bg img')[background_idx]).fadeIn('slow');


   setTimeout(function(){next_slide()}, 5000); 
   
}
/* 
	Fonts:
	- Bebas
	- Futura LT CondensedLight
*/
function setup_menu(){
 
	var menu_data = [];
	
	$('#main_menu li').each(function(){
			var pid = $(this).parent().attr('id');
			menu_data.push( {
				text: $(this).find('a').html(), 
				pid:pid,
				id: $(this).attr('id'),
				child_height:0,
				menu:null,
				children:[],
				href: $(this).find('a').attr('href'),
				current: $(this).hasClass('current-page-item')|| $(this).hasClass('current-page-parent'),
				open:false
			} );
	});
	
  /*
  	To merge multiple paths
  */
  Raphael.fn.merge = function(set){
  	var paths = []
  	for(var i=0; i<set.length; i++){
  		 paths.push(set[i].attr('path'));
  		 if(i>0){
  		 	set[i].remove();	
  		 }
  	}
  	set[0].attr({path: paths.join(' ')} );
  }

  //menu_data = [{text:'Hey',pid:'page-item-1',id:'page-item-2'}];

	// Creates canvas 320 � 200 at 10, 50
	var paper = Raphael("menu_canvas",400,500);
	var menu_item = paper.set();
	menu_item.push(paper.rect(-200,-100,400,103).attr({'stroke-width':'0','stroke-opacity':0,'fill':'#fff'}));
	
	var y =0;
	var pmm_id = '';

	var menu_color_normal = '#b4d333';
	var menu_color_hover = '#48879b';

	for(var i = 0; i<menu_data.length ; i++){
		
		
		var spacing = 0;
		menu_color = menu_color_normal;
		if(menu_data[i].current)menu_color= menu_color_hover;
		
		if(menu_data[i].pid=='main_menu'){
			// Main Menu
 			preload_images.push(WWW_ROOT + 'template/fivestar/font_menu.php?text=' + escape(menu_data[i].text));
  		var menu_bg1 = paper.rect(-200, y,400,46).attr({'stroke-width':'0','stroke-opacity':0,'fill':'#fff'});
			var menu_bg = paper.rect(-200, y+ 2,400,44).attr({'stroke-width':'0','stroke-opacity':0,'fill': menu_color });
			var menu_hit = paper.image( WWW_ROOT + 'template/fivestar/font_menu.php?text=' + escape(menu_data[i].text) , -200, y, 400,44);
			
			spacing = 47;
			pmm_id = menu_data[i].id;
			 
		}else{
 
			// Submenu
 			preload_images.push( WWW_ROOT + 'template/fivestar/font_submenu.php?text=' + escape(menu_data[i].text) );
			var menu_bg1 = paper.rect(-200, y,400,22).attr({'stroke-width':'0','stroke-opacity':0,'fill':'#fff'});
			var menu_bg = paper.rect(-200, y ,400,21).attr({'stroke-width':'0','stroke-opacity':0,'fill':menu_color });
			var menu_hit = paper.image( WWW_ROOT + 'template/fivestar/font_submenu.php?text=' + escape(menu_data[i].text), -200, y , 400,21);
			 
			spacing = 22
			for(var j=0; j<menu_data.length; j++){
				if(menu_data[j].id == pmm_id){
					menu_data[j].child_height+= spacing;
				}	
			}
		}
		
 
		menu_hit.data = menu_data[i]; // drop all reference here.
		menu_hit.id = menu_data[i].id ;
		menu_hit.pid = menu_data[i].pid.replace(/page_menu_/,'page-item-');;
		menu_hit.idx = i;
		menu_hit.href = menu_data[i].href;
		
 		var menu = paper.set();
 		if(menu_data[i].pid=='main_menu'){
  		pmm_id = menu_data[i].id;
		}else{
			menu.pid = menu_data[i].pid;
 
			for(var j=0; j<menu_data.length; j++){
 
				if(menu_data[j].id == pmm_id){
 
					menu_data[j].children.push(menu); // reference the submenu to parent menu
				}	
			}
		}

		menu.id =  menu_data[i].id;
		menu.pid = menu_data[i].pid.replace(/page_menu_/,'page-item-');
		menu.open = menu_data[i].open;
		menu.parent = null;
		menu.hit = menu_hit;
		
		menu_data[i].menu = menu;
 
		menu.push(
			menu_hit,
			menu_bg,
			menu_bg1
		);
		menu.toBack(); // flip the order
		
		menu_item.push(menu);

		menu_item.attr({'cursor':'pointer'});
		menu_hit.menu_bg = menu_bg;		
		menu_hit.open = menu.open;
		menu_hit.menu = menu;
		
		menu_hit.click(menu_item_click);
		menu_hit.hover(menu_item_hover);
		menu_hit.mouseout(menu_item_mouseout);


		y +=spacing;
	} // end of assignment loop
	
	var up = 0
	for(var i = 0; i<menu_data.length; i++){
		menu_data[i].menu.bottom =  menu_data[i].menu[0].attr('y');
		menu_data[i].menu.translate(0,up);
		menu_data[i].menu.top =  menu_data[i].menu[0].attr('y');
		if(menu_data[i].current == false){
			up-= menu_data[i].child_height;
		}
	}
	menu_item.rotate(-18, 200, 0);
 
 
  //paper.safari();
  
	//menu_item.rotate(20);

	function menu_item_hover(){
		//this.menu_bg.attr({'fill':'#48879b'});
		
		if(this.data.current) return;
		this.menu_bg.animate({'fill':'#48879b'},200);
		
		show_sub_menu(this);
	}		 
	function menu_item_mouseout(){
		if(this.data.current) return;

		//this.menu_bg.attr({fill:'#b4d333'});
		this.menu_bg.animate({fill:'#b4d333'},200);
		check_hide_sub_menu(this);
		if(this.menu.parent!=undefined){
			check_hide_sub_menu(this.menu.parent.hit);
		}
	}	
		
	function menu_item_click(){
		document.location = this.href;
	}


	function check_hide_sub_menu(obj ){
	 
		obj.menu.hide_timeout = 	setTimeout( function(){ hide_sub_menu(obj);}, 1000); 
	
	}
	/*
		Show submenu
		@param object obj Parent menu set object
	*/
	function show_sub_menu(obj){

		var s = paper.set();
		s.head = obj; 

		if(obj.menu.hide_timeout){
			clearTimeout(obj.menu.hide_timeout);
			obj.menu.hide_timeout = undefined;
		}

		if(obj.open) return;

		if(obj.menu.parent!=undefined){
			 
			if(obj.menu.parent.hide_timeout!=undefined){
				//alert('cancel hide');
				clearTimeout( obj.menu.parent.hide_timeout );
				obj.menu.parent.hide_timeout = undefined;
			}
		}		

		var ok = false;
		 
		for(var i = 0; i<menu_item.length; i++){
			if(menu_item[i].pid == obj.id ){
 		 		ok = true;
 		 		menu_item[i].parent = obj.menu ; 		
 		 		 		 
			}
			if(ok){
				s.push(menu_item[i]);
			}
		}
	
		var deg = 18;
		var slide_y = obj.data.child_height;
		var dx = Math.sin(deg * Math.PI/180) * slide_y;
		var dy = Math.cos(deg * Math.PI/180) * slide_y;
		
 		move_set(s, -200, obj.attr('y') + obj.attr('height') - obj.data.child_height );
 		//alert(slide_y + obj.attr('y') + obj.attr('height'));
		move_set(s, -200, obj.attr('y') + obj.attr('height') + 3  , 200,'>', function(){ 
 			this.head.open  = true;  
		} );
	}
		
	function hide_sub_menu(obj){
		//if(obj.open == false ) return; // already closed
 
		var s = paper.set();
		s.head = obj;
		
		var ok = false;
		for(var i = 0; i<menu_item.length; i++){
			if(menu_item[i].pid == obj.id ){
 		 		ok = true;
 			}
			if(ok){
				s.push(menu_item[i]);
			}
		}
	
		var deg = 18;
		var slide_y = -obj.data.child_height;
		var dx = Math.sin(deg * Math.PI/180) * slide_y;
		var dy = Math.cos(deg * Math.PI/180) * slide_y;
		
		move_set(s, dx, obj.attr('y') + obj.attr('height') + slide_y + 3 , 200,'>', function(){ 
		//	alert('is open: ' + this.parent.open);
			this.head.open = false 
			
		});
	}
	
	function get_first_subset(){
		var subset = [];
		iterate_set(set);
		return subset[0];		
	}

	function move_set(set, x,y,time,easing, callback  ){

 		var subset = [];
 		iterate_set(set);
 		var dx,dy, to_x, to_y;

		for(var i = 0; i<subset.length; i++){
			if(i == 0){
				if(subset[i].move_to_y!=undefined){
					 y +=   subset[i].move_to_y  - subset[i].attr('y')  ;	
				}

				// set the delta
				dx =  x - subset[i].attr('x')  ;
				dy =  y - subset[i].attr('y')   ;
 
			
			} 
			to_x = subset[i].attr('x') + dx;
			to_y = subset[i].attr('y') + dy;
			if(time==undefined){
				subset[i].attr({x:-200, y:to_y});	
				 
			}else{
				if(subset[i].move_to_y!=undefined) return;
				subset[i].move_to_y = to_y;
				subset[i].animating = true;
 				subset[i].i = i;
				subset[i].animate({x:-200 , y: to_y  }, time,easing,  function(){
					subset[this.i].animating = false;
					subset[this.i].move_to_y = undefined;
					
					if(callback!=undefined){
						
						if(this.i == 0){ 
	 
						  callback.call(set);
						}
					}
				}) ;
 
			}
			
		}
		
		function iterate_set(set){
	 		for(var i = 0; i<set.length; i++){
	 			//if(set[i].attr('x')!=undefined){	
 
	 			  if(set[i].length>0){
	 			  	iterate_set(set[i]);	
	 			  }else{
	 			  	subset.push(set[i]);
	 			  }
	 			//} 
	 		}		
			
		}	
		
	}

	
} // End function setup_menu()
 
function slide_content(){
  if($('#content').get(0)==undefined) return false;
  $('#content').get(0).right = $('#content').css('right');
	$('#content').css({'right': '-' +  $('#content').width() + 'px'});
	$('#content').animate({right:(very_sux_browser?-1:0)}, 1000);
	$('#content .bg').width(1238).css({left:(-1238 + 45)});
//	alert($('#content').width());
	$('#content .bg').animate({left:( -1238 + parseFloat( $('#content').width()) + 45)}, 1000,
	  function(){
	    //alert('a');
	//    if($('body').hasClass('template-page_map')){
	      
 
	        $('.content_close').fadeIn();
	   
	//    }
	  }
	);
  $('.content_open').hide();
  
}
function close_content(){
 // if($('body').hasClass('template-page_map')){
    $('.content_close').hide();
 // }
	$('#content').animate({right: $('#content').get(0).right} , 1000);
 	$('#content .bg').animate({left:(-1238 +   45)}, 1000, function(){
 
 	    $('.content_open').css({right:'-20px',display:'block'}).show().animate({right:'-1px' }) ;
 
 	});
	return false;
}

function toggle_content(){
  
  if($('#content').hasClass('closed')){
    slide_content();
  }else{
    close_content();    
  } 
}


function vtext(){
  $('.vtext').each(function(){
    var div = $('<div class="vtext_canvas"></div>');
    
    $(this).after(div);
    var paper = Raphael(div.get(0) ,20,120 );
     paper.text(14,120,$(this).html() ).attr({'text-anchor':'start', 'font-family':'Arial', 'font-size':(document.all?11:12), fill :'#ffffff' } ).rotate(-90,14,120);
    $(this).remove();
    paper.safari();
  })
  
  
}



/* Helper functions */

function has_flash(){
  return FlashDetect.installed;
}


function is_valid_email(email) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   if(reg.test(email) == false) {
      return false;
   }
   return true;
}



/* Browser Detection Class */
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]
};


