/******************************************************************************
* utils.js
*
* Funcions varies genèriques utilitzables a qualsevol lloc i independents de
*	la base de dades o d'una aplicació en concret.
*
*	Juan Carlos M. @ barnacode.com 2011 | http://www.barnacode.com
******************************************************************************/
// Funcion render footer admin

function getFooterAdmin() {
	
	var wrapper = $('#wrapper').height();
	wrapper = wrapper-90;
	var ventana = $(window).height();
	//alert(wrapper+' - '+ventana);
	if (wrapper<ventana) {
		//alert('El documento es mayor que wrapper');
		//$('#wrapper').fadeIn('fast');
		$('#wrapper-footer').css('position', 'fixed').fadeIn('slow');
	}else if (wrapper>ventana) {
		//alert('El wrapper es mayor que el documento');
		//$('#wrapper').fadeIn('fast');
		$('#wrapper-footer').css('position', 'absolute').fadeIn('slow');
	}
	
}

// Funciones para el menubar
/*
var original = $('.menu a.active:first').attr('id');
var last = $('.menu li ul li a.active').attr('id');
//alert(last);

$('.menu li').hover(function() {
	var idm = $(this).attr('id');
	$('.menu li > a').not('.menu li a'+idm).removeClass('active');
	//$('#'+last).addClass('active');
});
$('#menubar ul ul').hover(function(){
	var  id = $(this).attr('class');
	var idp = $(this).attr('id');
	//alert(id);
	//$('#menubar ul li a[id!='+id+']').removeClass('active');
	$('#'+id+'').addClass('active');
	//$('#'+ido+'').removeClass('active');
});

$('#menubar ul').mouseleave(function() {
	//alert('fuera!!!');
	$('.menu li > a').not('.menu li a '+original).removeClass('active');
	$('#'+original).closest('a').addClass('active');
	$('#'+last).addClass('active');
});
*/
$('#input .placeholder').click(function() {
	$('#input input[type="text"]').focus();
	$(this).fadeOut('fast');
});
$('#input input').focus(function() {
	$('#input').addClass('select').fadeTo('fast', 1);
	$('#input .placeholder').fadeOut('fast');
});
$('#input input').blur(function() {
	$('#input').fadeTo('fast', 0.3).removeClass('select');
	$('#input .placeholder').fadeIn('fast');
});


// Foin funciones mail

function isMail(txt){ 
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	
	return filter.test(txt);
}

function isURL(txt){ 
	var filter  = /^http|https/;
	
	return filter.test(txt);
}

function isDate(txt){
	var filter = /^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/;

	return filter.test(txt);
}

function right(str, n){
	/***
	IN: str - the string we are RIGHTing
			n - the number of characters we want to return
	
	RETVAL: n characters from the right side of the string
	***/
	
	if(n<=0) return ""; // Invalid bound, return blank string
	else if(n>String(str).length) return str; // Invalid bound, return entire string
	else { // Valid bound, return appropriate substring
		 var iLen=String(str).length;
		 return String(str).substring(iLen, iLen-n);
	}
}

function mid(str, start, len){
	/***
	IN: str - the string we are LEFTing
			start - our string's starting position (0 based!!)
			len - how many characters from start we want to get
	
	RETVAL: The substring from start to start+len
	***/
	// Make sure start and len are within proper bounds
	if(start<0 || len<0) return "";

	var iEnd, iLen=String(str).length;
	
	if(start+len>iLen) iEnd=iLen;
	else iEnd=start+len;

	return String(str).substring(start,iEnd);
}

var myWin; 

function popup(url, id, w, h, scroll){
	if(!myWin || myWin.closed){
		myWin = window.open(''+url+'',''+id+'','width='+w+',height='+h+',toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars='+scroll+',resizable=yes,top='+((screen.height/2)-(200))+',left='+((screen.width/2) - (150)) + '');
	}else{
		myWin.focus();
	};
	
	void(0); 
}

function popupNoToolsFull(url, nom, scroll){
	settings='height='+screen.availHeight+',width='+screen.availWidth+',top=0,left=0,scrollbars='+scroll+',resizable,toolbar=no,status=no,resizable=yes';
	win=window.open(url, nom, settings);
}

/**********************************************
*	Función para mostrar mensajes tipo Growl
*	msg = mensaje a mostrar
*	tip = tipo de mensaje ok, ok, null
**********************************************/
function setGrowl(msg,tip) {
	if (tip=='ok') { 
			$.bGrowl({message: msg,icon:'ui-icon-circle-check',timeout:5,className: 'bGrowlSuccess'});
	}else if (tip=='ko') {
		$.bGrowl({message: msg,icon:'ui-icon-alert',timeout:5,className: 'bGrowlFail'});
	}else{
		$.bGrowl({message: msg,timeout:5});
	}
}
// Valida un campo si es obligatorio
function valReq(id) {
	var filter  =  /\S/;
	if (!filter.test($(id).val())) {
		$(id).fadeTo("fast", 0.1, function() { 
			$(this).removeClass("tb").addClass("tberror");
			$(this).fadeTo("slow", 1);
		});
		return false;
	}else{
		$(id).removeClass("tberror").addClass("tb");
		return true;
	}
}
// Valida un campo si es obligatorio y además una dirección de correo valida
function valMail(id) {
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (!filter.test($(id).val())) {
		$(id).fadeTo("fast", 0.1, function() { 
			$(this).removeClass("tb").addClass("tberror");
			$(this).fadeTo("slow", 1);
		});
		return false;
	}else{
		$(id).removeClass("tberror").addClass("tb");
		return true;				
	}
}
// Resetea un formulario --> $('form').clearForm()
$.fn.clearForm = function() {
	return this.each(function() {
	  var type = this.type, tag = this.tagName.toLowerCase();
	  if (tag == 'form')
		return $(':input',this).clearForm();
	  if (type == 'text' || type == 'password' || tag == 'textarea')
		this.value = '';
	  else if (type == 'checkbox' || type == 'radio')
		this.checked = false;
	  else if (tag == 'select')
		this.selectedIndex = -1;
	});
};

/*	Hack placeholder	*/
jQuery(function() {
	if(!Modernizr.input.placeholder){
		$("input").each(
			function(){
				if($(this).val()=="" && $(this).attr("placeholder")!=""){
					$(this).val($(this).attr("placeholder"));
					$(this).focus(function(){
						if($(this).val()==$(this).attr("placeholder")) $(this).val("");
					});
					$(this).blur(function(){
						if($(this).val()=="") $(this).val($(this).attr("placeholder"));
					});
				}
		});
	}
});

// Función para el relleno simultaneo de campos
function getSyncText(origen, destino) {
	$('#'+origen).keyup(function(){
		$('#'+destino).val($('#'+origen).val())	;
	}); 
}

// Funcion para comprobar que existe un selector
jQuery.fn.exists = function(){return this.length>0;}

// Funcion del modal nyroModal --> class="nyroModal"
/*
$(function() {
  $.nyroModalSettings({
    processHandler: function(settings) {
      var from = settings.from;
      if (from && from.href && from.href.indexOf('http://www.youtube.com/watch?v=') == 0) {
        $.nyroModalSettings({
		  addImageDivTitle: true,	
		  type: 'swf',
          height: 385,
          width: 640,
          url: from.href.replace(new RegExp("watch\\?v=", "i"), 'v/')
        });
      }
    }
  });
});
*/

 /*
 * TipTip
 * Copyright 2010 Drew Wilson
 * www.drewwilson.com
 * code.drewwilson.com/entry/tiptip-jquery-plugin
 *
 * Version 1.3   -   Updated: Mar. 23, 2010
 *
 * This Plug-In will create a custom tooltip to replace the default
 * browser tooltip. It is extremely lightweight and very smart in
 * that it detects the edges of the browser window and will make sure
 * the tooltip stays within the current window size. As a result the
 * tooltip will adjust itself to be displayed above, below, to the left 
 * or to the right depending on what is necessary to stay within the
 * browser window. It is completely customizable as well via CSS.
 *
 * This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */


	$.fn.tipTip = function(options) {
		var defaults = { 
			activation: "hover",
			keepAlive: false,
			maxWidth: "200px",
			edgeOffset: 3,
			defaultPosition: "top",
			delay: 400,
			fadeIn: 200,
			fadeOut: 200,
			attribute: "title",
			content: false, // HTML or String to fill TipTIp with
		  	enter: function(){},
		  	exit: function(){}
	  	};
	 	var opts = $.extend(defaults, options);
	 	
	 	// Setup tip tip elements and render them to the DOM
	 	if($("#tiptip_holder").length <= 0){
	 		var tiptip_holder = $('<div id="tiptip_holder" style="max-width:'+ opts.maxWidth +';"></div>');
			var tiptip_content = $('<div id="tiptip_content"></div>');
			var tiptip_arrow = $('<div id="tiptip_arrow"></div>');
			$("body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div id="tiptip_arrow_inner"></div>')));
		} else {
			var tiptip_holder = $("#tiptip_holder");
			var tiptip_content = $("#tiptip_content");
			var tiptip_arrow = $("#tiptip_arrow");
		}
		
		return this.each(function(){
			var org_elem = $(this);
			if(opts.content){
				var org_title = opts.content;
			} else {
				var org_title = org_elem.attr(opts.attribute);
			}
			if(org_title != ""){
				if(!opts.content){
					org_elem.removeAttr(opts.attribute); //remove original Attribute
				}
				var timeout = false;
				
				if(opts.activation == "hover"){
					org_elem.hover(function(){
						active_tiptip();
					}, function(){
						if(!opts.keepAlive){
							deactive_tiptip();
						}
					});
					if(opts.keepAlive){
						tiptip_holder.hover(function(){}, function(){
							deactive_tiptip();
						});
					}
				} else if(opts.activation == "focus"){
					org_elem.focus(function(){
						active_tiptip();
					}).blur(function(){
						deactive_tiptip();
					});
				} else if(opts.activation == "click"){
					org_elem.click(function(){
						active_tiptip();
						return false;
					}).hover(function(){},function(){
						if(!opts.keepAlive){
							deactive_tiptip();
						}
					});
					if(opts.keepAlive){
						tiptip_holder.hover(function(){}, function(){
							deactive_tiptip();
						});
					}
				}
			
				function active_tiptip(){
					opts.enter.call(this);
					tiptip_content.html(org_title);
					tiptip_holder.hide().removeAttr("class").css("margin","0");
					tiptip_arrow.removeAttr("style");
					
					var top = parseInt(org_elem.offset()['top']);
					var left = parseInt(org_elem.offset()['left']);
					var org_width = parseInt(org_elem.outerWidth());
					var org_height = parseInt(org_elem.outerHeight());
					var tip_w = tiptip_holder.outerWidth();
					var tip_h = tiptip_holder.outerHeight();
					var w_compare = Math.round((org_width - tip_w) / 2);
					var h_compare = Math.round((org_height - tip_h) / 2);
					var marg_left = Math.round(left + w_compare);
					var marg_top = Math.round(top + org_height + opts.edgeOffset);
					var t_class = "";
					var arrow_top = "";
					var arrow_left = Math.round(tip_w - 12) / 2;

                    if(opts.defaultPosition == "bottom"){
                    	t_class = "_bottom";
                   	} else if(opts.defaultPosition == "top"){ 
                   		t_class = "_top";
                   	} else if(opts.defaultPosition == "left"){
                   		t_class = "_left";
                   	} else if(opts.defaultPosition == "right"){
                   		t_class = "_right";
                   	}
					
					var right_compare = (w_compare + left) < parseInt($(window).scrollLeft());
					var left_compare = (tip_w + left) > parseInt($(window).width());
					
					if((right_compare && w_compare < 0) || (t_class == "_right" && !left_compare) || (t_class == "_left" && left < (tip_w + opts.edgeOffset + 5))){
						t_class = "_right";
						arrow_top = Math.round(tip_h - 13) / 2;
						arrow_left = -12;
						marg_left = Math.round(left + org_width + opts.edgeOffset);
						marg_top = Math.round(top + h_compare);
					} else if((left_compare && w_compare < 0) || (t_class == "_left" && !right_compare)){
						t_class = "_left";
						arrow_top = Math.round(tip_h - 13) / 2;
						arrow_left =  Math.round(tip_w);
						marg_left = Math.round(left - (tip_w + opts.edgeOffset + 5));
						marg_top = Math.round(top + h_compare);
					}

					var top_compare = (top + org_height + opts.edgeOffset + tip_h + 8) > parseInt($(window).height() + $(window).scrollTop());
					var bottom_compare = ((top + org_height) - (opts.edgeOffset + tip_h + 8)) < 0;
					
					if(top_compare || (t_class == "_bottom" && top_compare) || (t_class == "_top" && !bottom_compare)){
						if(t_class == "_top" || t_class == "_bottom"){
							t_class = "_top";
						} else {
							t_class = t_class+"_top";
						}
						arrow_top = tip_h;
						marg_top = Math.round(top - (tip_h + 5 + opts.edgeOffset));
					} else if(bottom_compare | (t_class == "_top" && bottom_compare) || (t_class == "_bottom" && !top_compare)){
						if(t_class == "_top" || t_class == "_bottom"){
							t_class = "_bottom";
						} else {
							t_class = t_class+"_bottom";
						}
						arrow_top = -12;						
						marg_top = Math.round(top + org_height + opts.edgeOffset);
					}
				
					if(t_class == "_right_top" || t_class == "_left_top"){
						marg_top = marg_top + 5;
					} else if(t_class == "_right_bottom" || t_class == "_left_bottom"){		
						marg_top = marg_top - 5;
					}
					if(t_class == "_left_top" || t_class == "_left_bottom"){	
						marg_left = marg_left + 5;
					}
					tiptip_arrow.css({"margin-left": arrow_left+"px", "margin-top": arrow_top+"px"});
					tiptip_holder.css({"margin-left": marg_left+"px", "margin-top": marg_top+"px"}).attr("class","tip"+t_class);
					
					if (timeout){ clearTimeout(timeout); }
					timeout = setTimeout(function(){ tiptip_holder.stop(true,true).fadeIn(opts.fadeIn); }, opts.delay);	
				}
				
				function deactive_tiptip(){
					opts.exit.call(this);
					if (timeout){ clearTimeout(timeout); }
					tiptip_holder.fadeOut(opts.fadeOut);
				}
			}				
		});
	}
	
	
// función que posiciona posición dentro del mapa
// cod = codigo registro
// x = Posición
// y = posicion
// mapa = id del mapa
function setBussinesLocation(cod, x, y, mapa) {
  var root = 'http://'+window.location.hostname;
  if (x==0 && y==0) {
	  var geocoder;
	  var map;
	  var marker = null;
	  
	  function load() {
		geocoder = new google.maps.Geocoder();
		var latlng = new google.maps.LatLng(41.387917, 2.169919);
		var myOptions = {
		  zoom: 16,
		  center: latlng,
		  mapTypeId: google.maps.MapTypeId.ROADMAP,
		  scaleControl: false,
		  draggable: true
		}
		map = new google.maps.Map(document.getElementById(mapa), myOptions);
		
		// Realizamos estilos del mapa
	 	var stylez = [ { featureType: "poi.business", elementType: "labels", stylers: [ { visibility: "off" } ] }, { featureType: "landscape.man_made", stylers: [ { visibility: "off" } ] } ];
		var styledMapOptions = {
			map: map,
			name: "sin_bussines"
		}
		
		
		var testmap =  new google.maps.StyledMapType(stylez,styledMapOptions);
		map.mapTypes.set('sin_bussiness', testmap);
		map.setMapTypeId('sin_bussiness');			
		
		  google.maps.event.addListener(map, 'click', function(e) {
			if (marker==null) {
			// Creamos marca sino existe				
				marker = new google.maps.Marker({
					position: e.latLng,
					map: map,
					icon: root+"/img/mm_20_green.png",
					title: 'Aqui',
				});	
				geocoder.geocode({'latLng': marker.getPosition()}, function(results, status) {
				  if (status == google.maps.GeocoderStatus.OK) {
					if (results[0]) {
					  $('#y').val(marker.getPosition().lat());
					  $('#x').val(marker.getPosition().lng()); 
					}
				  }
				});						
			}else{
				// Si existe mostramos mensaje e invitamos a borrar marca antigua
				alert("No se puede definir mas de una situacion por empresa.\n\nElimina la situacion actual para definir una de nueva.\nPara eliminar haz doble clic en la situacion actual.");	
				google.maps.event.addListener(marker, 'dblclick', function() {
				  if(confirm("Seguro que quiere eliminar la situacion actual de esta empresa?")) {
					   marker.setMap(null);
					   marker=null; 
					  $('#x').val('');
					  $('#y').val(''); 						   
				  }
				});					
			}
		  });	
		
	  }
	  
	  $('#pob').blur(function() {
		  codeAddress(cod, map);  
	  });
			  
		  window.onload=function(){load();}
		  google.maps.event.addDomListener(window, 'load', load());
  }else{
	  //alert("Ya existe posicion");
	  var map;
	  var geocoder;
	  function load() {
		geocoder = new google.maps.Geocoder();
		var latlng = new google.maps.LatLng(y, x);
		var myOptions = {
		  zoom: 16,
		  center: latlng,
		  mapTypeId: google.maps.MapTypeId.ROADMAP,
		  scaleControl: false,
      	  draggable: true
		}
		map = new google.maps.Map(document.getElementById(mapa), myOptions);
		
		// Realizamos estilos del mapa
	 	var stylez = [ { featureType: "poi.business", elementType: "labels", stylers: [ { visibility: "off" } ] }, { featureType: "landscape.man_made", stylers: [ { visibility: "off" } ] } ];
		var styledMapOptions = {
			map: map,
			name: "sin_bussines"
		}
		
		
		var testmap =  new google.maps.StyledMapType(stylez,styledMapOptions);
		map.mapTypes.set('sin_bussiness', testmap);
		map.setMapTypeId('sin_bussiness');	
			
		marker = new google.maps.Marker({
			position: latlng,
			map: map,
			icon: root+"/img/mm_20_green.png",
			title: 'Estas aqui'
		});
		  google.maps.event.addListener(map, 'click', function(e) {
			if (marker==null) {
			// Creamos marca sino existe				
				marker = new google.maps.Marker({
					position: e.latLng,
					map: map,
					icon: root+"/img/mm_20_green.png",
					title: 'Aqui',
				});	
				geocoder.geocode({'latLng': marker.getPosition()}, function(results, status) {
				  if (status == google.maps.GeocoderStatus.OK) {
					if (results[0]) {
					  $('#y').val(marker.getPosition().lat());
					  $('#x').val(marker.getPosition().lng()); 
					}
				  }
				});						
			}else{
				// Si existe mostramos mensaje e invitamos a borrar marca antigua
				alert("No se puede definir mas de una situacion por empresa.\n\nElimina la situacion actual para definir una de nueva.\nPara eliminar haz doble clic en la situacion actual.");	
				google.maps.event.addListener(marker, 'dblclick', function() {
				  if(confirm("Seguro que quiere eliminar la situacion actual de esta empresa?")) {
					   marker.setMap(null);
					   marker=null; 
					  $('#x').val('');
					  $('#y').val(''); 						   
				  }
				});					
			}
		  });							
	  }	
	  window.onload=function(){load();}	  
	  google.maps.event.addDomListener(window, 'load', load());
	  $('#pob').blur(function() {
		codeAddress(cod, map);  
	  });		  	  
  }	
}	
// Posicionamos el mapa segun campos de direccion
function codeAddress(cod, mapa) {
	var root = 'http://'+window.location.hostname+'';
	var map = mapa;
	var marker = null;
	var dir = $('#dir').val();
	var pob = $('#pob').val();
	var cp = $('#cp').val();
	var pai = 'Spain';
	var address = dir +', '+pob+' '+cp+' '+pai;
	geocoder = new google.maps.Geocoder();
	geocoder.geocode( { 'address': address}, function(results, status) {
	  if (status == google.maps.GeocoderStatus.OK) {
		
		map.setCenter(results[0].geometry.location);
		var lat = results[0].geometry.location.lat();
		var lng = results[0].geometry.location.lng();
		$('#y').val(lat);
		$('#x').val(lng);
		  
		  if (cod==0) {
		  // Creamo evento click sobre el mapa
		  google.maps.event.addListener(map, 'click', function(e) {
			if (marker==null) {
			// Creamos marca sino existe				
				marker = new google.maps.Marker({
					position: e.latLng,
					map: map,
					icon: root+"/img/mm_20_green.png",
					title: 'Estas aqui'
				});	
				geocoder.geocode({'latLng': marker.getPosition()}, function(results, status) {
				  if (status == google.maps.GeocoderStatus.OK) {
					if (results[0]) {
					  $('#y').val(marker.getPosition().lat());
					  $('#x').val(marker.getPosition().lng()); 
					}
				  }
				});						
			}else{
				// Si existe mostramos mensaje e invitamos a borrar marca antigua
				alert("No se puede definir mas de una situacion por empresa.\n\nElimina la situacion actual para definir una de nueva.\nPara eliminar haz doble clic en la situacion actual.");	
				google.maps.event.addListener(marker, 'dblclick', function() {
				  if(confirm("Seguro que quiere eliminar la situacion actual de esta empresa?") && marker) {
					   marker.setMap(null);
					   marker=null; 
					  $('#x').val('');
					  $('#y').val(''); 						   
				  }
				});					
			}
		  });
		  }
	  } else {
		alert("Geocode was not successful for the following reason: " + status);
	  }
	});
}

 /*
 * TipTip
 * Copyright 2010 Drew Wilson
 * www.drewwilson.com
 * code.drewwilson.com/entry/tiptip-jquery-plugin
 *
 * Version 1.3   -   Updated: Mar. 23, 2010
 *
 * This Plug-In will create a custom tooltip to replace the default
 * browser tooltip. It is extremely lightweight and very smart in
 * that it detects the edges of the browser window and will make sure
 * the tooltip stays within the current window size. As a result the
 * tooltip will adjust itself to be displayed above, below, to the left 
 * or to the right depending on what is necessary to stay within the
 * browser window. It is completely customizable as well via CSS.
 *
 * This TipTip jQuery plug-in is dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 */
(function($){$.fn.tipTip=function(options){var defaults={activation:"hover",keepAlive:false,maxWidth:"200px",edgeOffset:3,defaultPosition:"bottom",delay:400,fadeIn:200,fadeOut:200,attribute:"title",content:false,enter:function(){},exit:function(){}};var opts=$.extend(defaults,options);if($("#tiptip_holder").length<=0){var tiptip_holder=$('<div id="tiptip_holder" style="max-width:'+opts.maxWidth+';"></div>');var tiptip_content=$('<div id="tiptip_content"></div>');var tiptip_arrow=$('<div id="tiptip_arrow"></div>');$("body").append(tiptip_holder.html(tiptip_content).prepend(tiptip_arrow.html('<div id="tiptip_arrow_inner"></div>')))}else{var tiptip_holder=$("#tiptip_holder");var tiptip_content=$("#tiptip_content");var tiptip_arrow=$("#tiptip_arrow")}return this.each(function(){var org_elem=$(this);if(opts.content){var org_title=opts.content}else{var org_title=org_elem.attr(opts.attribute)}if(org_title!=""){if(!opts.content){org_elem.removeAttr(opts.attribute)}var timeout=false;if(opts.activation=="hover"){org_elem.hover(function(){active_tiptip()},function(){if(!opts.keepAlive){deactive_tiptip()}});if(opts.keepAlive){tiptip_holder.hover(function(){},function(){deactive_tiptip()})}}else if(opts.activation=="focus"){org_elem.focus(function(){active_tiptip()}).blur(function(){deactive_tiptip()})}else if(opts.activation=="click"){org_elem.click(function(){active_tiptip();return false}).hover(function(){},function(){if(!opts.keepAlive){deactive_tiptip()}});if(opts.keepAlive){tiptip_holder.hover(function(){},function(){deactive_tiptip()})}}function active_tiptip(){opts.enter.call(this);tiptip_content.html(org_title);tiptip_holder.hide().removeAttr("class").css("margin","0");tiptip_arrow.removeAttr("style");var top=parseInt(org_elem.offset()['top']);var left=parseInt(org_elem.offset()['left']);var org_width=parseInt(org_elem.outerWidth());var org_height=parseInt(org_elem.outerHeight());var tip_w=tiptip_holder.outerWidth();var tip_h=tiptip_holder.outerHeight();var w_compare=Math.round((org_width-tip_w)/2);var h_compare=Math.round((org_height-tip_h)/2);var marg_left=Math.round(left+w_compare);var marg_top=Math.round(top+org_height+opts.edgeOffset);var t_class="";var arrow_top="";var arrow_left=Math.round(tip_w-12)/2;if(opts.defaultPosition=="bottom"){t_class="_bottom"}else if(opts.defaultPosition=="top"){t_class="_top"}else if(opts.defaultPosition=="left"){t_class="_left"}else if(opts.defaultPosition=="right"){t_class="_right"}var right_compare=(w_compare+left)<parseInt($(window).scrollLeft());var left_compare=(tip_w+left)>parseInt($(window).width());if((right_compare&&w_compare<0)||(t_class=="_right"&&!left_compare)||(t_class=="_left"&&left<(tip_w+opts.edgeOffset+5))){t_class="_right";arrow_top=Math.round(tip_h-13)/2;arrow_left=-12;marg_left=Math.round(left+org_width+opts.edgeOffset);marg_top=Math.round(top+h_compare)}else if((left_compare&&w_compare<0)||(t_class=="_left"&&!right_compare)){t_class="_left";arrow_top=Math.round(tip_h-13)/2;arrow_left=Math.round(tip_w);marg_left=Math.round(left-(tip_w+opts.edgeOffset+5));marg_top=Math.round(top+h_compare)}var top_compare=(top+org_height+opts.edgeOffset+tip_h+8)>parseInt($(window).height()+$(window).scrollTop());var bottom_compare=((top+org_height)-(opts.edgeOffset+tip_h+8))<0;if(top_compare||(t_class=="_bottom"&&top_compare)||(t_class=="_top"&&!bottom_compare)){if(t_class=="_top"||t_class=="_bottom"){t_class="_top"}else{t_class=t_class+"_top"}arrow_top=tip_h;marg_top=Math.round(top-(tip_h+5+opts.edgeOffset))}else if(bottom_compare|(t_class=="_top"&&bottom_compare)||(t_class=="_bottom"&&!top_compare)){if(t_class=="_top"||t_class=="_bottom"){t_class="_bottom"}else{t_class=t_class+"_bottom"}arrow_top=-12;marg_top=Math.round(top+org_height+opts.edgeOffset)}if(t_class=="_right_top"||t_class=="_left_top"){marg_top=marg_top+5}else if(t_class=="_right_bottom"||t_class=="_left_bottom"){marg_top=marg_top-5}if(t_class=="_left_top"||t_class=="_left_bottom"){marg_left=marg_left+5}tiptip_arrow.css({"margin-left":arrow_left+"px","margin-top":arrow_top+"px"});tiptip_holder.css({"margin-left":marg_left+"px","margin-top":marg_top+"px"}).attr("class","tip"+t_class);if(timeout){clearTimeout(timeout)}timeout=setTimeout(function(){tiptip_holder.stop(true,true).fadeIn(opts.fadeIn)},opts.delay)}function deactive_tiptip(){opts.exit.call(this);if(timeout){clearTimeout(timeout)}tiptip_holder.fadeOut(opts.fadeOut)}}})}})(jQuery);


/*! ResponsiveSlides.js v1.03. (c) 2011 Viljami Salminen. MIT License. http://responsive-slides.viljamis.com  */
(function(a){a.fn.responsiveSlides=function(e){var c={speed:4E3,fade:1E3,auto:!0,maxwidth:"none",namespace:"rs"};return this.each(function(){var b=a(this);e&&a.extend(c,e);var g=function(){var a=parseFloat(c.maxwidth);e.maxwidth&&"undefined"===typeof document.body.style.maxHeight&&b.each(function(){b.css("width","100%");b.width()>a?b.css("width",a):b.width()<a&&b.css("width","100%")})};(function(){var f=b.find("img"),d=c.namespace,j=d+"_here",h=d+"_on",i=d+"_s",e=d+"_tabs",d=a('<ul class="'+e+'" />'),
k=parseFloat(c.fade),l={position:"relative","float":"left"},g={position:"absolute","float":"none"};1>=b.find(f).length||(f.each(function(a){this.id=i+a}),f.css({top:0,left:0,width:"100%",height:"inherit",position:"absolute"}),b.css({"max-width":parseFloat(c.maxwidth),width:"100%",overflow:"hidden",position:"relative"}),b.find(":first-child").css(l),b.find(f+":gt(0)").hide(),!0===c.auto?setInterval(function(){b.find(":first-child").fadeOut(k,function(){a(this).css(g)}).next(f).fadeIn(k,function(){a(this).css(l)}).end().appendTo(b)},
parseFloat(c.speed)):(tabMarkup="",f.each(function(a){a+=1;tabMarkup+=["<li>",'<a href="#'+i+a+'"','class="'+i+a+'">'+a+"</a>","</li>"].join("")}),d.append(tabMarkup),b.after(d).find(":first-child").addClass(h),a("."+i+"1").parent().addClass(j),a("."+e+" a").each(function(b){var c=a(this);c.click(function(d){d.preventDefault();if(a("."+h+":animated").length)return!1;c.parent().hasClass(j)||(a("."+e+" li").removeClass(j),a("."+h).stop().fadeOut(k,function(){a(this).removeClass(h).css(g)}).end(),a("#"+
i+b).stop().fadeIn(k,function(){a(this).addClass(h).css(l)}).end(),c.parent().addClass(j))})})))})();g();a(window).resize(function(){g()})})}})(jQuery);

// Preload images plugin
// http://www.roslindesign.com/2010/05/11/jquery-image-preloader-with-callback/
(function(d){var h=[];d.loadImages=function(a,e){"string"==typeof a&&(a=[a]);for(var f=a.length,g=0,b=0;b<f;b++){var c=document.createElement("img");c.onload=function(){g++;g==f&&d.isFunction(e)&&e()};c.src=a[b];h.push(c)}}})(jQuery);
