var IE = document.all?true:false

document.onmousedown = mouseDown;
document.onkeydown = keyDown;

var tempX = 0
var tempY = 0

var activePopup = null;
var selectedPixel = null;

var http = createRequestObject();

function createRequestObject() {
	var xmlhttp;
	try 
	{
  	xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch(e) 
	{
    try 
		{
    	xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(e) 
		{
    	xmlhttp=null;
    }
  }
  if (!xmlhttp&&typeof XMLHttpRequest!="undefined") 
	{
  	xmlhttp=new XMLHttpRequest();
  }
	return  xmlhttp;
}


function getQueryVariable(variable) 
{
  var query = window.location.search.substring(1);
  var vars = query.split("&");
	
  for (var i=0;i<vars.length;i++) 
	{
    var pair = vars[i].split("=");
    if (pair[0] == variable) 
		{
      return pair[1];
    }
  } 
}

function keyDown(e) 
{
	if (selectedAd === null) return;
	var delete_flag = 0;
	
	var code;
	if (!e) var e = window.event;
	if (e.keyCode) code = e.keyCode;
	else if (e.which) code = e.which;
	
	switch(code)
	{
		case 46:
			delete_flag = 1;
			hidePopup();
			activePopup = null;
		break;
	}

	var url="ad_onKeyDown.php"
	url=url+"?id="+selectedAd.id.substring(2);
	url=url+"&delete="+delete_flag

	http.onreadystatechange=keyDownResponse;
	http.open("GET",url,true)
	http.send(null)
}

function keyDownResponse() 
{
	
	if (http.readyState==4 || http.readyState=="complete")
	{
		if (http.responseText == "deleted")
		{
			selectedAd.parentNode.removeChild(selectedAd);
			selectedAd = null;
			try
			{
				document.getElementById('action').value = "";
				document.getElementById('id').value = "";
			}
			catch (e) {}
		}
	}
}

function mouseOver(e)
{
	if (!e) var e = window.event
	tempX = e.clientX + document.body.scrollLeft
	tempY = e.clientY + document.body.scrollTop

  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0} 
	
	
	var max_X = document.getElementById('area_map').offsetWidth;
	var max_Y = document.getElementById('area_map').offsetHeight;
	
	var popup_width = activePopup.offsetWidth;
	var popup_height = activePopup.offsetHeight;
	
	var ad_width = document.getElementById('ad' + activePopup.id.substring(5)).offsetWidth;
	var ad_height = document.getElementById('ad' + activePopup.id.substring(5)).offsetHeight;
	var ad_left = document.getElementById('ad' + activePopup.id.substring(5)).offsetLeft;

	var popup_left = tempX;
	var popup_top = tempY + ad_height;

	if (popup_left + popup_width >= max_X)
	{
	  popup_left = tempX - ((ad_left + popup_width) - max_X) - ad_width;
	}
	if (popup_top + popup_height >= max_Y)
	{
		popup_top = (max_Y - popup_height) - (max_Y - (tempY - ad_height));
	}

	activePopup.style.left = popup_left + 'px';
	activePopup.style.top = popup_top + 'px';
	
}

function displayPopup(id)
{
	activePopup = document.getElementById('popup' + id);
	activePopup.style.display = 'block';
	document.onmousemove = mouseOver;
}

function hidePopup()
{
	activePopup.style.display = 'none';
	document.onmousemove = null;
}

function mouseDown(e)
{
	if (IE) 
	{
    tempX = event.clientX + document.body.scrollLeft
    tempY = event.clientY + document.body.scrollTop
  } 
	else 
	{ 
    tempX = e.pageX
    tempY = e.pageY
  }  
  // catch possible negative values in NS4
  if (tempX < 0){tempX = 0}
  if (tempY < 0){tempY = 0}  
	
	var max_X = document.getElementById('area_map').width - 23;
	var max_Y = document.getElementById('area_map').height - 11;

	var url="ad_onMouseDown.php"
	url=url+"?x="+tempX
	url=url+"&y="+tempY
	url=url+"&max_x="+max_X
	url=url+"&max_y="+max_Y
	url=url+"&side="+getQueryVariable("side");
	
	try
	{
    http.open("GET", url, true);
    http.setRequestHeader('Content-Type',  "text/xml");
    http.onreadystatechange = mouseDownResponse;
		http.send(null);
	}
	catch(e){
		// caught an error
	}
}

function mouseDownResponse() {
	try
	{
    if ((http.readyState == 4 || http.readyState == "complete")&&(http.status == 200))
		{
    	var response = http.responseXML.documentElement;
			
			switch (response.tagName)
			{		
				case "ad":
					selectAd(response);
				break;
				
				case "pixel":
					selectPixel(response);
				break;
				
				case "nothing":
				default:
					// do nothing
				break;
			}
		}
  }
	catch(e){}
	
}

function selectAd(response)
{
	var id = response.getElementsByTagName('id')[0].firstChild
	var name = response.getElementsByTagName('name')[0].firstChild
	var address = response.getElementsByTagName('address')[0].firstChild
	var phone = response.getElementsByTagName('phone')[0].firstChild
	var website = response.getElementsByTagName('website')[0].firstChild
	var email = response.getElementsByTagName('email')[0].firstChild
	var description = response.getElementsByTagName('description')[0].firstChild
	var width = response.getElementsByTagName('width')[0].firstChild
	var height = response.getElementsByTagName('height')[0].firstChild
	
	if (selectedPixel)
	{
		selectedPixel.style.backgroundColor = '';
		selectedPixel = null;
	}
	
	try 
	{
		clearForm();
		
		if (name)	document.getElementById('name').value = name.nodeValue;
		if (address)	document.getElementById('address').value = address.nodeValue;
		if (phone)	document.getElementById('phone').value = phone.nodeValue;
		if (website)	document.getElementById('website').value = website.nodeValue;
		if (email)	document.getElementById('email').value = email.nodeValue;
		if (description)	document.getElementById('description').value = description.nodeValue;
		
		
		document.getElementById('id').value = id.nodeValue;
		document.getElementById('action').value = 'update';
		
		selectedAd = document.getElementById('ad' + id.nodeValue);
	}
	catch (e) {}
}

function selectPixel(response)
{
	var pixel = null;
	var id = response.getElementsByTagName('id')[0].firstChild;
	if (id) pixel = document.getElementById('pixel' + id.nodeValue);
	
	if (selectedPixel != pixel && selectedPixel != null)
	{
		selectedPixel.style.backgroundColor = '';
	}
	
	selectedPixel = pixel;
	selectedAd = null;
	pixel.style.backgroundColor = 'green';
		clearForm();
	
	document.getElementById('id').value = id.nodeValue;
	document.myform.action.value = 'create';
	
}

function clearForm()
{
	document.getElementById('name').value = '';
	document.getElementById('address').value = '';
	document.getElementById('phone').value = '';
	document.getElementById('website').value = '';
	document.getElementById('email').value = '';
	document.getElementById('description').value = '';
	document.getElementById('logo').value = ''
	
}
