var transparency_fix = (navigator.userAgent.match(/msie (5\.5|6)/i)&&navigator.platform=="Win32");
var adviser_info_id = 0;
var array_advisers = new Array;
var add_new_advisers_process = 0;
var images_rotation = new Array();
var last_rotated_image = 0;
var rotate_started = 0;
var array_new_advisers = new Array();

if (navigator.userAgent.match(/msie (5\.5|6|7)/i)&&navigator.platform=="Win32") var table_row_display = 'block';
else var table_row_display = 'table-row';

function openBrWindow(theURL,winName,ww,wh,feat) { //v2.0
  feat=feat==''?'':','+feat;
  h=screen.height; w=screen.width; l=(w-ww)/2; t=(h-wh)/2 - 50;
  features = 'width=' +ww+ ',height=' +wh+ ',left=' +l+ ',top=' +t+feat;
  q=window.open(theURL,winName,features); q.focus();
  return q;
}

function checkLength(obj,limit) {
	if (obj.value.length > limit) {
    obj.value = obj.value.substr(0,limit);
    if (document.getElementById('error_length')) document.getElementById('error_length').style.display='block';
	}
	else {
		if (document.getElementById('error_length')) document.getElementById('error_length').style.display='none';
	}
}

function advso () {
	this.list = new Array;
	this.map = new Array;
	this.changes = new Array;
	this.loaded = 0;
	this.add = function (v1,v2,v3,v4,v5,v6,v7,v8) {
		if (!this.map[v1] || !this.list[(this.map[v1]-1)]) {
			this.list[this.list.length] = new Array;
			this.list[(this.list.length-1)][0] = v1; // id
			this.list[(this.list.length-1)][1] = v2; // status
			this.list[(this.list.length-1)][2] = v3; // pseudonym
			this.list[(this.list.length-1)][3] = v4; // url
			this.list[(this.list.length-1)][4] = v5; // rate
			this.list[(this.list.length-1)][5] = v6; // image 1
			this.list[(this.list.length-1)][6] = v7; // image 2
			this.list[(this.list.length-1)][7] = v8; // teletext
			this.list[(this.list.length-1)][8] = 0; // published
			this.list[(this.list.length-1)][9] = 0; // changing
			this.map[v1] = this.list.length;
			MM_preloadImages(v6, v7);
		}
	}
	this.load = function () {
		if (this.loaded == 0) {
			var content = '';
			for (var i=0; this.list.length > i; i++) {
				var adviser = this.list[i];
				this.list[i][8] = 1;
				content += '<div class="adviser" id="adviser_'+adviser[0]+'" onmouseout="return hideAdviserInfo();"  onmouseover="return showAdviserInfo('+adviser[0]+')">';
				content += '<div class="ib"><img src="/img/frei.gif" alt="" width="6" height="42" id="adviser_status_'+adviser[0]+'" border="0"></div>';
				content += '<div class="ib" style="width: 32px;"><a href="/berater/profil/'+adviser[3]+'.html"><img src="'+adviser[5]+'" alt="" height="42" width="32" border="0"></a></div>';
				content += '<div class="ib" style="width: 106px; text-align: right;"><a href="/berater/profil/'+adviser[3]+'.html"><h4>'+adviser[2]+'</h4></a><a href="/berater/profil/'+adviser[3]+'.html">Profil ansehen</a></div>';
				content += '<div class="ib"><img src="/img/adviser_block_right.gif" width="6" height="42" alt="" border="0"></div>';
				content += '</div>';
			}
			if (content) document.getElementById('advisers_list').innerHTML = content;
			this.loaded = 1;
		}
		else {
			var published_count = 0;
			var limit = 4;
			if (m == 'home') limit = 8;
			for (var i=0; this.list.length > i; i++) {
				var adviser = this.list[i];
				if (this.changes[adviser[0]]) this.change(adviser[0]);
				if (adviser[8] == 1) published_count++;
			}
			if (published_count < limit) {
				for (var i=0; i < limit-published_count; i++) {
					this.show();
				}
			}
		}
		if (m == 'home') xajax_generate('xajax_bricks_8.xml');
		else xajax_generate('xajax_bricks_4.xml');
		setTimeout('asv.load();', 2000);
	}
	this.change = function (v1) {
		var v2 = this.changes[v1];
		if (this.map[v1] > 0 && this.list[(this.map[v1]-1)] && this.list[(this.map[v1]-1)][9] == 0 && this.list[(this.map[v1]-1)][8] == 1) {
			this.list[(this.map[v1]-1)][9] = 1;
			if (v2 == 'TALKING' || v2 == 'BUSY') document.getElementById('adviser_status_'+v1).src='/img/besetzt.gif';
			if (v2 == 'OFFLINE') document.getElementById('adviser_status_'+v1).src='/img/offline.gif';
			setTimeout("opacity('adviser_"+v1+"', 100, 0, 2000);", 2000);
			setTimeout("asv.remove('"+v1+"');", 4500);
		}
	}
	this.remove = function (v1) {
		this.list[(this.map[v1]-1)] = false;
		document.getElementById('adviser_'+v1).parentNode.removeChild(document.getElementById('adviser_'+v1));
		asv.show();
	}
	this.show = function () {

		var content = '';
		list = 0;

		for (var i=0; this.list.length > i; i++) if (this.list[i][8] == 1) list ++;
		if ((m == 'home' && list >= 8) || (m != 'home' && list >= 4)) return;
		var n = this.list.length;
		for (var i=0; n > i; i++) {
			var adviser = this.list[i];
			if (adviser[8] == 0) {
				this.list[i][8] = 1;
				var new_div = document.createElement('div');
				new_div.className='adviser';
				new_div.setAttribute('id','adviser_'+adviser[0]);
				new_div.onmouseout = 'hideAdviserInfo';
				eval('new_div.onmouseover = function () { showAdviserInfo('+adviser[0]+') };');
				content += '<div class="ib"><img src="/img/frei.gif" alt="" width="6" height="42" id="adviser_status_'+adviser[0]+'" border="0"></div>';
				content += '<div class="ib" style="width: 32px;"><a href="/berater/profil/'+adviser[3]+'.html"><img src="'+adviser[5]+'" alt="" height="42" width="32" border="0"></a></div>';
				content += '<div class="ib" style="width: 106px; text-align: right;"><a class="pl" href="/berater/profil/'+adviser[3]+'.html"><h4>'+adviser[2]+'</h4></a><a class="pl" href="/berater/profil/'+adviser[3]+'.html">Profil ansehen</a></div>';
				content += '<div class="ib"><img src="/img/adviser_block_right.gif" width="6" height="42" alt="" border="0"></div>';
				new_div.innerHTML = content;
				document.getElementById('advisers_list').appendChild(new_div);
				if (document.getElementById('ajax_loader')) document.getElementById('advisers_list').removeChild(document.getElementById('ajax_loader'));

				return;
			}
		}
	}
	this.get = function (v1) {
		return this.list[(this.map[v1]-1)];
	}
}
var asv = new advso;


function showAdviserInfo(id_adviser) {
	adv_array = asv.get(id_adviser);
	var advisers_list = document.getElementById('advisers_list').childNodes;
	if (tooltip_pos == 'bottom' || tooltip_pos == 'top') {
		if (tooltip_pos == 'bottom') var t = 'b';
		if (tooltip_pos == 'top') var t = 't';
	}
	else {
		for (var i=0, j = 0; i < advisers_list.length; i++, j++) {
			if (!advisers_list[i].id) {
				j--;
				continue;
			}
			if (advisers_list[i].id == 'adviser_'+id_adviser) {
				if ((j < 4 && m == 'home') || (j > 1 && m != 'home')) var t = 't';
				else var t = 'b';
				break;
			}
		}
	}
	var adviser_rate = adv_array[4]*price_rate;
	adviser_rate = Math.round(adviser_rate*100)/100;
	if (price_action > 0) adviser_rate = adviser_rate/100*(100-price_action);
	adviser_rate = Math.ceil(adviser_rate*100)/100;
	var rate = adviser_rate+price_incr;
	rate = Math.round(rate*100)/100;
	rate = rate.toString().replace('.',',');
	if (!rate.match(/,/g)) rate += ',00';
	if (rate.match(/,[0-9]$/g)) rate += '0';
	if (t == 't') {
		document.getElementById('adviser_info_bottom').style.display = 'none';
		document.getElementById('adviser_info_bottom_arrow').style.display = 'none';
		var obj1 = document.getElementById('adviser_info_top');
		var obj2 = document.getElementById('adviser_info_top_arrow');
		document.getElementById('adviser_pseudinym_top').innerHTML = adv_array[2];
		document.getElementById('adviser_text_top').innerHTML = adv_array[7];
		document.getElementById('adviser_link_top').href = '/berater/profil/'+adv_array[3]+'.html';
		document.getElementById('adviser_link_top_cn').href = '/berater/profil/'+adv_array[3]+'/jetzt-anrufen.html';
		document.getElementById('adviser_rate_top').innerHTML = rate;
		document.getElementById('adviser_image_top').src = adv_array[6];
		var px1 = -106;
		var py1 = -153;
		var px2 = 75;
		var py2 = -3;
	}
	else {
		document.getElementById('adviser_info_top').style.display = 'none';
		document.getElementById('adviser_info_top_arrow').style.display = 'none';
		var obj1 = document.getElementById('adviser_info_bottom');
		var obj2 = document.getElementById('adviser_info_bottom_arrow');
		document.getElementById('adviser_pseudinym_bottom').innerHTML = adv_array[2];
		document.getElementById('adviser_text_bottom').innerHTML = adv_array[7];
		document.getElementById('adviser_link_bottom').href = '/berater/profil/'+adv_array[3]+'.html';
		document.getElementById('adviser_link_bottom_cn').href = '/berater/profil/'+adv_array[3]+'/jetzt-anrufen.html';
		document.getElementById('adviser_rate_bottom').innerHTML = rate;
		document.getElementById('adviser_image_bottom').src = adv_array[6];
		var px1 = -100;
		var py1 = 49;
		var px2 = 35;
		var py2 = 25;
	}
	var pos = findPos(document.getElementById('adviser_'+id_adviser));
	adviser_info_id = id_adviser;
	obj1.style.left = pos[0]+px1+'px';
	obj1.style.top = pos[1]+py1+'px';
	obj1.style.display = 'block';
	obj2.style.left = pos[0]+px2+'px';
	obj2.style.top = pos[1]+py2+'px';
	obj2.style.display = 'block';
}

function hideAdviserInfo() {
	document.getElementById('adviser_info_top').style.display = 'none';
	document.getElementById('adviser_info_top_arrow').style.display = 'none';
	document.getElementById('adviser_info_bottom').style.display = 'none';
	document.getElementById('adviser_info_bottom_arrow').style.display = 'none';
}

function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec/100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    changeOpac(opacStart,id);
    if(opacStart > opacEnd) {
          setTimeout("opacity('" + id + "'," + (opacStart-1) + ", "+opacEnd+", "+millisec+")", (speed));
    } else if(opacStart < opacEnd) {
          setTimeout("opacity('" + id + "'," + (opacStart+1) + ", "+opacEnd+", "+millisec+")", (speed));
    }
}

function opacity_both(id1, id2, maxIndex, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 25);

    setTimeout("callOpac('"+id1+"', '"+id2+"', "+0+","+maxIndex+", "+speed+");",speed);
}


function callOpac(id1,id2,curIndex,maxIndex,speed) {
   changeOpac(curIndex,id1);
   changeOpac(maxIndex-curIndex,id2);
   if (maxIndex<=curIndex)
    return;
     else
      setTimeout("callOpac('"+id1+"','"+id2+"', "+(curIndex+4)+", "+maxIndex+", "+speed+");",speed);

}

function rotate_images () {
	var curent_image = images_rotation[last_rotated_image];
	if (!rotate_started) {
		setTimeout('preload_rotated_image();',curent_image['seconds']*1000);
		rotate_started = 1;
		if (images_rotation[(last_rotated_image+1)]) last_rotated_image++;
		else last_rotated_image = 0;
		return;
	}
	smooth_transition('/uploads/home_images_rotation/'+curent_image['image']);
	if (images_rotation[(last_rotated_image+1)]) last_rotated_image++;
	else last_rotated_image = 0;
	setTimeout('preload_rotated_image();',curent_image['seconds']*1000);
}

function check_rotated_image (obj_img) {
	if(obj_img.complete == true) rotate_images();
	else setTimeout(function(obj) {
		return function() {
			check_rotated_image (obj);
		}
	} (obj_img), 250);
}

function preload_rotated_image () {
	var img = new Image();
	img.src = '/uploads/home_images_rotation/'+images_rotation[last_rotated_image]['image'];
	check_rotated_image (img);
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    if (!document.getElementById(id)) return false;
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}
function smooth_transition (img_src) {
	if (img_displayed == 1) {
		changeOpac(0, 'middle_image_2');
		document.getElementById('middle_image_2').src=img_src;
		document.getElementById('middle_image_2').style.display='inline';
		//opacity('middle_image_2', 0, 100, 3000);
		opacity_both('middle_image_2', 'middle_image_1', 100, 3000);
		img_displayed = 2;
	}
	else {
		document.getElementById('middle_image_1').src=img_src;
		/*opacity('middle_image_1', 0, 100, 3000);
		opacity('middle_image_2', 100, 0, 3000);*/
		opacity_both('middle_image_1', 'middle_image_2', 100, 3000);
		img_displayed = 1;
	}
}
function setTransparentBg (objid,imgsrc) {
	if (transparency_fix) document.getElementById(objid).style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+imgsrc+"',sizingMethod='image')";
	else {
		document.getElementById(objid).style.backgroundImage = "url('"+imgsrc+"')";
		document.getElementById(objid).style.backgroundPosition = "top left";
		document.getElementById(objid).style.backgroundRepeat = "no-repeat";
	}
}
function findPos(obj) {
	var curleft = curtop = 0;
	if (!obj) {
		obj = new Object;
		obj.offsetParent = 0;
	}
	if (obj.offsetParent) {
		curleft = obj.offsetLeft
		curtop = obj.offsetTop
		while (obj = obj.offsetParent) {
			curleft += obj.offsetLeft
			curtop += obj.offsetTop
		}
	}
	return [curleft,curtop];
}
function initPreload() {
	MM_preloadImages('/img/besetzt.gif','/img/offline.gif','/img/frei.gif','/img/adviser_info_bottom.png','/img/adviser_info_bottom_arrow.png','/img/adviser_info_top.png','/img/adviser_info_top_arrow.png');
}
function showTooltip(id_tooltip) {
	var pos = findPos(document.getElementById('tooltip_img_'+id_tooltip));
	var div = document.getElementById('tooltip_div_'+id_tooltip);
	div.style.display = 'block';
	if (pos[0]-div.scrollWidth > 100) {
		div.style.left = pos[0]-div.scrollWidth+8+'px';
	}
	else div.style.left = pos[0]+8+'px';
	if (pos[1]+div.scrollHeight+100 < document.body.scrollHeight) {
		div.style.top = pos[1]+8+'px';
	}
	else div.style.top = pos[1]-div.scrollHeight+8+'px';
}
function hideTooltip(id_tooltip) {
	document.getElementById('tooltip_div_'+id_tooltip).style.display = 'none';
}

// -----------------------------------------------------------------------------

/**
 * Tooltip class
 */
var Tooltip = {
    /**
     * x-offset by mouse cursor
     */
    offsetByCursorX: 15,

    /**
     * y-offset by mouse cursor
     */
    offsetByCursorY: 15,

    /**
     * Browser is IE
     */
    isIE: document.all && !window.opera,

    /**
     * Browser is NS/Mozilla
     */
    isNS6: document.getElementById && !document.all,

    /**
     * Tooltip container Id
     */
    ttObjectId: 'ttContainer',

    /**
     * Temporary var: tooltip object
     */
    ttObject: null,

    /**
     * Temporary var: tooltip opacity
     */
    opacity: -0.1,

    /**
     * Tooltip template
     */
    template: '<table style="border:1px solid #99100E;" cellspacing="0"><tr style="background-color:#99100E;text-align:center;"><td><strong style="color:white;font-size:10px;">&title;</strong></td></tr><tr/><td>&text;</td></tr></table>',

    /**
     * Init and display a tooltip
     * @param object element
     * @param string title
     * @param string text
     * @return void
     */
    show: function(element, title, text) {
        message = this.template;
        message = message.replace('&title;', title);
        message = message.replace('&text;', text);
        this.ttObject = document.getElementById(this.ttObjectId);
        this.ttObject.innerHTML = message;
        this.opacity = -0.1;
        this.ttObject.style.opacity = this.opacity;
        element.onmousemove = positionTt;
        this.ttObject.style.visibility = 'visible';
        this.appear();
    },

    /**
     * Hide a tooltip
     * @param object element
     * @return void
     */
    hide: function(element) {
        this.ttObject.style.visibility = 'hidden';
        element.onmousemove = '';
        this.ttObject.style.left = '-10000px';
        this.ttObject.style.top = '-10000px';
    },

    /**
     * Return a IE`s document body
     * @return object
     */
    ieTrueBody: function() {
        return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
    },

    /**
     * Position a tooltip by mouse coords
     * @param object e
     * @return void
     */
    positionTt: function(e) {
        var curX = this.isNS6 ? e.pageX : event.clientX + this.ieTrueBody().scrollLeft;
        var curY = this.isNS6 ? e.pageY : event.clientY + this.ieTrueBody().scrollTop;
        var winwidth = this.isIE ? this.ieTrueBody().clientWidth : window.innerWidth - 20;
        var winheight = this.isIE ? this.ieTrueBody().clientHeight : window.innerHeight - 20;

        var rightedge = this.isIE ? winwidth - event.clientX - this.offsetByCursorX : winwidth - e.clientX - this.offsetByCursorX;
        var bottomedge = this.isIE ? winheight - event.clientY - this.offsetByCursorY : winheight - e.clientY - this.offsetByCursorY;

        if (rightedge < this.ttObject.offsetWidth) {
            this.ttObject.style.left = curX - this.ttObject.offsetWidth - this.offsetByCursorX + 'px';
        } else {
            this.ttObject.style.left = curX + this.offsetByCursorX + 'px';
        }

        if (bottomedge < this.ttObject.offsetHeight) {
            this.ttObject.style.top = curY - this.ttObject.offsetHeight - this.offsetByCursorY + 'px';
        } else {
            this.ttObject.style.top = curY + this.offsetByCursorY + 'px';
        }
    },

    /**
     * Change opacity of a tooltip object
     * @return void
     */
    appear: function() {
        if(this.opacity < 1) {
            this.opacity += 0.1;
            this.ttObject.style.opacity = this.opacity;
            this.ttObject.style.filter = 'alpha(opacity=' + this.opacity * 100 + ')';
            t = setTimeout('Tooltip.appear()', 30);
        }
    }
}

/**
 * Wrapper for a Tooltip.positionTt-method
 * @return void
 */
function positionTt(e) {
    Tooltip.positionTt(e);
}

// -----------------------------------------------------------------------------
