//	======================================================================
//
//
//	quoteTxt.js
//
//
//	project:	commentquote
//
//	author:		Timothy Groves	desk [at] brandspankingnew.net
//	version:	1.0
//	
//	language:	javascript
//	requires:	nothing
//
//	tested on:	Safari 2.0 / FF 1.0.6 Mac & PC / Opera 8 Mac / IE6
//
//	history:	28.09.2005	-	created
//
//	======================================================================

var fadeInt;
var eleID, hexStart, hexEnd, steps, step, clipboard;
var scrSt, scrDist, scrDur, scrTime, scrInt;

function quote(author, id) {

	var newEle, ele, fld, i, tocopy;
	
	var c = $('ReplyBody');
	if(!c) return;
	var o 	= c.value;
	// get content of div
	ele = document.getElementById( id+"_txt3" );
	fld = document.getElementById( "text" );
	
	message = ele.innerHTML;
	
	
	message = message.replace(/^[\s\r\n]+/, '').replace(/[\s\r\n]+$/, '');
	c.value = '<blockquote><cite>' + author + ' said:</cite> ' + message + '</blockquote>\n\n' + o;
	var l	= c.value.length;
	new Effect.ScrollTo(c, { afterFinish: function() { 
		c.focus();
		c.setSelectionRange(l, l);
	}});
	
	//
	// eye candy
	//
	fadeBackground(id,'fef4e3','eeeeee',50);
}





function quoteTxt(id, author)
{
	var newEle, ele, fld, i, tocopy;

	if (!document.getElementById)
		return;
	
	// get content of div
	ele = document.getElementById( id+"_txt3" );
	fld = document.getElementById( "text" );
	
	
	tocopy = ele.innerHTML;
	
	//
	// clean whitespace from each line
	//
	
	// split into array using linebreaks
	tocopy = tocopy.split("\n");
	
	// clear whitespace
	for (i=0;i<tocopy.length;i++)
		tocopy[i] = trimWhitespace(tocopy[i]);
	
	// join array using linebreaks
	tocopy = tocopy.join("\n");
	
	// remove remaining whitespace
	tocopy = trimWhitespace(tocopy);
	tocopy = tocopy.replace(/^[\s\r\n]+/, '').replace(/[\s\r\n]+$/, '');
	
	// add quoted text to clipboard
	clipboard = tocopy;
	var bod = document.getElementById('zacomment');
	if(!bod) return;
	var bodz 	= bod.value;
	document.getElementById('zacomment').value = '<blockquote><cite>' + author + ' said:</cite> ' + tocopy + '</blockquote>\n' + bodz;
	
	
	//
	// eye candy
	//
	fadeBackground(id,'fef4e3','ffffff',50);
	
	
	
	//
	// scroll to textfield
	//
	scrollToElement('zacomment');
}


function trimWhitespace (str)
{
	if (typeof(str) != "string")
		return str;
	// clear leading whitespace
	while( str.substring(0,1)==" "||str.substring(0,1)=="\t"||str.substring(0,1)=="\n")
		str = str.substring(1);
	// clear trailing whitespace
	while( str.substring(-1)==" "||str.substring(-1)=="\t"||str.substring(-1)=="\n")
		str = str.substring(0,(str.length-1));

	return str;
}




/*
BACKGROUND FADER
*/

function fadeBackground(id, hStart, hEnd, st)
{
	if (!document.getElementById)
		return;
	
	// set previous fade to end colour
	//if (eleID)
		//document.getElementById( eleID ).style.backgroundColor = "#"+hexEnd;
	
	eleID = id;
	hexStart = hStart;
	hexEnd  = hEnd;
	steps = st;
	step = 0;
	
	clearInterval( fadeInt );
	fadeInt = setInterval( setBackground, 10 );
	
}


function setBackground()
{
	var ele = document.getElementById( eleID );
	var perc = Math.round( (step/steps) * 100 );
	ele.style.backgroundColor = getColor( hexStart, hexEnd, perc );
	step++;
	if (step == steps) {
		ele.style.backgroundColor = getColor( hexStart, hexEnd, 100 );
		clearInterval( fadeInt );
	}
}
	
	
/*
SCROLL FUNCTIONS
*/

function scrollToElement(id)
{
	var ele;
	
	if (!document.getElementById)
		return;
	
	ele = document.getElementById( id );
	if (!ele)	return;
	
	
	// set scroll target
	if (window.scrollY)
		scrSt = window.scrollY;
	else if (document.body.parentElement.scrollTop)
		scrSt = document.body.parentElement.scrollTop;
	else
		scrSt = document.body.scrollTop;
	scrDist = ele.offsetTop - scrSt;
	scrDur = 500;
	scrTime = 0;
	scrInt = 10;
	
	// set interval
	if (typeof(scrollInt) != "undefined") clearInterval(scrollInt);
	scrollInt = setInterval( scrollPage, scrInt );
}




function scrollPage()
{
	scrTime += scrInt;
	if (scrTime < scrDur) {
		window.scrollTo( 0, easeInOut(scrTime,scrSt,scrDist,scrDur) );
	}else{
		window.scrollTo( 0, scrSt+scrDist );
		clearInterval(scrollInt);
		document.getElementById('text').value += clipboard;
		fadeBackground('text','ccff33','ffffff',50);
	}
}




/*
EASING FUNCTIONS
*/

function easeInOut(t,b,c,d)
{
	return c/2 * (1 - Math.cos(Math.PI*t/d)) + b;
}




/*
GENERIC COLOUR FUNCTIONS
*/


function getColor(start, end, percent)
{
	var pc = percent/100;
	var r1 = hex2dec(start.slice(0,2)), g1=hex2dec(start.slice(2,4)), b1=hex2dec(start.slice(4,6));
	var r2 = hex2dec(end.slice(0,2)),   g2=hex2dec(end.slice(2,4)),   b2=hex2dec(end.slice(4,6));
	var r  = Math.floor(r1+(pc*(r2-r1)) + .5), g= Math.floor(g1+(pc*(g2-g1)) + .5), b= Math.floor(b1+(pc*(b2-b1)) + .5);
	return("#" + dec2hex(r) + dec2hex(g) + dec2hex(b));
}
function hex2dec(hex)
{
	return(parseInt(hex,16));
}
function dec2hex(dec)
{
	return (dec < 16 ? "0" : "") + dec.toString(16);
}

function insertAtCursor(myField, myValue) {
	if (document.selection) { // IE
		myField.focus();
		sel = document.selection.createRange();
		sel.text = myValue;
	} else if (myField.selectionStart || myField.selectionStart == 0) {//MOZILLA/NETSCAPE support
    var startPos = myField.selectionStart;
    var endPos = myField.selectionEnd;
    myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
	} else {
		myField.value += myValue;
	}
}

function editzer(x,z){
	Effect.toggle(x, 'blind', {duration: 0.3});
	Effect.toggle(z, 'blind', {duration: 0.3});
}