	/* 
	 Application: TWITTER EDITOR
         Script: tweeteditor.js
        Version: May/2009 v1.0
         Author: David Jourard
                 Bytes Interactive
                 http://www.bytesinteractive.com
                 cgi@bytesinteractive.com
                 
	 TWEET EDITOR
	 COPYRIGHT NOTICE
	 Copyright 2009 David Jourard  All Rights Reserved.                 
                 
               
   */


	/* Messages - Use any language you want */
	var validatemessage1 = 'Enter a value for Days';
	var validatemessage2 = 'Enter a value for Tweet Name';
	var validatemessage3 = 'No text has been entered for your tweet';	
	var deleteText = 'Delete';
	var message1 = "Your Tweet has been saved";
	
	var a_tweet = new Array();
	var a_tweetsubject = new Array();
	var cookies = new Object();
	
	var maxcntrlngth = 140;
	var totaltweets = 0;
	var dynTable;
	
	


	function countchr(tweet, cnt, lmt) {
		if (tweet.value.length > lmt) {
			cnt.value = -(tweet.value.length - lmt);
		}
		else {
			cnt.value = lmt - tweet.value.length;
		}
	}

	
	function DisplayTweet(no) {
		var counterlen = 0;
		var index = 0;
		
		var x=document.getElementById("twittereditor");
		for (var i=0;i<x.length;i++) {
			if (x.elements[i].name == 'tweetsubject') {
				 x.elements[i].value = a_tweetsubject[no];
    		}
			else if (x.elements[i].name == 'editmytwittertweet') {
				x.elements[i].value = a_tweet[no];
				counterlen = maxcntrlngth - a_tweet[no].length;
    		}
    		else if (x.elements[i].name == 'counter') {
				index = i;
    		}
		}
		x.elements[index].value = counterlen;
		
	}
	

	function createCookie() {
		
		var x=document.getElementById("twittereditor");
		
		var days = 0;
		var cookiename = '';
		var cookievalue = '';
		var twsubject = '';
		
		for (var i=0;i<x.length;i++) {
			if (x.elements[i].name == 'days') {
				if (x.elements[i].value == "") {
					alert(validatemessage1);
					x.elements[i].focus();
		    		return false;
	    		}
	    		else {
		    		days = x.elements[i].value;
	    		}
    		}
			if (x.elements[i].name == 'tweetsubject') {
				if (x.elements[i].value =="") {
					alert(validatemessage2);
					x.elements[i].focus();
		    		return false;
	    		}
	    		else {
	    			//-tweetsubject = x.elements[i].value;
		    		cookiename = 'te_'+x.elements[i].value;
	    		}
    		}
			if (x.elements[i].name == 'editmytwittertweet') {
				if (x.elements[i].value == '') {
					alert(validatemessage3);
					x.elements[i].focus();
		    		return false;
	    		}
	    		else {
		    		cookievalue = x.elements[i].value;
	    		}
    		}
		}
		
		var expires = "";
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		document.cookie=cookiename+"="+cookievalue+expires+"; path=/";
		
		alert(message1);
		
		cookies[cookiename] = cookievalue;
		
		a_tweetsubject[totaltweets] = cookiename.substring(3, cookiename.length);
		a_tweet[totaltweets] = cookievalue;
		
		totaltweets++;
		
		if (totaltweets > 1) {
			// after 2 tweets there is one table row
			deleteTableRows(dynTable);
		}
		if (totaltweets > 0) {
			// Display to select
			CreateTweetList();
		}
	}
	
	function deleteCookie(cookiename) {

		document.cookie = cookiename + "=" + ";path=/" + ";expires=Thu, 01-Jan-1970 00:00:01 GMT";
		
		var tlist = document.getElementById("tweetlist");
		tlist.style.display = 'none';
		deleteTableRows(dynTable);
		getCookies();
	}

	function clearTweet() {
		// clear radio button
		var tlist = document.getElementsByName('tweetradio');
		reset_radio_button(tlist);
		
		var x=document.getElementById("twittereditor");
		var j = 0;
		// clear tweet then focus
		for (var i=0;i<x.length;i++) {
			if (x.elements[i].name == 'days') {
				 x.elements[i].value = '';
			}
			else if (x.elements[i].name == 'tweetsubject') {
				 x.elements[i].value = '';
			}
			else if (x.elements[i].name == 'editmytwittertweet') {
				x.elements[i].value = '';
				j = i;
			}
			else if (x.elements[i].name == 'counter') {
				x.elements[i].value = maxcntrlngth;
				j = i;
			}

		}
		x.elements[j].focus();
		
	}
	
	
	function getCookies(){
		var x=document.getElementById("twittereditor");
		var pairs = document.cookie.split(";");
		var counttweets = 0;
		var pair = new Array();
		
		// Empty arrays
		cookies = {};
		a_tweets = [];
		a_tweetsubject = [];
		
		for (var i=0; i<pairs.length; i++){
		    // Get tweets
			 pair = pairs[i].split("=");
		   
		   pair[0] = trim(pair[0]);
		   pair[1] = trim(pair[1]);
		 
			if (pair[0].substring(0,3) == 'te_') {
				cookies[pair[0]] = unescape(pair[1]);
				a_tweetsubject[counttweets] = pair[0].substring(3, pair[0].length);
				a_tweet[counttweets] = unescape(pair[1]);
				counttweets++;
			}
		}
		
		// Mark the total
		totaltweets = counttweets;
		
		// 1 tweet fill in
		if (counttweets == 1) {
			// display tweet
			for (var i=0;i<x.length;i++) {
				//if (x.elements[i].name == 'days') {
					// x.elements[i].value = 
	    		//}
				if (x.elements[i].name == 'tweetsubject') {
					 x.elements[i].value = a_tweetsubject[0];
	    		}
				if (x.elements[i].name == 'editmytwittertweet') {
					x.elements[i].value = a_tweet[0];
	    		}
			}
		}
		if (totaltweets > 0) {
			// Display to select
			CreateTweetList();
		}
		return cookies;
	}

	
	function CreateTweetList() {
		var tlist = document.getElementById("tweetlist");
		tlist.style.display = 'block';
		dynTable = createDynTable(1,3);
		var ni = 1; var nj = 0;
		var radiotag = '';
		
		for( var i in cookies ) {
			
			nj = ni-1;
			radiotag = "<input type ='radio' name='tweetradio' value='"+ ni +"' onClick='DisplayTweet("+nj+")'>";
			ni++;
			
			deletetag="<a href=\"#\" class=\"deletetag\" onclick=\"deleteCookie('" + i + "')\">" + deleteText + "</a>";
			
			insRowLast(dynTable, i.substring(3, i.length), cookies[i], radiotag, deletetag);
			
		}	
	}
	
	
	// This function creates table dynamically,.
	function createDynTable(row, col) {
		// get the reference for the body
		var tlist = document.getElementById("tweetlist");

		// creates a <table> element and a <tbody> element
		mytable     = document.createElement("table");
		mytablebody = document.createElement("tbody");
		
		// creating all cells
		// creates a <tr> element
		mycurrent_row = document.createElement("tr");
	   
	   // Cell 1
	   mycurrent_cell = document.createElement("td");
		// creates a text node
	    mycurrent_cell.innerHTML = "<b>Subject</b>";
	   // appends the cell <td> into the row <tr>
	   mycurrent_row.appendChild(mycurrent_cell);
	   
	   // appends the row <tr> into <tbody>
	   mytablebody.appendChild(mycurrent_row);
	   
	   // Cell 2
	   mycurrent_cell = document.createElement("td");
	   mycurrent_cell.innerHTML = "<b>Tweet</b>";
	   mycurrent_row.appendChild(mycurrent_cell);
	   mytablebody.appendChild(mycurrent_row);
	
	   // Cell 3
	   mycurrent_cell = document.createElement("td");
	   mycurrent_cell.innerHTML = "&nbsp;";
	   mycurrent_row.appendChild(mycurrent_cell);
	   mytablebody.appendChild(mycurrent_row);    
	   
	   
	   // Cell 4
	   mycurrent_cell = document.createElement("td");
	   mycurrent_cell.innerHTML="<b>&nbsp;</b>";
	   mycurrent_row.appendChild(mycurrent_cell);   
	   mytablebody.appendChild(mycurrent_row);    
	   
		// appends <tbody> into <table>
		mytable.appendChild(mytablebody);
		// appends <table> into tlist
		tlist.appendChild(mytable);
		// sets the border attribute of mytable to 2;
		
		mytable.setAttribute("border", "1");
		
		return mytable;
	}		
	
	// Insert row into table.
	function insRowLast(table, twsubject, tweet, radiotag, deletetag) {
		// noOfRpws in table.
		noOfRows = table.rows.length;
		// no of columns of last row.
		noOfCols = table.rows[noOfRows-1].cells.length;
	
		// insert row at last.
		var x=table.insertRow(noOfRows);
	
		// insert cells in row.
		newCell = x.insertCell(0);
		// make cell editable feature.
		newCell.innerHTML=twsubject;
		
		newCell = x.insertCell(1);
		// make cell editable feature.
		newCell.innerHTML=tweet;
		//newCell.align="left";
		newCell.setAttribute("align", "left");
		newCell.setAttribute("valign", "top");
	
		newCell = x.insertCell(2);
		// make cell editable feature.
		newCell.innerHTML=radiotag;
	
		newCell = x.insertCell(3);
		// make cell editable feature.
		newCell.innerHTML=deletetag;
	
	}
	
	function deleteTableRows(table){
		var noOfRows = table.rows.length;
		
		for (var j = 0; j < noOfRows; j++) {
			noOfRowsNew = table.rows.length;
			table.deleteRow(noOfRowsNew-1);
		}
	}	

	function trim(phrse) {
		var b = 0 ;
		var e = phrse.length - 1;
		
		while( phrse.substr(b, 1).match(/\s/) ) b++;
		
		while( phrse.substr(e, 1).match(/\s/) ) e--;
		
		return phrse.substr(b, e-b+1);
	}
	
	function reset_radio_button (theid) {
		for (i = 0; i < theid.length; i++) {
		    theid[i].checked = false;
		}
	}
	
	function stopRKey(evt) {
		var evt = (evt) ? evt : ((event) ? event : null);
		var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
		if ((evt.keyCode == 13) && (node.type=="text"))  {return false;}
	}
	document.onkeypress = stopRKey;	
	
