function removeLeadingQMark(qry){
	var retval=qry;
	if(retval.charAt(0)=='?'){
		retval=retval.substring(1,retval.length);
	}
	return retval;
}
function prependQuestionMarkOrAmpersand(qry,appnd){
	var retval="";
	if(qry.indexOf("?")!=-1){
		retval+="&"+appnd;
	}
	else{
		retval+="?"+appnd;
	}
	return retval;
}
function appendQuery(qry,appnd){
	var retval=qry;
	var qryappnd=removeLeadingQMark(appnd);
	var pound_loc=retval.indexOf("#");
	if(pound_loc!=-1){
		retval = retval.substring(0,pound_loc)+prependQuestionMarkOrAmpersand(retval,qryappnd)+retval.substring(pound_loc,retval.length);
	}
	else{
		retval+=prependQuestionMarkOrAmpersand(retval,qryappnd);
	}
	return retval;
}
function startsWith(inp_str,prefix,offset){
	var ta = inp_str;
	var to = offset;
	var pa = prefix;
	var po = 0;
	var pc = prefix.length;
	// Note: toffset might be near -1>>>1.
	if ((offset < 0) || (offset > inp_str.length - pc)) {
	    return false;
	}
	while (--pc >= 0) {
            //alert(ta.charAt(to) + " " + pa.charAt(po));
	    if (ta.charAt(to++) != pa.charAt(po++)) {
	        return false;
	    }
	}
	return true;
}
function dontAppend(anchor_tag){
	var retval=false;
	retval=startsWith(anchor_tag.href,"javascript",0)||startsWith(anchor_tag.href,"mailto",0)||checkForU(anchor_tag.href);
	return retval;
}
function linkReplace(anchor_tag){
	var campaign_str=getQueryCampaignStr();
	if(campaign_str!=null&&(!dontAppend(anchor_tag))){
		anchor_tag.href=appendQuery(anchor_tag.href,campaign_str);
	}
	return true;
}
function checkReferrerIsOtherDomain(ref){
	var retval=false;
	retval=(ref.indexOf(location.hostname)==-1);
	return retval;
}
function buildReferrer(cmpgn){
	var retval=null;
	var ref=document.referrer;
	if(ref!=null){
		if(ref!=""){
			if(checkReferrerIsOtherDomain(ref)){
				retval=appendQuery(cmpgn,"ref="+escape(ref));
			}
			else{
				retval=cmpgn;
			}
		}
		else{
			retval=cmpgn;
		}
	}
	else{
		retval=cmpgn;
	}
	return retval;
}
function checkForReferrer(cmpgn){
	var retval=false;
	retval=(cmpgn.indexOf("ref=")!=-1);
	return retval;
}
function addReferrer(cmpgn){
	var retval=null;
	if(cmpgn!=null){
		if(checkForReferrer(cmpgn)){
			retval=cmpgn;
		}
		else{
			retval=buildReferrer(cmpgn);
		}
	}
	else{
		retval=buildReferrer("");
	}
	if(retval==""){
		retval=null;
	}
	return retval;
}
function createU(){
	var retval="";
	for(var i=0;i<32;i++){
		retval+=Math.round(Math.random() * 0xF).toString(0xF) + (i == 8 || i == 12 || i == 16 || i == 20 ? "-" : "");
	}
	return retval;
}
function buildU(cmpgn){
	var retval=null;
	var u=createU();
	if(u!=null){
		if(u!=""){
			retval=appendQuery(cmpgn,"u="+escape(u));
		}
		else{
			retval=cmpgn;
		}
	}
	else{
		retval=cmpgn;
	}
	return retval;
}
function checkForU(cmpgn){
	var retval=false;
	retval=(cmpgn.indexOf("u=")!=-1);
	return retval;
}
function addU(cmpgn){
	var retval=null;
	if(cmpgn!=null){
		if(checkForU(cmpgn)){
			retval=cmpgn;
		}
		else{
			retval=buildU(cmpgn);
		}
	}
	else{
		retval=buildU("");
	}
	if(retval==""){
		retval=null;
	}
	return retval;
}
function getCampaignStr(srch){
	//return addU(addReferrer(srch));
	return addReferrer(srch);
}
function getQueryCampaignStr(){
	return getCampaignStr(location.search);
}
function rewriteCampaignHREFs(){
	var anchorTags = document.getElementsByTagName("a");
	for (var i = 0; i < anchorTags.length; i++){
		linkReplace(anchorTags[i]);		
	}
}
function getCampaignID(){
	return "hdn_campaign";
}
function handleCampaignFormTag(){
	var cmp_field=document.getElementById(getCampaignID());
	var campaign_str=getQueryCampaignStr();
	if(cmp_field!=null){
		if(campaign_str!=null){
			cmp_field.value=unescape(campaign_str);
		}
	}
}
function campaign(){
	rewriteCampaignHREFs();
	handleCampaignFormTag();
}
function appendToCampaignFormTag(apnd){
	appendToCampaignFormTagWithAmp(apnd,true);
}
function appendToCampaignFormTagWithAmp(apnd,add_ampersand){
	var cmp_field=document.getElementById(getCampaignID());
	if(cmp_field!=null){
		if(add_ampersand){
			cmp_field.value+="&";
		}
		cmp_field.value+=unescape(apnd);
	}
}
function getPartialFormServiceURL(){
	var retval="";
	retval="http://www.edgarsnyder.com/contact/partialform.php";
	return retval;
}
function callPartialFormService(email,formname){
	var retval="";
	var xh = null;
	if(window.XMLHttpRequest){
		xh = new XMLHttpRequest();
	}
	else{
		if(window.ActiveXObject){
			xh = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	if (xh!=null){
		xh.open("GET",getPartialFormServiceURL()+"?email="+escape(email)+"&formname="+escape(formname),false);
		xh.send();
		retval=xh.responseText;
	}
	return retval;
}
var partialformsent=false;
function partialForm(){
	if (!partialformsent){
		var result = callPartialFormService(document.getElementById("Email").value,document.getElementById("FormName").value);
		//alert(result);
		partialformsent=true;
	}
}
