
var isIE = document.all?1:0;
var mouseX, mouseY;

function $() {
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) 
  {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1) 
      return element;

    elements.push(element);
  }

}

function getMousePos(e)
{
	if (!e)
		var e = window.event||window.Event;
	
	if(typeof e.pageX != 'undefined'){
		mouseX = e.pageX;
		mouseY = e.pageY;
	} else {
	    if (document.body)
	    {
		    mouseX = e.clientX + GetScrollLeft();
		    mouseY = e.clientY + GetScrollTop();
		}
	}
}

if (document.attachEvent)
{
    document.attachEvent("onmousemove", function() { getMousePos(event); } );
}
else
{
    window.addEventListener("mousemove", function(e) { getMousePos(e); }, false );
}

function GetScrollTop()
{
    var pos = 0;
    if (window.pageYOffset)
    {
	      pos = window.pageYOffset;
    }
    else if (document.documentElement && document.documentElement.scrollTop)
    {
	    pos = document.documentElement.scrollTop;
    }
    else if (document.body)
    {
	    pos = document.body.scrollTop;
    }
    return pos;
}

function GetScrollLeft()
{
    var pos = 0;
    if (window.pageXOffset)
    {
	      pos = window.pageXOffset;
    }
    else if (document.documentElement && document.documentElement.scrollLeft)
    {
	    pos = document.documentElement.scrollLeft;
    }
    else if (document.body)
    {
	    pos = document.body.scrollLeft;
    }
    return pos;
}

function ShowImageHover(evt, name)
{
    var layer = $(name);
    if (layer.style.display!="block")
        layer.style.display = "block";

    evt = (evt) ? evt : (window.event) ? window.event : ""; 
   
    var winW = (!isIE)? window.innerWidth-16 : document.body.offsetWidth-20
    var winH = (!isIE)? window.innerHeight-16 : document.body.offsetHeight-20;
    
    var layerW = layer.offsetWidth;
    var layerH = layer.offsetHeight;
    if (layerH==0)
    layerH = 300;
    if (layerW==0)
    layerW = 300;

    var leftSide = mouseX>=(winW/2.0);
    
    
    var img =  $(name);
    var left = mouseX+10;
    var top = mouseY+10;

    if (leftSide)
        left = (mouseX-(layerW+10));//
    else
        left = (mouseX+10);       
    
    var right = (mouseX)+layerW;
    if(right>=winW)
       left = (mouseX-layerW);


    

    var bottom = (mouseY+10)+layerH;
   // status = 'no flip';

    if(bottom>=winH-GetScrollTop())
    {
        // status = 'flipped, layerH:'+layerH;
        if (isIE)
            top = mouseY-(layerH+10);
        else
            top = mouseY-(layerH+10);
        //status = 'bottom: '+bottom+', winH: '+winH+', GetScrollTop(): '+GetScrollTop();
    }
    layer.style.left = left+"px";
    layer.style.top = top+"px";
    
    

}


var DJ_XMLHTTP_PROGIDS = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];
if(!window.XMLHttpRequest)
{
    window.XMLHttpRequest = function(){
        var http = null;
	    var last_e = null;
	    try{ http = new XMLHttpRequest(); }catch(e){}
        if(!http){
		    for(var i=0; i<3; ++i){
			    var progid = DJ_XMLHTTP_PROGIDS[i];
			    try{
				    http = new ActiveXObject(progid);
			    }catch(e){
				    last_e = e;
			    }

			    if(http){
				    DJ_XMLHTTP_PROGIDS = [progid];  // so faster next time
				    break;
			    }
		    }
	    }

	    if(!http){
		    throw "XMLHTTP not available";
	    }

	    return http;
    }
}
function FetchAsync(url, data, doFunc)
{
	try
	{
		var xml = new XMLHttpRequest();
		xml.open("POST", url, true);
		xml.onreadystatechange= function() { 
			if (xml.readyState==4)
			{
				if (xml.status==200)
				{
					var txt = xml.responseText;
					var obj = eval(txt);
					doFunc(obj);
				}
			}
		}
		xml.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xml.setRequestHeader("Content-length", data.length);
		if(isIE)
			xml.setRequestHeader("Accept-Encoding", "gzip, deflate");
		else
			xml.setRequestHeader("Connection", "close");		// Mozilla Bug #246651
		xml.send(data);	
		
	}
	catch (e)
	{
			alert('This website requires XMLHTTP to be enabled in your web browser. Please enable it. '+e);
	}
}

function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
	{
		curleft += obj.x;
    }
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
	{
		curtop += obj.y;
    }
	return curtop;
}


function SubmitRating(UserID, ContentID, Value)
{
    FetchAsync('/_SRInvoke', 'Method=SubmitRating&UserID='+UserID+'&ContentID='+ContentID+'&RatingOutOfFive='+Value, OnSubmitRating);
}
function OnSubmitRating()
{
    isMouseOverRating = false;
    DestroyRatingDialog();
    alert('Your rating has been recorded - thanks!');
}
var isMouseOverRating;
var ratingTimeout;
function ForumOpenRatingDialog(sender, ContentID, UserID, IconsPath)
{
    if (ratingTimeout)
        clearTimeout(ratingTimeout);

    if (isMouseOverRating)
        return;

    isMouseOverRating = true;
    var div = document.getElementById('RateThread');
    var s = '<table cellpadding="0" cellspacing="0" border="0">';

    for(var x=5;x>0;x--)
    {
        s += '<tr><td nowrap><a href="javascript:SubmitRating('+UserID+', '+ContentID+', '+x+');" title="'+x+'/5">';
        for(var i=0;i<5;i++)
        {
            s += '<img src="'+IconsPath+'/forum_star_'+(i<x?'full':'none')+'.gif" onmouseover="ForumOpenRatingDialog(null, '+ContentID+', '+UserID+', \''+IconsPath+'\')" border="0"/>';
        }
        s += '</a></td></tr>';
    }
    s += '</table>';
    div.innerHTML = s;
    div.style.display = 'block';
    if (sender)
    {
        div.style.top = (findPosY(sender)+sender.offsetHeight)+'px';
        div.style.left = findPosX(sender)+'px';
    }
}
function ForumCloseRatingDialog()
{
    isMouseOverRating = false;
    ratingTimeout = setTimeout("DestroyRatingDialog()", 1000);
}
function DestroyRatingDialog()
{
    if (isMouseOverRating)
        return;
    var div = document.getElementById('RateThread');
    div.style.display = 'none';
}
function InsertText(input, insTexte, startTag, endTag)
{

     if (isIE)
     {
         if (input.createTextRange)
         {
              input.focus(input.caretPos);
              input.caretPos = document.selection.createRange().duplicate();
              if(input.caretPos.text.length>0)
              {
               input.caretPos.text = startTag + input.caretPos.text + endTag;
              }
              else
              {
                input.caretPos.text = startTag + " " + insTexte + " " + endTag;
              }
        }
        else 
        {   
            input.value += startTag + insTexte + endTag;
        }
    }
    else
    {
        input.focus();
        var start = input.selectionStart;
        var end = input.selectionEnd;
        if (!insTexte)
            insTexte = input.value.substring(start, end);
        newVal = input.value.substring(0, start) + startTag + insTexte + endTag +input.value.substring(end);
        start = (input.value.substring(0, start) + startTag + insTexte + endTag).length;
        input.value = newVal;
        input.selectionEnd = 0;
        input.selectionStart = start;
        
    }
}

function FStyle(tag)
{
    var input = document.getElementById('forumComposerBody');
    if (!input)
        return;
    InsertText(input, '', '['+tag+']', '[/'+tag+']');
}
function FUrl()
{
     var input = document.getElementById('forumComposerBody');
    if (!input)
        return;
    var link=prompt('Enter url:', '');
    if (link)
    InsertText(input, '', '[url='+link+']', '[/url]');
}
