function XMLHttp() {
	var o = false;
	if (typeof XMLHttpRequest != 'undefined') {
		o = new XMLHttpRequest();
	} 
	else {
		try {
			o = new ActiveXObject("Msxml2.XMLHTTP");
		} 
		catch (e) {
			try {
				o = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (E) {
				o = false;
			}
		}
	}
	return o;
}

var previewstatus = false;
var previewdiv = null;
var postingstatus = false;
var pbarstatus = 0;
var posterror = false;

function cpreview() {

	if(postingstatus) {
		return;	
	}
	try {

	var oForm = document.getElementById('comments_form');
	var aFields = oForm.elements;
	var text = aFields['text'];
	if(previewstatus == false) {
		previewstatus = true;
		previewdiv = document.createElement('DIV');
		previewdiv.setAttribute("id", "text_preview"); 
		previewdiv.style.border = "solid silver 1px"; 
		//previewdiv.style.backgroundColor = "Silver"; 
		previewdiv.style.padding = "5px 5px 5px 5px"; 
		previewdiv.innerHTML = 'posting: <b>' + ocook['author'] + '</b><br /><br /><div id="previewtext"></div>';
		document.getElementById('comment_preview').appendChild(previewdiv);
	}
	var previewtext = document.getElementById('previewtext');
	previewtext.innerHTML = cleanComment(text.value);  
	//previewtext.innerHTML = text.value;  

	//comment_preview

	} catch(e) {
		alert(e);
	}
}

//alert('test 4');
function cleanComment(text) {

	text = text.replace(/<a.*javascript:.*?>/ig, ''); 	
	text = text.replace(/<a.*class=.*?>/ig, ''); 	
	text = text.replace(/<a.*style=.*?>/ig, ''); 	
	text = text.replace(/<a.*on\w+=.*?>/ig, ''); 	
	text = text.replace(/<i.*class=.*?>/ig, ''); 	
	text = text.replace(/<i.*style=.*?>/ig, ''); 	
	text = text.replace(/<i.*on\w+=.*?>/ig, ''); 	
	text = text.replace(/<b.*class=.*?>/ig, ''); 	
	text = text.replace(/<b.*style=.*?>/ig, ''); 	
	text = text.replace(/<b.*on\w+=.*?>/ig, ''); 	
	text = text.replace(/<img.*?>/g, ''); 	
	text = text.replace(/<(?!a.*?|\/a|b|\/b|i|\/i).*?>/ig, ''); 

	text = autoLink(text);

	var pars = text.split(/\r?\n\r?\n/);
	var newtext = ''; 
	for(i = 0; i < pars.length; i++) {
		pars[i] = pars[i].replace(/\r?\n/g, '<br />\n'); 	
		newtext += '<p>\n' + pars[i] + '</p>\n';
	}
	newtext = cleanQuotes(newtext);
	return newtext;
}

function autoLink(text) {
    text = text.replace( /(^|\s+)(http:\/\/\S+)/igm, '$1<a href="$2">$2</a>');
    var amatches = text.match(/>(.*?)<\/a>/g);
    if(amatches) {
        for(i = 0; i < amatches.length; i++) {
            var href = amatches[i];
            if(href.length > 60) {
                var nhref = href.substr(0, 59);
                var index = text.indexOf(href);
                var stext = text.substr(0, index);
                var etext = text.substr(index + href.length, text.length);
                text = stext + nhref + "...</a>" + etext;  
            }
        }
    }
    return text;
}

function cleanQuotes(text) {
    // clean smart chars and such...
    // 8216, 8217, 8220, 8221, 8212, 8211
    var chars = text.split("");
    var newtext = '';
    for(i = 0; i < chars.length; i++) {
        var chr = chars[i].charCodeAt(0);
        switch( chr ) {
            case 8216: newtext += "'"; break;
            case 8217: newtext += "'"; break;
            case 8220: newtext += '"'; break;
            case 8221: newtext += '"'; break;
            case 8211: newtext += "-"; break;
            case 8212: newtext += "-"; break;
            default: newtext += chars[i];
        }
    }
    return newtext;
}


function posting() {
	try {

	var pbardiv = document.getElementById('pbardiv');
	pbardiv.style.display = 'block';
	var dots = document.getElementById('pbardots');
	//var dots = pbardiv.childNodes[1];
	//alert(dots.nodeType);
	if(postingstatus) {
		pbarstatus = pbarstatus + 1;
		if(pbarstatus == 20) {
			pbarstatus = 0;
			dots.innerHTML = '';
		} else { 
			dots.appendChild( document.createTextNode(" . ") );
		}
		setTimeout("posting()", 200);
	} else {
		if(posterror) {
			pbardiv.innerHTML = '<span style="color: red;"><b>Comment error</b></span>...' +
				'we are unable to post your comment at this time...';
		} else {
			//pbardiv.innerHTML = '<b>Comment posted</b></span> it may take a few minutes for your' +
			//			'  comment to replicate across our servers, thank you for your patients';
			pbardiv.innerHTML = '<b>Your comment has been posted.</b> It may take a moment for your comment to replicate across our servers.';
		}
	}

	} catch(e) {
		alert(e);
		throw "bla";
	}

}

function sendComment() {

  try {


  postingstatus = true;
  document.getElementById('pbardiv').innerHTML = '<b>Posting comment</b><span id="pbardots"></span>';
  var oBasket = document.getElementById('comment_basket'); if (!oBasket) return true;
  var oForm = document.getElementById('comments_form'); if (!oForm) return true;
  var aFields = oForm.elements;

  if(aFields['text'].value == '') {
      postingstatus = false;
      document.getElementById('pbardiv').innerHTML = '<b>Please enter a comment...</b>';
      document.getElementById('pbardiv').style.display = 'block';
      return false;	
  }
  posting();
  var oHTTP = XMLHttp(); if (!oHTTP) return true;

  aFields["post"].setAttribute("value","Posting comment...");
  aFields["post"].disabled = true;
  aFields["text"].disabled = true;
	
	var sRequest = '';
  //pass orwell/mt cookies... 

  sRequest += "&entry_id="+encodeURIComponent(aFields["entry_id"].value);
  var text = aFields["text"].value; 
  text = autoLink(text);
  text = cleanQuotes(text);
  sRequest += "&text="+encodeURIComponent(text);
  sRequest += "&url="+encodeURIComponent(aFields["url"].value);
  sRequest += "&author="+encodeURIComponent(aFields["author"].value);
  sRequest += "&gmuser="+encodeURIComponent(aFields["gmuser"].value);
  sRequest += "&gmpass="+encodeURIComponent(aFields["gmpass"].value);
  sRequest += "&post="+encodeURIComponent('POST');
  
  oHTTP.open("POST","/tcomment",true);  
  oHTTP.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
  oHTTP.setRequestHeader('Content-Length', sRequest.length);
  oHTTP.setRequestHeader('If-Modified-Since', 'Wed, 15 Nov 1995 00:00:00 GMT');


	var query = document.location.search.substring(1);

	debugwin = null;
	if(query && query == 'debug=true') {
		debugwin = window.open('','debug','scrollbars=yes, menubar=no,height=600,width=800,resizable=yes,toolbar=no,location=no,status=no');
	}

	posterror = false;
	oHTTP.onreadystatechange = function() {
		if (oHTTP.readyState == 4) {
			if (oHTTP.status == 200) {
			  var response = oHTTP.responseText;
			  if(debugwin) {
			  	debugwin.document.write(oHTTP.responseText);  
			  }
			  aFields["post"].setAttribute("value","Post A Comment");
			  aFields["post"].disabled = false;
			  aFields["text"].disabled = false;
			  var cview = document.getElementById('comment_preview');
			  previewstatus = false;
			  if(response.indexOf('wait a short amount of time') > -1) { 
				cview.innerHTML = '<p id="text_preview"><b>Please Note:</b> In an effort to curb malicious comment posting by abusive users, ' +
						  'We\'ve enabled a feature that requires a weblog commenter to wait a short ' +
						  'amount of time before being able to post again. Please try to post your ' + 
						  'comment again in a short while. Thanks for your patience.';
				posterror = true;

			  } else if (response.indexOf('Thank You for Commenting') == -1) { 
				posterror = true;
				cview.innerHTML = '';
			  } else {
			     var currentTime = new Date();
			     var millis = currentTime.getTime();
			     cview.innerHTML = cview.innerHTML + 
					'<div id="cv'  + millis + '" style="border: solid 1px; background-color: #FFFF8F; padding: 5px 5px 5px 5px; margin-bottom: 10px;">' + cleanComment(aFields["text"].value) +  
					'<p style="text-align: right;"> by <strong>' +
					ocook['author'] + "</strong> - just posted...</p></div>"; 
			   		aFields["text"].value = ''; 
			  		cview.removeChild(document.getElementById('text_preview'));
					//fadeNode('cview');
					setTimeout('fadeNode("cv' + millis + '")', 2500);
			  }
					
		   } else {
			//	alert('comment post faild...');
			posterror = true;
		   }
  		   postingstatus = false;
             } 
	}
	oHTTP.send(sRequest);


  } catch(e) {
     alert(e);
     throw(e);
  }
   return false;

}

function fadeNode(node, cnt) {
        var fnode = document.getElementById(node);      
        if(! cnt) {
                cnt = 0;
                //alert(cnt);
        }
        cnt++;
	//rgb(0,0,0) 
        if(cnt < 21) {
		fade = cnt * 5 + 155;
                fnode.style.backgroundColor = 'rgb(255,255,' + fade + ')'; 
                //alert ('rgb(255,255,' + fade + ')'); 
		//return;
                //fnode.filter='alpha(opacitydd=' + fade + '0)';
                setTimeout('fadeNode("' + node + '",' + cnt + ')', 30); 
        }
}


