//	======================================================================
//
//
//	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 quoteTxt(id)
{
	var newEle, ele, fld, i, tocopy;

	if (!document.getElementById)
		return;
	
	// get content of div
	ele = document.getElementById( id+"_txt" );
	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);
	
	// add quoted text to clipboard
	clipboard = tocopy;
	
	
	//
	// eye candy
	//
	fadeBackground(id,'ccff33','eeeeee',50);
	
	
	
	//
	// scroll to textfield
	//
	scrollToElement('post_comment');
}


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 = 1000;
	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);
}