/**********************************************************************************
Dynamic Tooltips
*   Copyright (C) 2001 <a href="/dhtmlcentral/michael_van_ouwerkerk.asp">Michael van Ouwerkerk</a>
*   This script was released at DHTMLCentral.com
*   Visit for more great scripts!
*   This may be used and changed freely as long as this msg is intact!
*   We will also appreciate any links you could give us.
*********************************************************************************/
function lib_bwcheck(){ //Browsercheck (needed)
        this.ver=navigator.appVersion
        this.agent=navigator.userAgent
        this.dom=document.getElementById?1:0
        this.opera5=this.agent.indexOf("Opera 5")>-1
        this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0;
        this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
        this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
        this.ie=this.ie4||this.ie5||this.ie6
        this.mac=this.agent.indexOf("Mac")>-1
        this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0;
        this.ns4=(document.layers && !this.dom)?1:0;
        this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5)
        return this
}
var bw=new lib_bwcheck()

fromX= 0           // How much from the actual mouse X should the description box appear?
fromY= 23           // How much from the actual mouse Y should the description box appear?
ns4center= 1        // Centering the text in ns4 doesn't work with css, use this variable instead... the value is 1 or 0
useFading= 1        // 1 for a fading effect in windows explorer 5+ and all platforms ns6, 0 for no fading effect.
animation= 1        // 1 if you want animation, 0 for no animation.
detectiontype= 0    // 1 for 'smooth' window size detection, 0 for 'flip' window size detection.
delay=200          // The time before showing the popup, in milliseconds.


/*** There should be no need to change anything beyond this. ***/

// A unit of measure that will be added when setting the position of a layer.
var px = bw.ns4||window.opera?"":"px";

if(document.layers){ //NS4 resize fix.
    scrX= innerWidth; scrY= innerHeight;
    onresize= function(){if(scrX!= innerWidth || scrY!= innerHeight){history.go(0)} };
}

// object constructor...
function makeTooltip(obj){
           this.elm= document.getElementById? document.getElementById(obj):bw.ie4?document.all[obj]:bw.ns4?document.layers[obj]:0;
           this.css= bw.ns4?this.elm:this.elm.style;
           this.wref= bw.ns4?this.elm.document:this.elm;
        this.obj= obj+'makeTooltip'; eval(this.obj+'=this');
        this.w= bw.ns4? this.elm.clip.width: this.elm.offsetWidth;
        this.h= bw.ns4? this.elm.clip.height: this.elm.offsetHeight;
};
makeTooltip.prototype.measureIt= function(){
        this.w= bw.ns4? this.elm.clip.width: this.elm.offsetWidth;
        this.h= bw.ns4? this.elm.clip.height: this.elm.offsetHeight;
};
makeTooltip.prototype.writeIt= function(text){
        if (bw.ns4) {this.wref.write(text); this.wref.close()}
        else this.wref.innerHTML= text;
};

// Mousemove detection
var mouseX=0,mouseY=0,setX=0,setY=0;
function getMousemove(e){
        mouseX= (bw.ns4||bw.ns6)? e.pageX: bw.ie&&bw.win&&!bw.ie4? (event.clientX-2)+document.body.scrollLeft : event.clientX+document.body.scrollLeft;
        mouseY= (bw.ns4||bw.ns6)? e.pageY: bw.ie&&bw.win&&!bw.ie4? (event.clientY-2)+document.body.scrollTop : event.clientY+document.body.scrollTop;
        if (isLoaded && hovering && animation) placeIt();
};
function placeIt(){
        if (detectiontype==1) setX= mouseX+fromX+tooltip.w > screenWscrolled ? screenWscrolled-tooltip.w: mouseX+fromX;
        if (detectiontype==1) setY= mouseY+fromY+tooltip.h > screenHscrolled ? screenHscrolled-tooltip.h: mouseY+fromY;
        if (detectiontype==0) setX= mouseX+fromX+tooltip.w > screenWscrolled ? mouseX-fromX-tooltip.w: mouseX+fromX;
        if (detectiontype==0) setY= mouseY+fromY+tooltip.h > screenHscrolled ? mouseY-fromY-tooltip.h: mouseY+fromY;
        if (setX<0) setX= 0;
        if (setY<0) setY= 0;
        tooltip.css.left= setX+px;
        tooltip.css.top= setY+px;
};

// Main popUp function.
var hovering=false, screenWscrolled=0, screenHscrolled=0;
makeTooltip.prototype.showTimer= null;
function popUp(text){
        if(isLoaded){
                clearTimeout(tooltip.popTimer);
                dopopOut();
                if (bw.ns4){
                        var text= '<span class="netscape4Style">' + (ns4center?'<center>':"") + text + (ns4center?'</center>':"") + '</span>';
                        tooltip.writeIt(text);
                }
                if (!bw.ns4) tooltip.writeIt(text);
                screenWscrolled= screenW + (bw.ie?document.body.scrollLeft:pageXOffset);
                screenHscrolled= screenH + (bw.ie?document.body.scrollTop:pageYOffset);
                hovering= true;

                /* I'm using a timeout for ie4 here, because it doesn't store the measurements quickly enough. Does anybody know why this happens? */
                if (bw.ie4) setTimeout('tooltip.measureIt(); placeIt();', delay/2);
                else { tooltip.measureIt(); placeIt(); }
                if (useFading) tooltip.showTimer= setTimeout('tooltip.blendIn()', delay);
                if (!useFading) tooltip.showTimer= setTimeout('tooltip.css.visibility="visible"', delay);
    }
};

// Hiding routines
makeTooltip.prototype.popTimer= null;
function popOut(){
        if (isLoaded) tooltip.popTimer= setTimeout('dopopOut()', 30)
};
function dopopOut(){
        hovering= false;
        clearTimeout(tooltip.showTimer);
        tooltip.css.visibility= 'hidden';
        clearTimeout(tooltip.fadeTimer);
        tooltip.i= 0;
};

// Measure screensize.
var scrollbarWidth= bw.ns6&&bw.win?14:bw.ns6&&!bw.win?16:bw.ns4?16:0;
function measureScreen() {
        tooltip.css.top= 0+px;
        tooltip.css.left= 0+px;
        screenW= (bw.ie?document.body.clientWidth:innerWidth) - scrollbarWidth;
        screenH= (bw.ie?document.body.clientHeight:innerHeight);
};

// Opacity methods.
makeTooltip.prototype.blendIn= function(){
        if (bw.ie && bw.win && !bw.ie4) {
                this.css.filter= 'blendTrans(duration=0.5)';
                this.elm.filters.blendTrans.apply();
                this.css.visibility= 'visible';
                this.elm.filters.blendTrans.play();
        }
        else {
                this.css.visibility= 'visible';
                if (!bw.ns4) this.fadeIt();
        }
};
makeTooltip.prototype.step= 8;
makeTooltip.prototype.i= 0;
makeTooltip.prototype.fadeTimer= null;
makeTooltip.prototype.fadeIt= function(){
        this.i+= this.step;
        //this.css.filter= 'alpha(opacity='+this.i+')';
        this.css.MozOpacity= this.i/100;
        if (this.i<100) this.fadeTimer= setTimeout(this.obj+'.fadeIt()', 40);
        else this.i= 0;
};

// Init function...
var isLoaded= false;
function popupInit(){
        //Fixing the browsercheck for opera... this can be removed if the browsercheck has been updated!!
        bw.opera5 = (navigator.userAgent.indexOf("Opera")>-1 && document.getElementById)?true:false
        if (bw.opera5) bw.ns6 = 0

        //Extending the browsercheck to add windows platform detection.
        bw.win= (navigator.userAgent.indexOf('Windows')>-1)

        tooltip= new makeTooltip('divTips');
        tooltip.elm.onmouseover= function(){ clearTimeout(tooltip.popTimer); if(bw.ns4){setTimeout('clearTimeout(tooltip.popTimer)',20)}; };
        tooltip.elm.onmouseout= dopopOut;
        if (bw.ns4) document.captureEvents(Event.MOUSEMOVE);
        document.onmousemove= getMousemove;
        measureScreen();
        if (!bw.ns4) onresize= measureScreen;
        if (!bw.ns4) tooltip.elm.className= 'normalStyle';
        if (bw.ie && bw.win && !bw.ie4) tooltip.css.filter= 'alpha(opacity=100)'; //Preloads the windows filters.
        isLoaded= true;
};

// Initiates page on pageload if the browser is ok.
if(bw.bw && !isLoaded) onload= popupInit;
// Comment API
function Hide(where){
if(document.getElementById(where).style.display == 'inline'){
document.getElementById(where).style.display = 'none';
document.getElementById('hide_' + where).innerHTML = '+';
} else {
document.getElementById(where).style.display = 'inline';
document.getElementById('hide_' + where).innerHTML = '-';
}
}

// Comment API
function OpenComment(where){
if(document.getElementById(where).style.display == 'inline'){
document.getElementById(where).style.display = 'none';
} else {
document.getElementById(where).style.display = 'inline';
}
}
// Check Line
function Check(){
var form = document.formcom;
var error = '';
if(form.cname.value=='') {
alert(error_name);
form.cname.focus();
return false;
}
if(form.ctitle.value=='') {
alert(error_ñ_title);
form.ctitle.focus();
return false;
}
if(form.comment.value.length<=5) {
alert(error_e_text);
form.comment.focus();
return false;
}
if(form.comment.value.length > maxsize) {
alert(error_b_text);
form.comment.focus();
return false;
}
}


var agent = navigator.userAgent.toLowerCase();
this.Gecko = (agent.indexOf('gecko') != -1 && agent.indexOf('safari') == -1);
this.Mozilla = (this.isGecko && agent.indexOf('gecko/') + 14 == agent.length);

function Paste(code){
var form = document.formcom.comment;
if(this.Gecko || this.Mozilla){
var startform = form.selectionStart;
var scroll = form.scrollTop;
var endform = form.selectionEnd;
if(endform <= 2){ endform = form.textLength; }
var start  = (form.value).substring(0,startform);
var text = (form.value).substring(startform,endform);
var end = (form.value).substring(endform,form.textLength);
if(form.selectionEnd - form.selectionStart > 0){
 text = code;
} else { text = code; }
form.value = start + text + end;
var posit = startform + (text.length);
form.selectionStart = posit;
form.selectionEnd = posit;
form.scrollTop = scroll;
} else {
if(form.caretPos) form.caretPos.text = code;
else form.value += code;
}
form.focus();
}

function Smilie(code){
var sm = ' '+code+' ';
Paste(sm);
}

function Pos(text) {
if(text.createTextRange) text.caretPos = document.selection.createRange().duplicate();
}

function Url(type){
var error = '';
var sel = '';
var form = document.formcom.comment;
if(this.Gecko || this.Mozilla){
var startform = form.selectionStart;
var scroll = form.scrollTop;
var endform = form.selectionEnd;
if(endform <= 2){ endform = form.textLength; }
var start  = (form.value).substring(0,startform);
var text = (form.value).substring(startform,endform);
var end = (form.value).substring(endform,form.textLength);
if(form.selectionEnd - form.selectionStart > 0){
 sel = text;
} else { sel = ''; }
} else {
if(form.caretPos){ sel = document.selection.createRange().text; } else { sel = ''; }
}

if(type == "url") {
if(!sel){ sel ='www.danneo.com'; }
var url = prompt(input_url, "http://");
var name = prompt(input_url_www, sel);
var error = '';
if(!url){ error += " " + error_url;  }
if(!name){ error += " " + error_titles; }
if(error) {
alert(error);
return;
}
Paste("[URL=" + url + "]" + name + "[/URL]");
}

if(type == "mail") {
mails='your@mail.ru';
var mail = prompt(input_email,mails);
if(!mail){ error = error_email;  }
if(error){
alert(error);
return;
}
if(!sel){ sel = mail; }
Paste("[MAIL=" + mail + "]" + sel + "[/MAIL]");
}
}

function Insert(code){
var form = document.formcom.comment;
if(this.Gecko || this.Mozilla){
var startform = form.selectionStart;
var scroll = form.scrollTop;
var endform = form.selectionEnd;
if(endform <= 2){ endform = form.textLength; }
var start  = (form.value).substring(0,startform);
var text = (form.value).substring(startform,endform);
var end = (form.value).substring(endform,form.textLength);
if(form.selectionEnd - form.selectionStart > 0){
 text = "[" + code + "]" + text + "[/" + code + "]";
} else { text = "[" + code + "][/" + code + "]"; }
form.value = start + text + end;
var posit = startform + (text.length);
form.selectionStart = posit;
form.selectionEnd = posit;
form.scrollTop = scroll;
} else {
if(form.caretPos){ form.caretPos.text = "[" + code + "]" + form.caretPos.text + "[/" + code + "]"; } else {
form.value += "[" + code + "][/" + code + "]";  }
}
form.focus();
}

function ReTextarea(gui,id){
var retextarea = document.getElementById(id);
if(gui<0){ var rows = -5;  } else { var rows = +5; }
var rerows = retextarea.rows + rows;
if(rerows >= 10 && rerows < 30){
retextarea.rows = rerows;
}
return false;
}
