
// global vars
var selectedPageArea;
var ajaxReqVar;
var prevUrlLookup = 'http://';
var urlTimerId;
var timerDelay = 200;
var timerCheckCount = 8;
var timerPauseCount = 0;

function getElem(id)
{
	if (document.getElementById && document.getElementById(id)) {
		return document.getElementById(id);
	}
	else if (document.all && document.all[id]) {
		return document.all[id];
	}
	else {
		return false;
	}
}


function updatePriceTag(str)
{
	getElem('pricetag').innerHTML = str;
}


function generateAmountString(amt)
{
	return 'Single link value:<br /><span class="amount">$'+ amt +'</span>/month';
}


function showError(type)
{
	var msg 	= '';

	switch(type) {
		case 'invalid':
			msg = "We're sorry. This URL is not valid.";
			break;
		case 'steps':
			msg = "Please complete all steps.";
			break;
		default:
			msg = "An unknown error has occurred. Please try a different URL.";
			break;
	}
	
	getElem('popupNoticeText').innerHTML = msg;
	getElem('popupNotice').style.display = 'block';
}


function hideError()
{
	getElem('popupNotice').style.display = 'none';
}


function showTagNotice(amt)
{
	var frm 		= document.forms['worth_form'];
	var numlinks = frm.numlinks.options[frm.numlinks.selectedIndex].value;
	var monthly;
	
	var tmp = new String(amt);
	tmp = tmp.replace(',', '');
	monthly = parseInt(tmp) * numlinks;
	
	getElem('notice_numlinks').innerHTML = numlinks;
	getElem('notice_monthly').innerHTML = '$' + monthly + '/month';
	
	getElem('tag_notice').style.display = 'block';
}


function hideTagNotice()
{
	getElem('tag_notice').style.display = 'none';
}


function highlightArea(block)
{
	if(selectedPageArea != null){
		selectedPageArea.style.backgroundColor = '';
		selectedPageArea.style.backgroundImage = '';
	}

	block.style.backgroundColor = '#f0ef9c';
	block.style.backgroundImage = "url('images/map_active.gif')";
	selectedPageArea = block;
	
	updateWorth();
	
	return false;
}

/*
function checkNewUrl()
{
	
	if(timerPauseCount < timerCheckCount){
		timerPauseCount++;
		urlTimerId = window.setTimeout("checkNewUrl()", timerDelay);
		return;
	}
	
	timerPauseCount = 0;

	var frm 		= document.forms['worth_form'];
	var url 		= encodeURI(frm.url.value);
	
	if(url == prevUrlLookup){
		urlTimerId = window.setTimeout("checkNewUrl()", timerDelay);
		return;
	}
	
	updateWorth();
	prevUrlLookup = url;
	
	return;
}

function typingUrl()
{
	timerPauseCount = 0;
}
*/

function newXMLHttpRequest()
{
	if (window.XMLHttpRequest) {
        ajaxReqVar = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        ajaxReqVar = new ActiveXObject("Microsoft.XMLHTTP");
    }
}


function sendRequest(url)
{
	ajaxReqVar.open("GET", url, true);
	if (window.XMLHttpRequest) {
		ajaxReqVar.send('');
	}else{
		ajaxReqVar.send();
	}
}


function updateWorth()
{	
	var frm 		= document.forms['worth_form'];
	var url 		= encodeURI(frm.url.value);
	var cat 		= frm.cat.options[frm.cat.selectedIndex].value;
	var numlinks 	= frm.numlinks.options[frm.numlinks.selectedIndex].value;
	var sitewide 	= frm.sitewide[1].checked ? '1' : '0';
	var area		= '';
	
	if(!selectedPageArea){
		updatePriceTag(generateAmountString('0'));
		return false;
	}else{
		area = selectedPageArea.className;
	}
	
	if(url == '' || url == 'http://'){
		updatePriceTag(generateAmountString('0'));
		//frm.url.focus();
		return false;
	}
	
	if(cat == ''){
		updatePriceTag(generateAmountString('0'));
		//frm.cat.focus();
		return false;
	}
	
	if(numlinks == ''){
		updatePriceTag(generateAmountString('0'));
		//frm.numlinks.focus();
		return false;
	}
	
	//if(urlTimerId)	window.clearTimeout(urlTimerId);
	
	var query;
	query  = "/link_calculator_logic.php";
	query += "?url=" + url;
	query += "&cat=" + cat;
	query += "&num_links=" + numlinks;
	query += "&site_wide=" + sitewide;
	query += "&area=" + area;

	newXMLHttpRequest();
	ajaxReqVar.onreadystatechange = parseResult;
	sendRequest(query);
	
	return true;
}


function parseResult()
{
	//typingUrl();
	//urlTimerId = window.setTimeout("checkNewUrl()", timerDelay);
	getElem('go_button').style.display = 'block';
	
	if (ajaxReqVar.readyState != 4)	return false;
    if (ajaxReqVar.status != 200)	return false;

    var doc = ajaxReqVar.responseXML.documentElement;
    
    if(doc.hasChildNodes()) {
    	var data = doc.childNodes[0];
		var result = data.firstChild.data;
		
		switch(result)
		{
			case 'priceless':
				hideTagNotice();
				result = '<span class="special"><br />&nbsp; &nbsp; Priceless! &nbsp; &nbsp;</span>';
				break;
			case 'moreafford':
				hideTagNotice();
				result = '<span class="special"><br />More Than You<br />Can Afford</span>';
				break;
			case 'funny':
				hideTagNotice();
				result = '<span class="special"><br />Haha, Very Funny</span>';
				break;
			case 'printzeros':
				hideTagNotice();
				result = '<span class="special"><br />We Can\'t Print<br />That Many Zeros</span>';
				break;
			case 'fuh-get':
				hideTagNotice();
				result = '<span class="special"><br />Fuh-get about it!</span>';
				break;	
			case 'mc':
				hideTagNotice();
				result = '<img src="/images/linkcalc/mc.gif" width="134" height="130" />';
				break;
			case 'seo':
				hideTagNotice();
				result = '<img src="/images/linkcalc/pumas.gif" width="130" height="102" style="margin: -15px 10px;" />';
				break;
			case 'jrmy':
				hideTagNotice();
				result = '<img src="/images/linkcalc/zawodny.gif" width="130" height="59" style="margin: 5px 10px;" />';
				break;
			case 'naylor':
				hideTagNotice();
				result = '<img src="/images/linkcalc/naylor.gif" width="70" height="130" style="margin: -30px 35px;" />';
				break;
			case 'msn':
				hideTagNotice();
				result = '<img src="/images/linkcalc/msn.gif" width="75" height="55" style="margin: 0 30px;" />';
				break;
			case 'seort':
				hideTagNotice();
				result = '<img src="/images/linkcalc/seort.gif" width="69" height="130" style="margin: -30px 30px;" />';
				break;
			case 'shoe':
				hideTagNotice();
				result = '<img src="/images/linkcalc/shoe.gif" width="130" height="105" style="margin: -15px 10px;" />';
				break;
			case 'tla':
				hideTagNotice();
				result = '<img src="/images/linkcalc/tla.gif" width="112" height="100" style="margin: -15px 20px;" />';
				break;
			case 'guerilla':
				hideTagNotice();
				result = '<img src="/images/linkcalc/guerilla.gif" width="106" height="130" style="margin: -30px 20px;" />';
				break;
			case 'wolf':
				hideTagNotice();
				result = '<img src="/images/linkcalc/wolf.gif" width="115" height="70" style="margin: 0px 15px;" />';
				break;
			case 'invalid':
			case 'unknown':
				hideTagNotice();
				//showError(result);
				result = generateAmountString('0');
				break;
				
			default:
				showTagNotice(result);
				result = generateAmountString(result);
				break;
		}
		
		updatePriceTag(result);
		
		return true;
    }
    
    return false;
}

// set as online event
window.onload = updateWorth;
//urlTimerId = window.setTimeout("checkNewUrl()", timerDelay);
