var kP = 0;
var aT = 0;
var myInterval = window.setInterval(timedMousePos,250);
var xPos = -1;
var yPos = -1;
var firstX = -1;
var firstY = -1;
var intervals = 0;
var req = null;
var cid =  27013429 ;
var did =  113266 ;
var cP =  365 ;
var cD = "2008-08-15 05:34:50.0";
var name = null;
var website = null;
var title = null;
var comment = null;
var email = null;
var flagged = false;
var isAuthor = false;
var error = null;
var status = null;
var d = 0;
var mT = 0;

document.onkeypress = lK;
window.onload = rAT;

function checkField(field) {
	
	var button = document.getElementById("btSubmit");
	
	if(field.value.length > 0) {
		CM_btnEnable(button);
	}
	else {
		CM_btnDisable(button);
	}
}

function lK() {
	kP++;
}

function rAT() {
	aT = new Date();
}

function CM_btnDisable (which) {
	which.disabled = true;
	if (document.all){
		which.filters.alpha.opacity = 25;
	}else {
		which.style.MozOpacity = 0.25;
	}	
	which.style.cursor = "default";
}

function CM_btnEnable (which) {
	which.disabled = false;
	if (document.all){
		which.filters.alpha.opacity = 100;
		which.style.cursor = "hand";
	}else {
		which.style.MozOpacity = 1;
		which.style.cursor = "pointer";
	}
}


function submitForm(formObj) {

    if(formObj.action == ""){
    	formObj.action = "/c";
    }
	addFieldsToForm(formObj);
    formObj.submit();
}

function addFieldsToForm(formObj, redirect) {
	var mTField = document.createElement('input');
	var dField = document.createElement('input');
	var kPField = document.createElement('input');
  	var cidField = document.createElement('input');
  	var didField = document.createElement('input');
  	
  	
	mTField.setAttribute('name','mT');
	mTField.setAttribute('type', 'hidden');
  	  
	dField.setAttribute('name', 'd');
	dField.setAttribute('type', 'hidden');
  	  
	kPField.setAttribute('name', 'kP');
	kPField.setAttribute('type', 'hidden');
  	
	cidField.setAttribute('name', 'cid');
	cidField.setAttribute('type', 'hidden');
  	
  	didField.setAttribute('name', 'did');
  	didField.setAttribute('type', 'hidden');	
  	
  	if(redirect != null) {
  		var pathField = document.createElement('input');
  		pathField.setAttribute('name', 'path');
  		pathField.setAttribute('type', 'hidden');
  		pathField.value = redirect;
  		formObj.appendChild(pathField);
  	}
  	
  	
  	  
	mTField.value = mT;
	dField.value = d;
	kPField.value = kP;
	cidField.value = cid;
	didField.value = did;
	
  		
	formObj.appendChild(dField);
	formObj.appendChild(kPField);
	formObj.appendChild(mTField);
	formObj.appendChild(cidField);
	formObj.appendChild(didField);
	
}

function getMousePos(p) {
	if (!p) var p = window.event;
	if (p.pageX || p.pageY) {
		xPos = p.pageX;
		yPos = p.pageY;
	} else if (p.clientX || p.clientY) {
		xPos = p.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
		yPos = p.clientY + document.body.scrollTop + document.documentElement.scrollTop;
	}
}

function timedMousePos() {
	document.onmousemove = getMousePos;
	if (xPos >= 0 && yPos >= 0) {
	var newX = xPos;
	var newY = yPos;
	intervals++;
	}
	if (intervals == 1) {
		firstX = xPos;
		firstY = yPos;
	} else if (intervals == 2) {
		clearInterval(myInterval);
		calcDistance(firstX,firstY,newX,newY);
	}
}

function calcDistance(aX,aY,bX,bY) {
	mT = Math.round(Math.sqrt(Math.pow(aX-bX,2)+Math.pow(aY-bY,2)));
}


function getXmlRequestObject() {
	if(req == null){
		if(window.XMLHttpRequest){
			req = new XMLHttpRequest();
		}else if(window.ActiveXObject){
			try{
				req = new ActiveXObject("Msxml2.XMLHTTP");
			}catch(e){
				try{
					req = new ActiveXObject("Microsoft.XMLHTTP");
				}catch(e){
                	return null;
				}
			}
		}
    }
    return req;
}


function insertComment(formObj, isAjax, responseHandler){
	var sT = new Date();
	d = sT - aT;
	if((isAjax == true) && (responseHandler != null)) {
		req = getXmlRequestObject();
		if(req != null) {
			var formVars = getFormValues(formObj);
 			var handlerFunction = getReadyStateHandler(req, responseHandler);
			req.onreadystatechange = handlerFunction;
			var url = "/c";
            var params = "ajax=true&" + formVars;
 
            req.open("POST", url, true);
            req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
            
     
            req.send(params);
            return false;
    	}
    	else {
    		return false;
    	}
	}
	else {
		addFieldsToForm(formObj);
 		submitForm(formObj);
	}
}


   
function postForm(formObj, isAjax, responseHandler) {
	return insertComment(formObj, isAjax, responseHandler);

}

function getFormValues(fobj) {
       var str = "";
       var valueArr = null;
       var val = "";
       var cmd = "";	
	   var ampRegex = new RegExp("&", "g");
	   var replaceAmpStr = escape("&#38;");
	   var percentRegex = new RegExp("%", "g"); 
	   var replacePerStr = escape("&#37;");

       for(var i = 0;i < fobj.elements.length;i++)
       {
       		if(fobj.elements[i].type != "submit"){ 
				var fieldStr = fobj.elements[i].value;
				fieldStr = fieldStr.replace(percentRegex, replacePerStr);
	            fieldStr = fieldStr.replace(ampRegex, replaceAmpStr);
       			str += fobj.elements[i].name + "=" + fieldStr + "&";
           		fobj.elements[i].value = "";
           	}
       }
       str += "mT=" + mT;
       str += "&d=" + d;
       str += "&kP=" + kP;
       str += "&cid=" + cid;
       str += "&did=" + did;
	 
       return str;

 }

function getReadyStateHandler(req, responseHandler) {

  // Return an anonymous function that listens to the 
  // XMLHttpRequest instance
  return function () {

    // If the request's status is "complete"
    if (req.readyState == 4) {
      
      // Check that a successful server response was received
      if (req.status == 200) {

        // Pass the XML payload of the response to the 
        // handler function
        gatherResponse(req.responseText);
        responseHandler();

      } else {

        // An HTTP problem has occurred
        alert("HTTP error: "+req.status);
      }
    }
  }
}

function gatherResponse(commentObject) {
 	var jsonExpression = "(" + commentObject+ ")";
    var commentData = eval(jsonExpression);
    error = commentData.error;
    name = commentData.name;
    comment = commentData.comment;
    email = commentData.email;
    website = commentData.website;
    title = commentData.title;
    isAuthor = false;
    flagged = false;
    status = commentData.status;
    if(status == "AUTHOR") {
    	isAuthor = true;
    }
    else if(status != "APPROVED") {
        flagged = true;
    }
}
