
//-----------------Start----------------//
//- Low Pro port to jQuery by Dan Webb -//
//--------------------------------------//
;(function($) {
  
  var addMethods = function(source) {
    var ancestor   = this.superclass && this.superclass.prototype;
    var properties = $.keys(source);

    if (!$.keys({ toString: true }).length) properties.push("toString", "valueOf");

    for (var i = 0, length = properties.length; i < length; i++) {
      var property = properties[i], value = source[property];
      if (ancestor && $.isFunction(value) && $.argumentNames(value)[0] == "$super") {
        
        var method = value, value = $.extend($.wrap((function(m) {
          return function() { return ancestor[m].apply(this, arguments) };
        })(property), method), {
          valueOf:  function() { return method },
          toString: function() { return method.toString() }
        });
      }
      this.prototype[property] = value;
    }

    return this;
  }
  
  $.extend({
    keys: function(obj) {
      var keys = [];
      for (var key in obj) keys.push(key);
      return keys;
    },

    argumentNames: function(func) {
      var names = func.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(/, ?/);
      return names.length == 1 && !names[0] ? [] : names;
    },

    bind: function(func, scope) {
      return function() {
        return func.apply(scope, $.makeArray(arguments));
      }
    },

    wrap: function(func, wrapper) {
      var __method = func;
      return function() {
        return wrapper.apply(this, [$.bind(__method, this)].concat($.makeArray(arguments)));
      }
    },
    
    klass: function() {
      var parent = null, properties = $.makeArray(arguments);
      if ($.isFunction(properties[0])) parent = properties.shift();

      var klass = function() { 
        this.initialize.apply(this, arguments);
      };

      klass.superclass = parent;
      klass.subclasses = [];
      klass.addMethods = addMethods;

      if (parent) {
        var subclass = function() { };
        subclass.prototype = parent.prototype;
        klass.prototype = new subclass;
        parent.subclasses.push(klass);
      }

      for (var i = 0; i < properties.length; i++)
        klass.addMethods(properties[i]);

      if (!klass.prototype.initialize)
        klass.prototype.initialize = function() {};

      klass.prototype.constructor = klass;

      return klass;
    },
    delegate: function(rules) {
      return function(e) {
        var target = $(e.target), parent = null;
        for (var selector in rules) {
          if (target.is(selector) || ((parent = target.parents(selector)) && parent.length > 0)) {
            return rules[selector].apply(this, [parent || target].concat($.makeArray(arguments)));
          }
          parent = null;
        }
      }
    }
  });
  
  var bindEvents = function(instance) {
    for (var member in instance) {
      if (member.match(/^on(.+)/) && typeof instance[member] == 'function') {
        instance.element.bind(RegExp.$1, $.bind(instance[member], instance));
      }
    }
  }
  
  var behaviorWrapper = function(behavior) {
    return $.klass(behavior, {
      initialize: function($super, element, args) {
        this.element = $(element);
        if ($super) $super.apply(this, args);
      }
    });
  }
  
  var attachBehavior = function(el, behavior, args) {
      var wrapper = behaviorWrapper(behavior);
      instance = new wrapper(el, args);

      bindEvents(instance);

      if (!behavior.instances) behavior.instances = [];

      behavior.instances.push(instance);
      
      return instance;
  };
  
  
  $.fn.extend({
    attach: function() {
      var args = $.makeArray(arguments), behavior = args.shift();
      
      if ($.livequery && this.selector) {
        return this.livequery(function() {
          attachBehavior(this, behavior, args);
        });
      } else {
        return this.each(function() {
          attachBehavior(this, behavior, args);
        });
      }
    },
    attachAndReturn: function() {
      var args = $.makeArray(arguments), behavior = args.shift();
      
      return $.map(this, function(el) {
        return attachBehavior(el, behavior, args);
      });
    },
    delegate: function(type, rules) {
      return this.bind(type, $.delegate(rules));
    },
    attached: function(behavior) {
      var instances = [];
      
      if (!behavior.instances) return instances;
      
      this.each(function(i, element) {
        $.each(behavior.instances, function(i, instance) {
          if (instance.element.get(0) == element) instances.push(instance);
        });
      });
      
      return instances;
    },
    firstAttached: function(behavior) {
      return this.attached(behavior)[0];
    }
  });
  
  Remote = $.klass({
    initialize: function(options) {
      if (this.element.attr('nodeName') == 'FORM') this.element.attach(Remote.Form, options);
      else this.element.attach(Remote.Link, options);
    }
  });
  
  Remote.Base = $.klass({
    initialize : function(options) {
      this.options = $.extend({
        
      }, options || {});
    },
    _makeRequest : function(options) {
      $.ajax(options);
      return false;
    }
  });
  
  Remote.Link = $.klass(Remote.Base, {
    onclick: function() {
      var options = $.extend({ url: this.element.attr('href'), type: 'GET' }, this.options);
      return this._makeRequest(options);
    }
  });
  
  Remote.Form = $.klass(Remote.Base, {
    onclick: function(e) {
      var target = e.target;
      
      if ($.inArray(target.nodeName.toLowerCase(), ['input', 'button']) >= 0 && target.type.match(/submit|image/))
        this._submitButton = target;
    },
    onsubmit: function() {
      var data = this.element.serializeArray();
      
      if (this._submitButton) data.push({ name: this._submitButton.name, value: this._submitButton.value });
      
      var options = $.extend({
        url : this.element.attr('action'),
        type : this.element.attr('method') || 'GET',
        data : data
      }, this.options);
      
      this._makeRequest(options);
      
      return false;
    }
  });
  
  $.ajaxSetup({ 
    beforeSend: function(xhr) {
      xhr.setRequestHeader("Accept", "text/javascript, text/html, application/xml, text/xml, */*");
    } 
  });
  
})(jQuery);
//------------------End-----------------//
//-Dan Webb's port of Low Pro to jQuery-//
//--------------------------------------//


//-----------------Start----------------//
//- InTradeSys dependencieModel:Basics -//
//--------------------------------------//

var formElement = $.klass
(
	{
		initialize: function (type, refobject, name)
		{
			this.setType(type ? type : 'formElement');
			this.setReferenceObject(refobject);
			this.setName(name);
		},
		
		setReferenceObject: function (refobject)
		{
			if (typeof refobject != 'undefined')
			{
				if (typeof refobject[0] != 'undefined')
				{
					this.setDomNode(refobject[0]);
				}
				else
				{
					this.setDomNode(refobject);
				}
			}
		},		
		
		setType: function (type)
		{
			this.type = type;
		},
		
		getType: function ()
		{
			return (this.type);
		},
		
		setName: function (name)
		{
			this.name = name;
		},
		
		getName: function ()
		{
			return (this.name);
		},

		display: function (configuration, sender)
		{
			sender = sender ? sender : null;
			useFading = configuration.useFading ? true : false;
			
			if (typeof configuration.visible != 'undefined')
			{
				configuration.visible ? this.show(useFading) : this.hide(useFading);
			}
		},
		
		show: function (useFading)
		{
			if (this.domNode && (!this.domNode.isVisible || typeof this.domNode.isVisible == 'undefined'))
			{
				this.domNode.isVisible = true;
	
				if (useFading)
				{
					this.getJObject().fadeIn("slow");
				}
				else
				{
					this.getJObject().show();
				}
			}
		},
		
		hide: function (useFading)
		{
			if (this.domNode.isVisible || typeof this.domNode.isVisible == 'undefined')
			{
				this.domNode.isVisible = false;
	
				if (useFading)
				{
					this.getJObject().fadeOut("slow");
				}
				else
				{
					this.getJObject().hide();
				}
			}
		},
		
		setDomNode: function (domNode)
		{
			this.domNode = domNode;
			
			domNode.owner = this;
		},
		
		getDomNode: function ()
		{
			return (this.domNode);
		},
		
		getJObject: function ()
		{
			return ($(this.domNode));
		},

		acceptWatcher: function (watcher, event, immediateFire)
		{
			var self = this;
			this.getJObject().bind
			(
				event,
				this,
				function(e)
				{
					watcher.handleWatchedEvent(watcher, self, event);
				}
			);
			
			if (immediateFire)
			{
				watcher.handleWatchedEvent(null, this, event);
			}
		},
		
		positionEditLayer: function (layerId, targetId, xOffset, yOffset)
		{
			var layerNode = $('#' + layerId);
			var withoutTarget = false;
			
			if (targetId)
			{		
				var targetNode = $('#' + targetId);
			}
			else
			{
				withoutTarget = true; 
			}
			
			if (!xOffset)
			{
				xOffset = 0;
			}
			
			if (!yOffset)
			{
				yOffset = 0;
			}
			
			if (!withoutTarget)
			{		
				var targetNodeOffsets = targetNode.offset();
				
				layerNode.css("left", targetNodeOffsets.left + xOffset);
				layerNode.css("top", targetNodeOffsets.top + yOffset);
			}
			else
			{
				layerNode.css("left", xOffset);
				layerNode.css("top", yOffset);
			}
		}
	}
);

var inputElement = $.klass
(
	formElement,
	{
		initialize: function ($super, type, domNode, name, preventObservingEnterKey)
		{
			$super(type, domNode, name);
			
			thisObj = this;
			
			if (!preventObservingEnterKey)
			{
				this.getJObject().bind
				(
					'keypress',
					function (e)
					{
						// check for enter key to prevent form submit
						if (thisObj.observeKey(e, 13))
						{
							var srcElement = e.target; 
							
							if (srcElement.blur)
							{
								srcElement.blur();
							}
							
							//Event.stop(e);
							e.stopPropagation();
						}
					}
				);
			}
		},
		
		display: function ($super, configuration, sender)
		{
			$super(configuration, sender);
			
			if (typeof configuration.visible != 'undefined')
			{
				this.setValue(configuration.value);
			}
			
			if (configuration.disabled)
			{
				this.domNode.disabled = true;
			}
		},

		setValue: function (value)
		{
			this.getDomNode().value = value ? value : '';
		},
		
		getValue: function ()
		{
			return (this.getDomNode().value);
		},
		
		observeKey: function (e, keyToObserve)
		{
			keyToObserve = keyToObserve ? keyToObserve : 13; // 13 == enter key
			
			if (window.event)
			{
				var key = window.event.keyCode;
			}
			else if (e)
			{
				var key = e.keyCode || e.which;
			}
		
			return (key == keyToObserve);
		}
	}
);
//------------------End-----------------//
//- InTradeSys dependencieModel Basics -//
//--------------------------------------//

//-----------------Start------------------//
//- InTradeSys dependencieModel:myHammer -//
//----------------------------------------//

var textCounter = $.klass
(
	formElement,
	{
		initialize: function ($super, domNode, counterDomNode, name, valueToHide)
		{
			$super('textcounter', domNode, name);
			
			this.counterDomNode = counterDomNode;
			this.valueToHide = valueToHide;
		},
		
		setValue: function (value)
		{
			this.counterDomNode.html(''+value);
			
			value == String(this.valueToHide) ? this.hide() : this.show();
			
			if (value <= 10)
			{
				this.getJObject().css('color','#ff0000');
			}
			else
			{
				this.getJObject().css('color','#000000');
			}
		},
		
		getValue: function ()
		{
			return (this.counterDomNode.firstChild.nodeValue);
		},
		
		handleWatchedEvent: function (e, watchedElement, event)
		{
			switch (event)
			{
				case 'keyup':
				case 'change':
					switch (watchedElement.getType())
					{
						case 'limitedTextArea':
						this.setValue(watchedElement.getJObject().attr('maxChars') - watchedElement.getJObject().val().length);
						break;
						
						case 'text':
						this.setValue(watchedElement.getJObject().attr('maxlength') - watchedElement.getJObject().val().length);
						break;
					}
				break;
			}
		}
	}
);

var textElement = $.klass
(
	inputElement,
	{
		initialize: function ($super, domNode, name)
		{
			$super('text', domNode, name);
		},
		
		handleWatchedEvent: function (e, watchedElement, event)
		{
			var watchedElementName = watchedElement.getName();

			switch (event)
			{
				case 'change':
				case 'custom:change':
				
					switch (watchedElementName)
					{
						case 'UsePhoneLocalNumber':
						case 'UsePhone2LocalNumber':
						
							if (watchedElement.domNode.checked)
							{
								this.domNode.disabled = false;
								this.domNode.focus();
							}
							else
							{
								this.domNode.disabled = true;
							}
						
							break;
					}
					
					break;
			}
		},
		
		setValue: function ($super, value, fireCustomChange)
		{
			$super(value);
			
			if (fireCustomChange)
			{
				this.domNode.trigger('custom:change');
			}
		}
	}
);

var tabElement = $.klass
(
	formElement,
	{
		initialize: function ($super, type, domNode, name)
		{
			$super(type, domNode, name);
			this.setType('tabElement');
		},
		
		handleWatchedEvent: function (e, watchedElement, event)
		{
			switch (event)
			{
				case 'click':
				
					this.selectTab(watchedElement);
					break;
			}
		},
		
		selectTab: function (activeTab)
		{
			$('#tabCompanyProfil')[0].className = 'navBarTabContainer';
			$('#tabFeedback')[0].className = 'navBarTabContainer';
			$('#tabOffers')[0].className = 'navBarTabContainer';
			$('#tabReferences')[0].className = 'navBarTabContainer';
			$('#tabApprenticeship')[0].className = 'navBarTabContainer';
			
			activeTab.domNode.className = 'navBarTabContainerActiv';

			if (bIsOwner)			
			{
				$('.editor').each
				(
					function()
					{
						if ($(this).css('display') != 'none')
						{
							$(this).fadeOut('slow');
						}
					}
				);
			}
		}
	}
);

var pictureElement = $.klass
(
	formElement,
	{
		initialize: function ($super, type, domNode, name)
		{
			$super(type, domNode, name);
			this.setType('pictureElement');
		},
		
		handleWatchedEvent: function (e, watchedElement, event)
		{
			switch (event)
			{
				case 'change':
				
					break;
			}
		}
	}
);


var googleMapElement = $.klass (
	formElement, {
		initialize: function ($super, type, domNode, name) {
			$super(type, domNode, name);

			if (GBrowserIsCompatible())  {
		        this.map = new GMap2(document.getElementById("GoogleMapBox"));
		        this.map.setCenter(new GLatLng(46.950262, 2.944336), 6);
				this.map.addControl(new GHierarchicalMapTypeControl());
				this.map.enableScrollWheelZoom();
				this.geocoder = new GClientGeocoder();
			}
		},
		
	    showAddress: function (address) {
		  if (this.geocoder) {
			  var map = this.map;
			  this.geocoder.getLatLng(
	          address,
	          function(point) {
	            if (!point) {

		            var host = parseUri(document.URL).host;
		            if (host == 'branchenbuch.my-hammer.de') {
			            map.setCenter(new GLatLng(51.3, 10.10), 4);
		            }
		            if (host == 'directory.myhammer.co.uk') {
		                map.setCenter(new GLatLng(53.60, -3.61), 4);
		            }
		            if (host == 'branchenbuch.my-hammer.at') {
			            map.setCenter(new GLatLng(47.596, 13.644), 5);
		            }
	            } else {
		           	map.setCenter(point, 13);
					map.addOverlay(new GMarker(point));
	            }
	          }
	        );
	      }
	    }
	}
);

function parseUri (str) {
	var	o   = parseUri.options,
		m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
		uri = {},
		i   = 14;

	while (i--) uri[o.key[i]] = m[i] || "";

	uri[o.q.name] = {};
	uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
		if ($1) uri[o.q.name][$1] = $2;
	});

	return uri;
};

parseUri.options = {
	strictMode: false,
	key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
	q:   {
		name:   "queryKey",
		parser: /(?:^|&)([^&=]*)=?([^&]*)/g
	},
	parser: {
		strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
		loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
	}
};


var textareaElement = $.klass
(
	inputElement,
	{
		initialize: function ($super, domNode, name)
		{
			$super('textarea', domNode, name, true);
		}
	}
);

var limitedTextareaElement = $.klass
(
	formElement,
	{
		initialize: function ($super, type, domNode, name)
		{
			$super(type, domNode, name);
			this.setType('limitedTextArea');
		},
		
		handleWatchedEvent: function (e, watchedElement, event)
		{
			switch (event)
			{
				case 'keyup':
					if(this.getJObject().val().length >= this.getJObject().attr('maxChars'))
					{
						this.getJObject().val(this.getJObject().val().substring(0,this.getJObject().attr('maxChars')));
					}
				break;
			}
		}
	}
);

//------------------End-------------------//
//- InTradeSys dependencieModel myHammer -//
//----------------------------------------//


/**
 * jQuery.ScrollTo
 * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 9/11/2008
 *
 * @projectDescription Easy element scrolling using jQuery.
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 * Tested with jQuery 1.2.6. On FF 2/3, IE 6/7, Opera 9.2/5 and Safari 3. on Windows.
 *
 * @author Ariel Flesler
 * @version 1.4
 *
 * @id jQuery.scrollTo
 * @id jQuery.fn.scrollTo
 * @param {String, Number, DOMElement, jQuery, Object} target Where to scroll the matched elements.
 *	  The different options for target are:
 *		- A number position (will be applied to all axes).
 *		- A string position ('44', '100px', '+=90', etc ) will be applied to all axes
 *		- A jQuery/DOM element ( logically, child of the element to scroll )
 *		- A string selector, that will be relative to the element to scroll ( 'li:eq(2)', etc )
 *		- A hash { top:x, left:y }, x and y can be any kind of number/string like above.
 * @param {Number} duration The OVERALL length of the animation, this argument can be the settings object instead.
 * @param {Object,Function} settings Optional set of settings or the onAfter callback.
 *	 @option {String} axis Which axis must be scrolled, use 'x', 'y', 'xy' or 'yx'.
 *	 @option {Number} duration The OVERALL length of the animation.
 *	 @option {String} easing The easing method for the animation.
 *	 @option {Boolean} margin If true, the margin of the target element will be deducted from the final position.
 *	 @option {Object, Number} offset Add/deduct from the end position. One number for both axes or { top:x, left:y }.
 *	 @option {Object, Number} over Add/deduct the height/width multiplied by 'over', can be { top:x, left:y } when using both axes.
 *	 @option {Boolean} queue If true, and both axis are given, the 2nd axis will only be animated after the first one ends.
 *	 @option {Function} onAfter Function to be called after the scrolling ends. 
 *	 @option {Function} onAfterFirst If queuing is activated, this function will be called after the first scrolling ends.
 * @return {jQuery} Returns the same jQuery object, for chaining.
 *
 * @desc Scroll to a fixed position
 * @example $('div').scrollTo( 340 );
 *
 * @desc Scroll relatively to the actual position
 * @example $('div').scrollTo( '+=340px', { axis:'y' } );
 *
 * @dec Scroll using a selector (relative to the scrolled element)
 * @example $('div').scrollTo( 'p.paragraph:eq(2)', 500, { easing:'swing', queue:true, axis:'xy' } );
 *
 * @ Scroll to a DOM element (same for jQuery object)
 * @example var second_child = document.getElementById('container').firstChild.nextSibling;
 *			$('#container').scrollTo( second_child, { duration:500, axis:'x', onAfter:function(){
 *				alert('scrolled!!');																   
 *			}});
 *
 * @desc Scroll on both axes, to different values
 * @example $('div').scrollTo( { top: 300, left:'+=200' }, { axis:'xy', offset:-20 } );
 */
;(function( $ ){
	
	var $scrollTo = $.scrollTo = function( target, duration, settings ){
		$(window).scrollTo( target, duration, settings );
	};

	$scrollTo.defaults = {
		axis:'y',
		duration:1
	};

	// Returns the element that needs to be animated to scroll the window.
	// Kept for backwards compatibility (specially for localScroll & serialScroll)
	$scrollTo.window = function( scope ){
		return $(window).scrollable();
	};

	// Hack, hack, hack... stay away!
	// Returns the real elements to scroll (supports window/iframes, documents and regular nodes)
	$.fn.scrollable = function(){
		return this.map(function(){
			// Just store it, we might need it
			var win = this.parentWindow || this.defaultView,
				// If it's a document, get its iframe or the window if it's THE document
				elem = this.nodeName == '#document' ? win.frameElement || win : this,
				// Get the corresponding document
				doc = elem.contentDocument || (elem.contentWindow || elem).document,
				isWin = elem.setInterval;

			return elem.nodeName == 'IFRAME' || isWin && $.browser.safari ? doc.body
				: isWin ? doc.documentElement
				: this;
		});
	};

	$.fn.scrollTo = function( target, duration, settings ){
		if( typeof duration == 'object' ){
			settings = duration;
			duration = 0;
		}
		if( typeof settings == 'function' )
			settings = { onAfter:settings };
			
		settings = $.extend( {}, $scrollTo.defaults, settings );
		// Speed is still recognized for backwards compatibility
		duration = duration || settings.speed || settings.duration;
		// Make sure the settings are given right
		settings.queue = settings.queue && settings.axis.length > 1;
		
		if( settings.queue )
			// Let's keep the overall duration
			duration /= 2;
		settings.offset = both( settings.offset );
		settings.over = both( settings.over );

		return this.scrollable().each(function(){
			var elem = this,
				$elem = $(elem),
				targ = target, toff, attr = {},
				win = $elem.is('html,body');

			switch( typeof targ ){
				// A number will pass the regex
				case 'number':
				case 'string':
					if( /^([+-]=)?\d+(px)?$/.test(targ) ){
						targ = both( targ );
						// We are done
						break;
					}
					// Relative selector, no break!
					targ = $(targ,this);
				case 'object':
					// DOMElement / jQuery
					if( targ.is || targ.style )
						// Get the real position of the target 
						toff = (targ = $(targ)).offset();
			}
			$.each( settings.axis.split(''), function( i, axis ){
				var Pos	= axis == 'x' ? 'Left' : 'Top',
					pos = Pos.toLowerCase(),
					key = 'scroll' + Pos,
					old = elem[key],
					Dim = axis == 'x' ? 'Width' : 'Height',
					dim = Dim.toLowerCase();

				if( toff ){// jQuery / DOMElement
					attr[key] = toff[pos] + ( win ? 0 : old - $elem.offset()[pos] );

					// If it's a dom element, reduce the margin
					if( settings.margin ){
						attr[key] -= parseInt(targ.css('margin'+Pos)) || 0;
						attr[key] -= parseInt(targ.css('border'+Pos+'Width')) || 0;
					}
					
					attr[key] += settings.offset[pos] || 0;
					
					if( settings.over[pos] )
						// Scroll to a fraction of its width/height
						attr[key] += targ[dim]() * settings.over[pos];
				}else
					attr[key] = targ[pos];

				// Number or 'number'
				if( /^\d+$/.test(attr[key]) )
					// Check the limits
					attr[key] = attr[key] <= 0 ? 0 : Math.min( attr[key], max(Dim) );

				// Queueing axes
				if( !i && settings.queue ){
					// Don't waste time animating, if there's no need.
					if( old != attr[key] )
						// Intermediate animation
						animate( settings.onAfterFirst );
					// Don't animate this axis again in the next iteration.
					delete attr[key];
				}
			});			
			animate( settings.onAfter );			

			function animate( callback ){
				$elem.animate( attr, duration, settings.easing, callback && function(){
					callback.call(this, target, settings);
				});
			};
			function max( Dim ){
				var attr ='scroll'+Dim,
					doc = elem.ownerDocument;
				
				return win
						? Math.max( doc.documentElement[attr], doc.body[attr]  )
						: elem[attr];
			};
		}).end();
	};

	function both( val ){
		return typeof val == 'object' ? val : { top:val, left:val };
	};

})( jQuery );

var redPages = $.klass
(
	formElement,
	{
		currentPage: 1,
		currentPerPage: 10,
		currentSort: 'review',
		search_loaction: '',
		search_cyrcle: '',

		initialize: function ($super)
		{
			$super('yellowPagesElement', $('#yellowPagesElement'), 'yellowPagesElement');
			
			this.resultsCargo = $('#results_cargo');
		},
		
		setQueryCompiled: function (queryCompiled)
		{
			this.queryCompiled = queryCompiled;
		},
		
		getQueryCompiled: function ()
		{
			return (this.queryCompiled);
		},
		
		setPerPage: function (perPage)
		{
			this.currentPerPage = perPage;
		},
		
		reFilter: function (search_loaction, search_cyrcle)
		{
				this.fetchSearchResults
				(
					1,
					null,
					search_loaction,
					search_cyrcle
				);
			
		},
		
		reSort: function (sort)
		{
			if (sort != this.currentSort)
			{
				this.fetchSearchResults(1, sort);
				
				if (sort == 'distance')
				{
					$('#result_filter_distance_upper').addClass('selected');
					$('#result_filter_distance_lower').addClass('selected');
					$('#result_filter_review_upper').removeClass('selected');
					$('#result_filter_review_lower').removeClass('selected');
				}
				else if (sort == 'review')
				{
					$('#result_filter_distance_upper').removeClass('selected');
					$('#result_filter_distance_lower').removeClass('selected');
					$('#result_filter_review_upper').addClass('selected');
					$('#result_filter_review_lower').addClass('selected');
				}
			}
		},
		
		fetchSearchResults: function (page, sort, search_loaction, search_cyrcle, perPage)
		{
			if (!page)
			{
				page = this.currentPage;
			}
			else
			{
				this.currentPage = page;
			}
			
			if (!sort)
			{
				sort = this.currentSort;
			}
			else
			{
				this.currentSort = sort;
			}			
			
			if (!search_loaction)
			{
				search_loaction = this.search_loaction;
			}
			else
			{
				this.search_loaction = search_loaction;
			}		
			
			if (!search_cyrcle)
			{
				search_cyrcle = this.search_cyrcle;
			}
			else
			{
				this.search_cyrcle = search_cyrcle;
			}				
					
					
					
			
			if (!perPage)
			{
				perPage = this.currentPerPage;
			}
			else
			{
				this.currentPerPage = perPage;
			}
			
			this.fetchData
			(
				page,
				perPage,
				sort,
				search_loaction,
				search_cyrcle
			); 
			
				


		},
		
		fetchData: function (page, perPage, sort, search_loaction, search_cyrcle, response)
		{
			var thisObj = this;

			if (!response)
			{
				var parameter = {};
				parameter.method = 'execute-search';
				parameter['query-compiled'] = this.getQueryCompiled();
				parameter.page = page;
				parameter.perpage = perPage;
				parameter.sort = sort;
				parameter.search_loaction = search_loaction;
				parameter.search_cyrcle = search_cyrcle;
			  
			
				$.get
				(
					"/v3/ajax/inline-search.php?",
					parameter, 
					function(response)
					{
						thisObj.fetchData(page, perPage, sort, search_loaction, search_cyrcle, response);
					}, 
					'json'
				);
			}
			else
			{
			
				if (response.errno != 0)
				{
					showErrorBubble(this.getDomNode(), response.error);
					hide_waitingscreen();
				}
				else
				{
					this.renderResult(response);
					this.renderPager(response);

					if
					(
						response['query-compiled']
							&& response['query-compiled'] != this.getQueryCompiled()
					)
					{
						this.setQueryCompiled(response['query-compiled']);
					}
					hide_waitingscreen();
					$.scrollTo('#yellowPagesElement', 800);
					
					$.nyroModalRemove();
					
				}
			}
		},
		
		renderResult: function (result)
		{
			var thisObj = this,
				myId,
				template,
				resultTemplate = $('#result_template'),
				classSuffix,
				userTranslations;
			
			this.resultsCargo.empty();
			this.resetMap();

            $(".search_result_city").empty().text(result['search_location_city']);
            $(".search_result_city_link").empty().text(result['search_location_city']).attr('href',function(){
                return $(this).attr('href').substr(0,$(this).attr('href').lastIndexOf("/")+1) + result['search_location_city'];
            });
        
     if (result.resultdata.length == 0){
     	$('#results_bottom').hide();
     	$('#results_bar_bottom').hide();
     
    }

			for (var i = 0, c = result.resultdata.length; i < c; i++)
			{
				var id = i;
				var data = result.resultdata[i];

				userTranslations = thisObj.buildUserTranslations(data['user']);

				template = resultTemplate.clone(true);
				template.removeAttr('id');
				template[0].myId = data.hit;

				switch (data.mode)
				{
					case '2': // business
         
						template.find('#company_title_std').remove();
						template.find('#markerBubble_company_std').remove();
						template.find('#result_logopro').remove();
						template.find('#markerBubble_logopro').remove();
						template.find('#result_itemgetcontact_box').remove();
						template.find('#markerBubble_directcontact_box').remove();

						if (!data['featured_review'])
						{
							template.find('#result_ratingteaser_box').remove();
						}

						classSuffix = 'business';

						break;

					case '1': // pro

						if (data.bought)
						{
							template.find('#company_title_std').remove();
							template.find('#markerBubble_company_std').remove();
							template.find('#result_itemgetcontact_box').remove();
							template.find('#markerBubble_directcontact_box').remove();
						}
						else
						{
							template.find('#result_user\\.company_title').remove();
							template.find('#result_contanctinfos_box').remove();
							template.find('#result_itemfixday_box').remove();
							template.find('#markerBubble_result_user\\.company_title').remove();
							template.find('#markerBubble_address_box').remove();
						}

						template.find('#result_logobusiness').remove();
						template.find('#markerBubble_logobusiness').remove();
						template.find('#result_company_description_box').remove();

						if (!data['featured_review'])
						{
							template.find('#result_ratingteaser_box').remove();
						}

						classSuffix = 'pro';

						break;

					case '0': // basis
					default:

						if (data.bought)
						{
							template.find('#company_title_std').remove();
							template.find('#markerBubble_company_std').remove();
							template.find('#result_itemgetcontact_box').remove();
							template.find('#markerBubble_directcontact_box').remove();
						}
						else
						{
							template.find('#result_user\\.company_title').remove();
							template.find('#result_contanctinfos_box').remove();
							template.find('#result_itemfixday_box').remove();
							template.find('#markerBubble_result_user\\.company_title').remove();
							template.find('#markerBubble_address_box').remove();
						}

						template.find('#result_logobusiness').remove();
						template.find('#result_logopro').remove();
						template.find('#result_company_description_box').remove();
						template.find('#result_ratingteaser_box').remove();

						template.find('#markerBubble_logopro').remove();
						template.find('#markerBubble_logobusiness').remove();

						classSuffix = 'basis';

						break;
				}

				// link to profile
				template.find('#result_user\\.username').attr('href', data['user']['userUrl']);
				template.find('#markerBubble_result_user\\.username').attr('href', data['user']['userUrl']);
				template.find('#result_user\\.company_title').attr('href', data['user']['userUrl']);

				// hit_pin_url
				template.find('#result_hit_pin').addClass('partnertype-' + classSuffix).children().attr('src', data['hit_pin_url']).attr('alt', id + 1);

				// logo_url
				if (data['logo_url'])
				{
					template.find('#result_logo').children().attr('src', data['logo_url']);
				}

				// logo_url
				if (data['featured_review']['detail_average'])
				{
					template.find('#result_detail_average').attr('src', starPicUrl(data['featured_review']['detail_average']));
				}

				// timestamp_written
				if (data['featured_review']['timestamp_written'])
				{
					var date = new Date(data['featured_review']['timestamp_written'] * 1000);
					template.find('#result_timestamp_written').html(date.getDate() + '.' + date.getMonth() + '.' + date.getFullYear());
				}

				// distance
				if (!data['distance'])
				{
					template.find('#markerBubble_distance_box').remove();
				}

				// review score and review percentage
				if (data['user']['review_score'] == 0)
				{
					template.find('#result_review_percentage_box').remove();
					template.find('#markerBubble_review_percentage_box').remove();
				}
				else
				{
					template.find('#markerBubble_result_noscore').remove();

					if (data['user']['review_percentage'] > 50)
					{
						template.find('#result_review_redhammer').remove();
						template.find('#markerBubble_review_redhammer').remove();
					}
					else
					{
						template.find('#result_review_greenhammer').remove();
						template.find('#markerBubble_review_greenhammer').remove();
					}
				}

				// categories
				if
				(
					data['categories']
						&& typeof(data['categories']) == 'object'
						&& data['categories'].length > 0
						&& (data['categories'].length != 1 || data['categories'][0] != '')
				)
				{
					var catNode,
						catTemplate = template.find('#result_category_template'),
						resultCategoriesNode = template.find('#result_categories');

					for (var catI = 0, catC = data['categories'].length; catI < catC; catI++)
					{
						var catId = catI;
						var category = data['categories'][catI];

						catNode = catTemplate[0].cloneNode(true);
						catNode.id = null;
						catNode.innerHTML = category;
						catNode.style.display = '';

						resultCategoriesNode[0].appendChild(catNode);

						if (catId < data['categories'].length - 1)
						{
							resultCategoriesNode.append(', ');
						}
					}
				}
				else
				{
					template.find('#result_categories').remove();
				}

				// tags
				if
				(
					data['tags']
						&& typeof(data['tags']) == 'object'
						&& data['tags'].length > 0
						&& (data['tags'].length != 1 || data['tags'][0] != '')
				)
				{
					var tagNode,
						tagTemplate = template.find('#result_tag_template'),
						resultTagsNode = template.find('#result_tags');

					for (var tagI = 0, tagC = data['tags'].length; tagI < tagC; tagI++)
					{
						var tagId = tagI;
						var tag = data['tags'][tagI];

						tagNode = tagTemplate[0].cloneNode(true);
						tagNode.id = null;
						tagNode.innerHTML = tag;
						tagNode.style.display = '';

						resultTagsNode[0].appendChild(tagNode);

						if (tagId < data['tags'].length - 1)
						{
							resultTagsNode.append(', ');
						}
					}
				}
				else
				{
					template.find('#result_tags').remove();
				}

				// distance
				if (!data['distance'])
				{
					template.find('#result_distance_box').remove();
				}

				template = thisObj.fillTemplate(template, data, data['geo_latitude'] && data['geo_longitude']);
				thisObj.resultsCargo[0].appendChild(template[0]);
				thisObj.attachEventHandler(template, data['user'], userTranslations);

				if (data['geo_latitude'] && data['geo_longitude'])
				{
					thisObj.attachToGMResultList
					(
						data,
						template,
						"resultsLayerElement.requestOffer(this, '" + data['user']['userID'] + "', '" + userTranslations['REQUEST_OFFER_INFO'] + "', '" + userTranslations['REQUEST_OFFER_INFO_NOTICE'] + "', '" + userTranslations['REQUEST_OFFER_NO_OFFER_INFO'] + "', '" + userTranslations['REQUEST_OFFER_NO_OFFER_INFO_NOTICE'] + "')",
						"resultsLayerElement.requestContactData(this, '" + data['user']['userID'] + "')"
					);
				}

				template.find('#markerBubble_template').remove();
			}

			this.initializeMap();

			if (result.resultdata.length == 0)
			{
				map.setCenter(new GLatLng(defaultMapCenter.lat, defaultMapCenter.lan), defaultMapCenter.zoom);
			}

			var centerWrapperObject = $('#center-wrapper'),
				gmScrollerHeight = $('#gmscroller').height();

			if (centerWrapperObject.height() < gmScrollerHeight)
			{
				centerWrapperObject.height(gmScrollerHeight + 'px');
			}
			else
			{
				centerWrapperObject.height('auto');
			}
		},

		buildUserTranslations: function (userData)
		{
			var userTranslations =
			{
				APPOINTMENT_HEADLINE: APPOINTMENT_HEADLINE_TPL.replace(/##CONTACTTITLE##/g, userData['username']),
				APPOINTMENT_INFO: APPOINTMENT_INFO_TPL.replace(/##CONTACTTITLE##/g, userData['username']),
				APPOINTMENT_DEFAULT_TEXT: APPOINTMENT_DEFAULT_TEXT_TPL.replace(/##CONTACTTITLE##/g, userData['username']),
				REQUEST_OFFER_INFO: REQUEST_OFFER_INFO_TPL.replace(/##CONTACTTITLE##/g, userData['username']),
				REQUEST_OFFER_INFO_NOTICE: REQUEST_OFFER_INFO_NOTICE_TPL.replace(/##CONTACTTITLE##/g, userData['username']),
				REQUEST_OFFER_NO_OFFER_INFO: REQUEST_OFFER_NO_OFFER_INFO_TPL.replace(/##CONTACTTITLE##/g, userData['username']),
				REQUEST_OFFER_NO_OFFER_INFO_NOTICE: REQUEST_OFFER_NO_OFFER_INFO_NOTICE_TPL.replace(/##CONTACTTITLE##/g, userData['username'])
			};

			return (userTranslations);
		},

		attachEventHandler: function (template, userData, userTranslations)
		{
			if (!bAnonymousVisitor)
			{
				template.find('#make_appointment_link').click
				(
					function ()
					{
						resultsLayerElement.makeAppointment
						(
							this,
							userData['userID'],
							userTranslations['APPOINTMENT_HEADLINE'],
							userTranslations['APPOINTMENT_INFO'],
							userTranslations['APPOINTMENT_DEFAULT_TEXT']
						);
					}
				);

				template.find('#request_offer_link1').click
				(
					function ()
					{
						resultsLayerElement.requestOffer
						(
							this,
							userData['userID'],
							userTranslations['REQUEST_OFFER_INFO'],
							userTranslations['REQUEST_OFFER_INFO_NOTICE'],
							userTranslations['REQUEST_OFFER_NO_OFFER_INFO'],
							userTranslations['REQUEST_OFFER_NO_OFFER_INFO_NOTICE']
						);
					}
				);

				template.find('#request_offer_link2').click
				(
					function ()
					{
						resultsLayerElement.requestOffer
						(
							this,
							userData['userID'],
							userTranslations['REQUEST_OFFER_INFO'],
							userTranslations['REQUEST_OFFER_INFO_NOTICE'],
							userTranslations['REQUEST_OFFER_NO_OFFER_INFO'],
							userTranslations['REQUEST_OFFER_NO_OFFER_INFO_NOTICE']
						);
					}
				);
			}

			template.find('#request_contact_data_link').click
			(
				function ()
				{
					resultsLayerElement.requestContactData
					(
						this,
						userData['userID']
					);
				}
			);

			template.mouseover
			(
				function ()
				{
					GMInfoWindow(this.myId);
				}
			);
		},

		resetMap: function ()
		{
			active_marker_idx = -1
			map.clearOverlays();
			GMResultList = {};
		},

		initializeMap: function ()
		{
			initializeMap();
		},

		attachToGMResultList: function (result, template, requestOfferOnclickJs, requestContactOnclickJs)
		{
			GMResultList[result.hit] =
			{
				longitude: result['geo_longitude'],
				latitude: result['geo_latitude'],
				markerimage: result['hit_pin_url'],
				html: template.find('#markerBubble_template')[0].cloneNode(true),
				requestOfferOnclick: requestOfferOnclickJs,
				requestContactOnclick: requestContactOnclickJs
			};
		},

		renderPager: function (result)
		{
			var jObj = this.getJObject(),
				pagerPages = jObj.find('#pager_pages'),
				pageTemplate = $('#pager_page_template'),
				resultPageCurrent = parseInt(result['page_current']),
				resultPagePerpage = parseInt(result['page_perpage']),
				resultTotalResults = parseInt(result['total_results']),
				startPage = resultPageCurrent >= 5 ? resultPageCurrent - 4 : 1,
				endPage = Math.ceil(resultTotalResults / resultPagePerpage) - resultPageCurrent >= 5 ? resultPageCurrent + 4 : Math.ceil(resultTotalResults / resultPagePerpage),
				firstShownResult = (resultPageCurrent - 1) * resultPagePerpage + 1,
				lastShownResult = (resultPageCurrent - 1) * resultPagePerpage + result['resultdata'].length;

			if (resultTotalResults == 0)
			{
				firstShownResult = 0;
				lastShownResult = 0;

			}

			jObj.find('#pager_first_result_upper').html(String(firstShownResult));
			jObj.find('#pager_last_result_upper').html(String(lastShownResult));
			jObj.find('#pager_total_results_upper').html(String(resultTotalResults));

			jObj.find('#pager_first_result_lower').html(String(firstShownResult));
			jObj.find('#pager_last_result_lower').html(String(lastShownResult));
			jObj.find('#pager_total_results_lower').html(String(resultTotalResults));

			pagerPages.empty();

			if (startPage > 1)
			{
				var page = pageTemplate.clone(true);
				page.removeAttr('id');
				page.addClass('results-page');
				page.html('<a href="javascript:redPages.fetchSearchResults(' + (startPage - 5 > 1 ? startPage - 5 : 1) + ');">&lt;&lt;</a> ');

				pagerPages.append(page);
			}

			for (var i = startPage; i <= endPage; i++)
			{
				var page = pageTemplate.clone(true);
				page.removeAttr('id');

				if (resultPageCurrent == i)
				{
					page.addClass('results-active-page');
					page.html(i + ' ');
				}
				else
				{
					page.addClass('results-page');
					page.html('<a href="javascript:redPages.fetchSearchResults(' + i + ');">' + i + '</a> ');
				}

				pagerPages.append(page);
			}

			if (endPage < Math.ceil(resultTotalResults / resultPagePerpage))
			{
				var page = pageTemplate.clone(true);
				page.removeAttr('id');
				page.addClass('results-page');
				page.html('<a href="javascript:redPages.fetchSearchResults(' + (endPage + 5 < Math.ceil(resultTotalResults / resultPagePerpage) ? endPage + 5 : Math.ceil(resultTotalResults / resultPagePerpage)) + ');">&gt;&gt;</a>');

				pagerPages.append(page);
			}
		},

		fillTemplate: function (template, data, hasLocation, prefix)
		{
			var thisObj = this;

			prefix = prefix ? prefix : '';

			jQuery.each
			(
				data,
				function (id, value)
				{
					if (value && typeof(value) == 'object')
					{
						template = thisObj.fillTemplate(template, value, hasLocation, prefix + id + '\\.');
					}
					else
					{
						if (jQuery.trim(String(value)).length > 0)
						{
							var resultNode = template.find('#result_' + prefix + id)[0];
							var resultNodeContainer = template.find('#result_' + prefix + id + '_container')[0];

							if (resultNode)
							{
								resultNode.innerHTML = value;
								resultNode.style.display = '';
							}

							if (resultNodeContainer)
							{
								resultNodeContainer.style.display = '';
							}

							//template.find('#result_' + prefix + id).show().html(value);
							//template.find('#result_' + prefix + id + '_container').show();

							if (hasLocation)
							{
								var markerBubbleNode = template.find('#markerBubble_result_' + prefix + id)[0];
								var markerBubbleNodeContainer = template.find('#markerBubble_result_' + prefix + id + '_container')[0];

								if (markerBubbleNode)
								{
									markerBubbleNode.innerHTML = value;
									markerBubbleNode.style.display = '';
								}

								if (markerBubbleNodeContainer)
								{
									markerBubbleNodeContainer.style.display = '';
								}

								//template.find('#markerBubble_result_' + prefix + id).show().html(value);
								//template.find('#markerBubble_result_' + prefix + id + '_container').show();
							}
						}
					}
				}
			);

			return (template);
		}
	}
);


var yellowPages = $.klass
(
	formElement,
	{
		currentPage: 1,
		currentPerPage: 10,
		currentSort: 'review',
		filter:
		{
			"filter-name": false,
			"filter-positive": false,
			"filter-subscription": false
		},

		initialize: function ($super)
		{
			$super('yellowPagesElement', $('#yellowPagesElement'), 'yellowPagesElement');

			this.resultsCargo = $('#results_cargo');
		},

		setQueryCompiled: function (queryCompiled)
		{
			this.queryCompiled = queryCompiled;
		},

		getQueryCompiled: function ()
		{
			return (this.queryCompiled);
		},

		setPerPage: function (perPage)
		{
			this.currentPerPage = perPage;
		},

		reFilter: function (filter, value)
		{
			if (!this.filter[filter] || this.filter[filter] != value)
			{
				dummyFilter = this.filter;
				dummyFilter[filter] = value ? value : false;

				this.fetchSearchResults
				(
					1,
					null,
					dummyFilter
				);
			}
		},

		reSort: function (sort)
		{
			
			if (sort != this.currentSort)
			{
				this.fetchSearchResults(1, sort);

				if (sort == 'distance')
				{
					$('#result_filter_distance_upper').addClass('selected');
					$('#result_filter_distance_lower').addClass('selected');
					$('#result_filter_review_upper').removeClass('selected');
					$('#result_filter_review_lower').removeClass('selected');
				}
				else if (sort == 'review')
				{
					$('#result_filter_distance_upper').removeClass('selected');
					$('#result_filter_distance_lower').removeClass('selected');
					$('#result_filter_review_upper').addClass('selected');
					$('#result_filter_review_lower').addClass('selected');
				}
			}
		},

		fetchSearchResults: function (page, sort, filter, perPage)
		{
			if (!page)
			{
				page = this.currentPage;
			}
			else
			{
				this.currentPage = page;
			}

			if (!sort)
			{
				sort = this.currentSort;
			}
			else
			{
				this.currentSort = sort;
			}

			if (!filter)
			{
				filter = this.filter;
			}
			else
			{
				this.filter = filter;
			}

			if (!perPage)
			{
				perPage = this.currentPerPage;
			}
			else
			{
				this.currentPerPage = perPage;
			}

			this.fetchData
			(
				page,
				perPage,
				sort,
				filter
			);


		},

		fetchData: function (page, perPage, sort, filter, response)
		{
			var thisObj = this;

			if (!response)
			{
				var parameter = {};
				parameter.method = 'execute-search';
				parameter['query-compiled'] = this.getQueryCompiled();
				parameter.page = page;
				parameter.perpage = perPage;
				parameter.sort = sort;

				jQuery.each
				(
					filter,
					function (name, value)
					{
						if (value)
						{
							if (name == 'filter-name')
							{
								var text = $('#filter_location_text').val();

								if (jQuery.trim(text))
								{
									parameter[name] = text;
								}
								else
								{
									parameter[name] = 0;
								}
							}
							else
							{
								parameter[name] = 1;
							}
						}
						else
						{
							parameter[name] = 0;
						}
					}
				);

				$.get
				(
					"/v3/ajax/inline-search.php?",
					parameter,
					function(response)
					{
						thisObj.fetchData(page, perPage, sort, filter, response);
						copyResultsBanner();
					},
					'json'
				);
			}
			else
			{
				if (response.errno != 0)
				{
					showErrorBubble(this.getDomNode(), response.error);
				}
				else
				{
					this.renderResult(response);
					this.renderPager(response);

					if
					(
						response['query-compiled']
							&& response['query-compiled'] != this.getQueryCompiled()
					)
					{
						this.setQueryCompiled(response['query-compiled']);
					}

					$.scrollTo('#yellowPagesElement', 800);
				}
			}
		},

		renderResult: function (result)
		{
			var thisObj = this,
				myId,
				template,
				resultTemplate = $('#result_template'),
				classSuffix,
				userTranslations;

			this.resultsCargo.empty();
			this.resetMap();

			for (var i = 0, c = result.resultdata.length; i < c; i++)
			{
				var id = i;
				var data = result.resultdata[i];
				
				userTranslations = thisObj.buildUserTranslations(data['user']);
				
				template = resultTemplate.clone(true);
				template.removeAttr('id');
				template[0].myId = data.hit;

				switch (data.mode)
				{
					case '2': // business

						template.find('#company_title_std').remove();
						template.find('#markerBubble_company_std').remove();
						template.find('#result_logopro').remove(); 
						template.find('#markerBubble_logopro').remove(); 
						template.find('#result_itemgetcontact_box').remove();
						template.find('#markerBubble_directcontact_box').remove();
						
						if (!data['featured_review'])
						{
							template.find('#result_ratingteaser_box').remove(); 
						}

						classSuffix = 'business';

						break;

					case '1': // pro
					
						if (data.bought)
						{
							template.find('#company_title_std').remove();
							template.find('#markerBubble_company_std').remove();
							template.find('#result_itemgetcontact_box').remove();
							template.find('#markerBubble_directcontact_box').remove();
						}
						else
						{
							template.find('#result_user\\.company_title').remove();
							template.find('#result_contanctinfos_box').remove();
							template.find('#result_itemfixday_box').remove();
							template.find('#markerBubble_result_user\\.company_title').remove();
							template.find('#markerBubble_address_box').remove();
						}
						
						template.find('#result_logobusiness').remove(); 
						template.find('#markerBubble_logobusiness').remove(); 
						template.find('#result_company_description_box').remove(); 
					
						if (!data['featured_review'])
						{
							template.find('#result_ratingteaser_box').remove(); 
						}

						classSuffix = 'pro';

						break;

					case '0': // basis
					default:

						if (data.bought)
						{
							template.find('#company_title_std').remove();
							template.find('#markerBubble_company_std').remove();
							template.find('#result_itemgetcontact_box').remove();
							template.find('#markerBubble_directcontact_box').remove();
						}
						else
						{
							template.find('#result_user\\.company_title').remove();
							template.find('#result_contanctinfos_box').remove();
							template.find('#result_itemfixday_box').remove();
							template.find('#markerBubble_result_user\\.company_title').remove();
							template.find('#markerBubble_address_box').remove();
						}

						template.find('#result_logobusiness').remove(); 
						template.find('#result_logopro').remove(); 
						template.find('#result_company_description_box').remove(); 
						template.find('#result_ratingteaser_box').remove(); 

						template.find('#markerBubble_logopro').remove(); 
						template.find('#markerBubble_logobusiness').remove(); 

						classSuffix = 'basis';

						break;
				}
				
				// link to profile
				template.find('#result_user\\.username').attr('href', data['user']['userUrl']);
				template.find('#markerBubble_result_user\\.username').attr('href', data['user']['userUrl']);
				
				// hit_pin_url
				template.find('#result_hit_pin').addClass('partnertype-' + classSuffix).children().attr('src', data['hit_pin_url']).attr('alt', id + 1);
				
				// logo_url
				if (data['logo_url'])
				{
					template.find('#result_logo').children().attr('src', data['logo_url']);
				}
				
				// logo_url
				if (data['featured_review']['detail_average'])
				{
					template.find('#result_detail_average').attr('src', starPicUrl(data['featured_review']['detail_average']));
				}

				// timestamp_written
				if (data['featured_review']['timestamp_written'])
				{
					var date = new Date(data['featured_review']['timestamp_written'] * 1000);
					template.find('#result_timestamp_written').html(date.getDate() + '.' + date.getMonth() + '.' + date.getFullYear());
				}
				
				// distance
				if (!data['distance'])
				{
					template.find('#markerBubble_distance_box').remove();
				}

				// review score and review percentage
				if (data['user']['review_score'] == 0)
				{
					template.find('#result_review_percentage_box').remove();
					template.find('#markerBubble_review_percentage_box').remove();
				}
				else
				{
					template.find('#markerBubble_result_noscore').remove();
				
					if (data['user']['review_percentage'] > 50)
					{
						template.find('#result_review_redhammer').remove();
						template.find('#markerBubble_review_redhammer').remove();
					}
					else
					{
						template.find('#result_review_greenhammer').remove();
						template.find('#markerBubble_review_greenhammer').remove();
					}
				}

				// categories
				if
				(
					data['categories']
						&& typeof(data['categories']) == 'object'
						&& data['categories'].length > 0
						&& (data['categories'].length != 1 || data['categories'][0] != '')
				)
				{
					var catNode,
						catTemplate = template.find('#result_category_template'),
						resultCategoriesNode = template.find('#result_categories');
					
					for (var catI = 0, catC = data['categories'].length; catI < catC; catI++)
					{
						var catId = catI;
						var category = data['categories'][catI];
						
						catNode = catTemplate[0].cloneNode(true);
						catNode.id = null;
						catNode.innerHTML = category;
						catNode.style.display = '';
						
						resultCategoriesNode[0].appendChild(catNode);
						
						if (catId < data['categories'].length - 1)
						{
							resultCategoriesNode.append(', ');
						}
					}
				}
				else
				{
					template.find('#result_categories').remove();						
				}

				// tags
				if
				(
					data['tags']
						&& typeof(data['tags']) == 'object'
						&& data['tags'].length > 0
						&& (data['tags'].length != 1 || data['tags'][0] != '')
				)
				{
					var tagNode,
						tagTemplate = template.find('#result_tag_template'),
						resultTagsNode = template.find('#result_tags');
					
					for (var tagI = 0, tagC = data['tags'].length; tagI < tagC; tagI++)
					{
						var tagId = tagI;
						var tag = data['tags'][tagI];
						
						tagNode = tagTemplate[0].cloneNode(true);
						tagNode.id = null;
						tagNode.innerHTML = tag;
						tagNode.style.display = '';
						
						resultTagsNode[0].appendChild(tagNode);
						
						if (tagId < data['tags'].length - 1)
						{
							resultTagsNode.append(', ');
						}
					}
				}
				else
				{
					template.find('#result_tags').remove();						
				}
				
				// distance
				if (!data['distance'])
				{
					template.find('#result_distance_box').remove();
				}

				template = thisObj.fillTemplate(template, data, data['geo_latitude'] && data['geo_longitude']);
				thisObj.resultsCargo[0].appendChild(template[0]);
				thisObj.attachEventHandler(template, data['user'], userTranslations);

				if (data['geo_latitude'] && data['geo_longitude'])
				{
					thisObj.attachToGMResultList
					(
						data,
						template,
						"resultsLayerElement.requestOffer(this, '" + data['user']['userID'] + "', '" + userTranslations['REQUEST_OFFER_INFO'] + "', '" + userTranslations['REQUEST_OFFER_INFO_NOTICE'] + "', '" + userTranslations['REQUEST_OFFER_NO_OFFER_INFO'] + "', '" + userTranslations['REQUEST_OFFER_NO_OFFER_INFO_NOTICE'] + "')",
						"resultsLayerElement.requestContactData(this, '" + data['user']['userID'] + "')"
					);
				}

				template.find('#markerBubble_template').remove();
			}
						
			this.initializeMap();
			
			if (result.resultdata.length == 0)
			{
				map.setCenter(new GLatLng(defaultMapCenter.lat, defaultMapCenter.lan), defaultMapCenter.zoom);
			}

			var centerWrapperObject = $('#center-wrapper'),
				gmScrollerHeight = $('#gmscroller').height();

			if (centerWrapperObject.height() < gmScrollerHeight)
			{
				centerWrapperObject.height(gmScrollerHeight + 'px');
			}
			else
			{
				centerWrapperObject.height('auto');
			}
		},
		
		buildUserTranslations: function (userData)
		{
			var userTranslations =
			{
				APPOINTMENT_HEADLINE: APPOINTMENT_HEADLINE_TPL.replace(/##CONTACTTITLE##/g, userData['username']),
                APPOINTMENT_INFO: APPOINTMENT_INFO_TPL.replace(/##CONTACTTITLE##/g, userData['username']),
                APPOINTMENT_DEFAULT_TEXT: APPOINTMENT_DEFAULT_TEXT_TPL.replace(/##CONTACTTITLE##/g, userData['username']),
                REQUEST_OFFER_INFO: REQUEST_OFFER_INFO_TPL.replace(/##CONTACTTITLE##/g, userData['username']),
                REQUEST_OFFER_INFO_NOTICE: REQUEST_OFFER_INFO_NOTICE_TPL.replace(/##CONTACTTITLE##/g, userData['username']),
                REQUEST_OFFER_NO_OFFER_INFO: REQUEST_OFFER_NO_OFFER_INFO_TPL.replace(/##CONTACTTITLE##/g, userData['username']),
                REQUEST_OFFER_NO_OFFER_INFO_NOTICE: REQUEST_OFFER_NO_OFFER_INFO_NOTICE_TPL.replace(/##CONTACTTITLE##/g, userData['username'])
			};
			
			return (userTranslations);			
		},
		
		attachEventHandler: function (template, userData, userTranslations)
		{
			if (!bAnonymousVisitor)
			{
				template.find('#make_appointment_link').click
				(
					function ()
					{
						resultsLayerElement.makeAppointment
						(
							this,
							userData['userID'],
							userTranslations['APPOINTMENT_HEADLINE'],
							userTranslations['APPOINTMENT_INFO'],
							userTranslations['APPOINTMENT_DEFAULT_TEXT']
						);
					}
				);

				template.find('#request_offer_link1').click
				(
					function ()
					{
						resultsLayerElement.requestOffer
						(
							this,
							userData['userID'],
							userTranslations['REQUEST_OFFER_INFO'],
							userTranslations['REQUEST_OFFER_INFO_NOTICE'],
							userTranslations['REQUEST_OFFER_NO_OFFER_INFO'],
							userTranslations['REQUEST_OFFER_NO_OFFER_INFO_NOTICE']
						);
					}
				);
	
				template.find('#request_offer_link2').click
				(
					function ()
					{
						resultsLayerElement.requestOffer
						(
							this,
							userData['userID'],
							userTranslations['REQUEST_OFFER_INFO'],
							userTranslations['REQUEST_OFFER_INFO_NOTICE'],
							userTranslations['REQUEST_OFFER_NO_OFFER_INFO'],
							userTranslations['REQUEST_OFFER_NO_OFFER_INFO_NOTICE']
						);
					}
				);
			}
			
			template.find('#request_contact_data_link').click
			(
				function ()
				{
					resultsLayerElement.requestContactData
					(
						this,
						userData['userID']
					);
				}
			);

			template.mouseover
			(
				function ()
				{
					GMInfoWindow(this.myId);
				}
			);
		},
		
		resetMap: function ()
		{
			active_marker_idx = -1
			map.clearOverlays();
			GMResultList = {};
		},
		
		initializeMap: function ()
		{
			initializeMap();
		},
		
		attachToGMResultList: function (result, template, requestOfferOnclickJs, requestContactOnclickJs)
		{
			GMResultList[result.hit] =
			{
				longitude: result['geo_longitude'],
				latitude: result['geo_latitude'],
				markerimage: result['hit_pin_url'],
				html: template.find('#markerBubble_template')[0].cloneNode(true),
				requestOfferOnclick: requestOfferOnclickJs,
				requestContactOnclick: requestContactOnclickJs
			};
		},
		
		renderPager: function (result)
		{
			var jObj = this.getJObject(),
				pagerPages = jObj.find('#pager_pages'),
				pageTemplate = $('#pager_page_template'),
				resultPageCurrent = parseInt(result['page_current']),
				resultPagePerpage = parseInt(result['page_perpage']),
				resultTotalResults = parseInt(result['total_results']),
				startPage = resultPageCurrent >= 5 ? resultPageCurrent - 4 : 1,
				endPage = Math.ceil(resultTotalResults / resultPagePerpage) - resultPageCurrent >= 5 ? resultPageCurrent + 4 : Math.ceil(resultTotalResults / resultPagePerpage),
				firstShownResult = (resultPageCurrent - 1) * resultPagePerpage + 1,
				lastShownResult = (resultPageCurrent - 1) * resultPagePerpage + result['resultdata'].length;
			
			if (resultTotalResults == 0)
			{
				firstShownResult = 0;
				lastShownResult = 0;
				
			}
			
			jObj.find('#pager_first_result_upper').html(String(firstShownResult));
			jObj.find('#pager_last_result_upper').html(String(lastShownResult));
			jObj.find('#pager_total_results_upper').html(String(resultTotalResults));

			jObj.find('#pager_first_result_lower').html(String(firstShownResult));
			jObj.find('#pager_last_result_lower').html(String(lastShownResult));
			jObj.find('#pager_total_results_lower').html(String(resultTotalResults));
			
			pagerPages.empty();
			
			if (startPage > 1)
			{
				var page = pageTemplate.clone(true);
				page.removeAttr('id');
				page.addClass('results-page');
				page.html('<a href="javascript:redPages.fetchSearchResults(' + (startPage - 5 > 1 ? startPage - 5 : 1) + ');">&lt;&lt;</a> ');

				pagerPages.append(page);
			}

			for (var i = startPage; i <= endPage; i++)
			{
				var page = pageTemplate.clone(true);
				page.removeAttr('id');
				
				if (resultPageCurrent == i)
				{
					page.addClass('results-active-page');
					page.html(i + ' ');
				}
				else
				{
					page.addClass('results-page');
					page.html('<a href="javascript:redPages.fetchSearchResults(' + i + ');">' + i + '</a> ');
				}
				
				pagerPages.append(page);
			}
			
			if (endPage < Math.ceil(resultTotalResults / resultPagePerpage))
			{
				var page = pageTemplate.clone(true);
				page.removeAttr('id');
				page.addClass('results-page');
				page.html('<a href="javascript:redPages.fetchSearchResults(' + (endPage + 5 < Math.ceil(resultTotalResults / resultPagePerpage) ? endPage + 5 : Math.ceil(resultTotalResults / resultPagePerpage)) + ');">&gt;&gt;</a>');

				pagerPages.append(page);
			}
		},
		
		fillTemplate: function (template, data, hasLocation, prefix)
		{
			var thisObj = this;
			
			prefix = prefix ? prefix : '';
			
			jQuery.each
			(
				data,
				function (id, value)
				{
					if (value && typeof(value) == 'object')
					{
						template = thisObj.fillTemplate(template, value, hasLocation, prefix + id + '\\.');
					}
					else
					{
						if (jQuery.trim(String(value)).length > 0)
						{
							var resultNode = template.find('#result_' + prefix + id)[0];
							var resultNodeContainer = template.find('#result_' + prefix + id + '_container')[0];
							
							if (resultNode)
							{
								resultNode.innerHTML = value;
								resultNode.style.display = '';
							}
							
							if (resultNodeContainer)
							{
								resultNodeContainer.style.display = '';
							}

							//template.find('#result_' + prefix + id).show().html(value);
							//template.find('#result_' + prefix + id + '_container').show();
						
							if (hasLocation)
							{		
								var markerBubbleNode = template.find('#markerBubble_result_' + prefix + id)[0];
								var markerBubbleNodeContainer = template.find('#markerBubble_result_' + prefix + id + '_container')[0];
								
								if (markerBubbleNode)
								{
									markerBubbleNode.innerHTML = value;
									markerBubbleNode.style.display = '';
								}	
									
								if (markerBubbleNodeContainer)
								{
									markerBubbleNodeContainer.style.display = '';
								}

								//template.find('#markerBubble_result_' + prefix + id).show().html(value);
								//template.find('#markerBubble_result_' + prefix + id + '_container').show();
							}
						}
					}
				}
			);
			
			return (template);
		}
	}
);


var resultsLayerElement = $.klass
(
	{
		initialize: function ()
		{
		},
		
		fetchData: function (type, userID, object, response)
		{
			var thisObj = this;

			if (!response)
			{
				var parameters = new Object();
				var feedName = 'inline-base';
				
				switch (type)
				{
					case 'makeAppointment':
					
						parameters.method = 'send-appointment';
						parameters.message = object.find('#makeAppointmentText').val();
						parameters.userID = userID;
						break;
						
					case 'requestOffer':

						parameters.method = 'send-offer';
						parameters.auctionID  = object.find('#requestOffer').val();
						parameters.message  = object.find('#requestOfferBody').val();
						parameters.userID = userID;
						parameters.omniturePageName = $('#omnPagename').html();
						break;
						
					case 'requestContactData':
					
						parameters.method = 'requestContactDetails';
						parameters.userID = userID;
						$('#contactDataRequestInfoLayer').css("top", ($(object).offset().top + 15) + "px");
						$('#contactDataRequestInfoLayer').css("left", ($(object).offset().left - 100) + "px");
						$('#contactDataRequestInfoLayer').appendTo(document.body);
						$('#contactDataRequestInfoLayer').show();
						break;
					
					default:
						break;
				}
				
				$.get
				(
					"/v3/profile-extended/ajax/" + feedName + ".php?", 
					parameters, 
					function(response)
					{
						thisObj.fetchData(type, userID, object, response);
					}, 
					'json'
				);
			}
			else
			{
				if (response.sendto)
				{
					window.location.href = response.sendto;
					return;
				}

				if (response.errno != 0)
				{
					if (response.error != '')
					{
						showErrorBubble(this.watchedElement.domNode, response.error);
					}
					else if (response.errorlist)
					{
						jQuery.each
						(
							response.errorlist,
							function(fieldName, error)
							{
								showErrorBubble($('#' + thisObj.getErrorTarget(fieldName))[0], error);
							} 
						);
					}
					return (false);
				}
				else
				{
					switch (type)
					{
						case 'makeAppointment':
						case 'requestOffer':
						
							this.closeLayer(object);
							break;
							
						case 'requestContactData':

							$(object).hide();
							$(object).prev('.requestContactDataDisabled').show();
							break;
							
						default:
							break;
					}
				}
			}
		},
		
		requestContactData: function (button, userID)
		{
			this.fetchData('requestContactData', userID, $(button));
		},
		
		requestOffer: function (button, userID, info, infoNotice, noInfo, noInfoNotice)
		{
			var templateNode;
			var thisObj = this;
			
			if (templateNode = $('#requestOfferLayer'))
			{
				var requestOfferObject = templateNode.clone(true);
				
				requestOfferObject.find('#requestOfferInfo').html(info);
				requestOfferObject.find('#requestOfferInfoNotice').html(infoNotice);
				requestOfferObject.find('#requestOfferNoInfo').html(noInfo);		
				requestOfferObject.find('#requestOfferNoInfoNotice').html(noInfoNotice);	
				requestOfferObject.find('#closeRequestOfferLayerButton').click
				(
					function ()
					{
						thisObj.closeLayer(requestOfferObject);
					}
				);
				requestOfferObject.find('#sendRequestOfferButton').click
				(
					function ()
					{
						thisObj.fetchData('requestOffer', userID, requestOfferObject);
					}
				);
				
				document.body.appendChild(requestOfferObject[0]);
				
				var buttonOffsets = $(button).offset();
				requestOfferObject.css("left", buttonOffsets.left);
				requestOfferObject.css("top", buttonOffsets.top);
				
				requestOfferObject.fadeIn('slow', function() {
					// Focus Dropdown if more than one option available
					if (requestOfferObject.find('#requestOffer option').size() > 2) {
						requestOfferObject.find('#requestOffer').focus();
					} else {
						requestOfferObject.find('#requestOfferBody').focus();
					}
				});
				
			}
		},
		
		makeAppointment: function (button, userID, headline, info, text)
		{
			var templateNode;
			var thisObj = this;
			
			if (templateNode = $('#makeAppointmentLayer'))
			{
				var appointmentObject = templateNode.clone(true);
				
				appointmentObject.find('#makeAppointmentHeadline').html(headline);
				appointmentObject.find('#makeAppointmentInfo').html(info);
				appointmentObject.find('#makeAppointmentText').html(text);		
				appointmentObject.find('#closeAppointmentLayerButton').click
				(
					function ()
					{
						thisObj.closeLayer(appointmentObject);
					}
				);
				appointmentObject.find('#appointmentSendButton').click
				(
					function ()
					{
						thisObj.fetchData('makeAppointment', userID, appointmentObject);
					}
				);
				
				document.body.appendChild(appointmentObject[0]);
				
				var buttonOffsets = $(button).offset();
				appointmentObject.css("left", buttonOffsets.left);
				appointmentObject.css("top", buttonOffsets.top);
				
				appointmentObject.fadeIn('slow');
			}
		},
		
		closeLayer: function (layer)
		{
			layer.fadeOut('slow');
			
			window.setTimeout
			(
				function ()
				{
					layer.remove();
				},
				1000
			);	
		}
	}
);

function showErrorBubble (element, content, isSuccessBubble)
{
	var templateNode,
		templateType;
	
	if (isSuccessBubble)
	{
		templateType = 'successBubble';
	}
	else
	{
		templateType = 'errorBubble';
	}
			
	if (templateNode = $('#' + templateType))
	{
		var errorBubbleDomNode = templateNode.clone(true);
		errorBubbleDomNode.removeAttr('id');
		
		if (content)
		{
			var bubbleContent = errorBubbleDomNode.find('#errorBubbleContent');
			bubbleContent.html(content);
		}

		$(document.body).append(errorBubbleDomNode);

		var elementOffsets = $(element).offset();
		var elementHeight = $(element).height();
		
		errorBubbleDomNode.css("left", (elementOffsets.left + 10));
		errorBubbleDomNode.css("top", (elementOffsets.top + (elementHeight / 2) - 27));
		
		errorBubbleDomNode.click
		(
			function ()
			{
				hideErrorBubble(errorBubbleDomNode);
			}
		);

		window.setTimeout
		(
			function ()
			{
				hideErrorBubble(errorBubbleDomNode)
			},
			5000
		);

	}
}

function hideErrorBubble (bubble)
{
	bubble.remove();
}

function starPicUrl(score)
{
	var starpics = new Array();
	starpics[0.0] = 'http://static.myhammer.com/v3/live/icons/00starYellowNew.gif';
    starpics[0.5] = 'http://static.myhammer.com/v3/live/icons/05starYellowNew.gif';
    starpics[1.0] = 'http://static.myhammer.com/v3/live/icons/10starYellowNew.gif';
    starpics[1.5] = 'http://static.myhammer.com/v3/live/icons/15starYellowNew.gif';
    starpics[2.0] = 'http://static.myhammer.com/v3/live/icons/20starYellowNew.gif';
    starpics[2.5] = 'http://static.myhammer.com/v3/live/icons/25starYellowNew.gif';
    starpics[3.0] = 'http://static.myhammer.com/v3/live/icons/30starYellowNew.gif';
    starpics[3.5] = 'http://static.myhammer.com/v3/live/icons/35starYellowNew.gif';
    starpics[4.0] = 'http://static.myhammer.com/v3/live/icons/40starYellowNew.gif';
    starpics[4.5] = 'http://static.myhammer.com/v3/live/icons/45starYellowNew.gif';
    starpics[5.0] = 'http://static.myhammer.com/v3/live/icons/50starYellowNew.gif';
    starpics[5.5] = 'http://static.myhammer.com/v3/live/icons/50starYellowNew.gif';
    starpics[6.0] = 'http://static.myhammer.com/v3/live/icons/60starYellowNew.gif';
    
    return starpics[score];
}

function formatDate(t)
{
	var date = new Date();
	
	if (t != 'now')
	{
		date.setTime((t < 9999999999) ? t * 1000 : t);
	}
	
	var d = date.getDate();
	var m = date.getMonth() + 1;
	var y = date.getFullYear();
	return (d < 10 ? '0' : '') + d + '.' + (m < 10 ? '0' : '') + m + '.' + y;
}

function getSMPScriptPrefix()
{
	return('/v3');
}

var adsenseCurrent = 0;
var adsenseContainer = new Array();
var adsenseTracking = new Array();
var adsenseLineSeperator = new Array();

function google_ad_request_done(google_ads)
{
	adsenseCurrent++;
	
	var tracking = "";
	if (typeof adsenseTracking[adsenseCurrent-1] != "undefined") {
		if (adsenseTracking[adsenseCurrent-1] != "") {
			var tracking = 'onclick="s_objectID=\'' + adsenseTracking[adsenseCurrent-1] + '\'" ';
		} 
	}
	
	if (google_ads.length == 0 || adsenseCurrent > adsenseContainer.length || adsenseCurrent > adsenseLineSeperator.length)
	{
		return;
	}

	var content = '';


	if (google_ads[0].type == "flash")
	{
		content = '<div class="goggleLink" style="width: ' + google_ads[0].image_width + 'px;">' +
		          ' <a href="' + google_info.feedback_url + '" target="_blank">Ads by Google</a>' +
		          '</div>' +
		          '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="' + google_ad.image_width + '" height="' + google_ad.image_height + '"' +
		          ' <param name="movie" value="' + google_ad.image_url + '">' +
		          ' <param name="quality" value="high">' +
				  ' <param name="wmode" value="transparent">' +
		          ' <param name="AllowScriptAccess" value="never">' +
		          ' <embed src="' + google_ad.image_url + '" width="' + google_ad.image_width + '" height="' + google_ad.image_height + '" type="application/x-shockwave-flash" AllowScriptAccess="never" wmode="transparent" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></embed>' +
		          '</object>';
	}
	else if (google_ads[0].type == "image")
	{
		content = '<div>' +
		          ' <div class="goggleLink" style="width: ' + google_ads[0].image_width + 'px;">' +
		          '  <a href="' + google_info.feedback_url + '" target="_blank">Ads by Google</a>' +
		          ' </div>' +
		          ' <a ' + tracking + ' href="' + google_ads[0].url + '" target="_blank" title="go to ' + google_ads[0].visible_url + '" onmouseout="window.status=\'\'" onmouseover="window.status=\'go to ' + google_ads[0].visible_url + '\';return true">' + 
		          '  <img border="0" src="' + google_ads[0].image_url + '" width="' + google_ads[0].image_width + '" height="' + google_ads[0].image_height + '" />' +
		          ' </a>' +
		          '</div><br />';
	}
	else if (google_ads[0].type == "html")
	{
		content = google_ads[0].snippet;
	}
	else
	{
		content = '<div class="adsense">' +
		          '<div class="goggleLink"><a href="' + google_info.feedback_url + '\" target="_blank">Ads by Google</a></div>' +
		          '<ul>';
	
		for (var i = 0; i < google_ads.length; i++)
		{
			content += '<li>' +
			           ' <a ' + tracking + ' href="' + google_ads[i].url + '" target="_blank" style="text-decoration: none" onmouseout="window.status=\'\'" onmouseover="window.status=\'go to ' + google_ads[i].visible_url + '\';return true">' +
			           '  <span style="text-decoration:underline"><b>' + google_ads[i].line1 + '</b></span>' +
			           ' </a><br />' +
			           ' <span style="color: #000">' +
			           '  ' + google_ads[i].line2 + adsenseLineSeperator[adsenseCurrent-1] +
			           '  ' + google_ads[i].line3 + '<br />' +
			           ' </span>' +
			           ' <a ' + tracking + ' href="' + google_ads[i].url + '" target="_blank" style="color: #008000; text-decoration: none" onmouseout="window.status=\'\'" onmouseover="window.status=\'go to ' + google_ads[i].visible_url + '\';return true">' +
			           '  ' + google_ads[i].visible_url +
			           ' </a>' +
			           '</li>';
		}
		
		content += '</ul>' +
		           '<div style="clear: both; height: 1px;"></div>' +
		           '</div>';
	}
	
	var obj = document.getElementById(adsenseContainer[adsenseCurrent-1]);
	if (obj) obj.innerHTML = content;
}

