document.onmousemove = mouseMove;
document.onmouseup   = mouseUp;

var showStatus = true;
var dragObject  = null;
var mouseOffset = null;
var check_request = null;
var check_request2 = null;
var top_zIndex = 0;


function hide(id) {
	element = document.getElementById(id);
	element.style.display = 'none';
}

function show(id) {
	element = document.getElementById(id);
	element.style.display = '';
}

function opacity(id, opacStart, opacEnd, millisec) {
    //speed for each frame
    var speed = Math.round(millisec / 100);
    var timer = 0;

    //determine the direction for the blending, if start and end are the same nothing happens
    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

//change the opacity for different browsers
function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
} 

function save_position(page) {
	if(window.XMLHttpRequest) {
		try { check_request = new XMLHttpRequest();
		} catch(e) { check_request = false; }
		} else if(window.ActiveXObject) {
			try { check_request = new ActiveXObject('Msxml2.XMLHTTP');
		} catch(e) {
			try { check_request = new ActiveXObject('Microsoft.XMLHTTP');
			} catch(e) { check_request = false; }
		} 
	}
		
	check_request.open('GET', page);
	check_request.onreadystatechange = load_page;
	check_request.send('');
}

function load_page() {
	destination = document.getElementById('save_results');
	if (check_request.readyState == 1) {
		destination.innerHTML = 'saving...';
		changeOpac(90, 'save_results');
		destination.style.display = '';
	}
	else if (check_request.readyState == 4 && check_request.status == 200) {
		destination.innerHTML = check_request.responseText;
		setTimeout('opacity(\'save_results\', 100, 0, 500);', 2000);
	}
	else if (check_request.readyState == 4) {
		destination.innerHTML = check_request.responseText;
		setTimeout('opacity(\'save_results\', 100, 0, 500);', 2000);
	}

}

function getImage(id) {
	document.getElementById('save_results').style.display = 'none';
	image_holder = document.getElementById('full_image');
	shade = document.getElementById('shade');
	shade.style.filter = "alpha(opacity=10)";
	shade.style.opacity = ".10";
	changeOpac(100, image_holder.id);
	image_holder.style.display = '';
	image_holder.innerHTML = '<center><table border="0"><td valign="middle"><img src="ajax-loader.gif" /><\/td><td valign="middle"><span style="font-size: 18px; background: inherit; font-color: #555555;">LOADING IMAGE...<\/span><\/td><\/table><\/center>';
	var img = document.createElement('img');
	var center = document.createElement('center');
	var img_div = document.createElement('div');

	img.onload = function (evt) {
		image_holder.innerHTML = '';
		img.style.border='1px solid black';
		changeOpac(0, image_holder.id);
		image_holder.appendChild(img);
		image_holder.appendChild(center);
		center.appendChild(img_div);
		img_div.setAttribute('id','full_image_options');
		img_div.style.width = (img.width - 10) + 'px';
		img_div.innerHTML = '<span id="caption" style="display: none;"><center><textarea id="caption_text" name="caption" style="width: ' + (img.width - 20) + 'px;"></textarea><br /></center><b><a href="javascript:void(0)" onclick="hide(\'caption\');show(\'edit\');">Save Caption</a> | <a href="javascript:void(0)" onclick="document.getElementById(\'caption_text\').value=null;hide(\'caption\');show(\'edit\');">Cancel</a></b></span><span id="edit"><b><a href="javascript:void(0)" onclick="hide(\'edit\');show(\'caption\');">Edit Caption</a> | <a href="javascript:void(0)" onclick="delete_image(\'' + id + '\');">Delete Image</a> | <a href="javascript:void(0)" onclick="close_image()">Close Image</a></b></span>';
		opacity(image_holder.id, 0, 100, 500);
	}
	
	img.ondblclick = function (evt) {
		close_image();
	}
	img.src = 'image.php?id=' + id + '&preview';
	return false;
}

function delete_image(id) {
	if (confirm('Delete This Image?')) {
		close_image();
		save_position('image.php?delete&id=' + id);
		img_div = document.getElementById(id);
		img_div.parentNode.removeChild(img_div);
	}
}

function close_image() {
	destination = document.getElementById('full_image');
	shade = document.getElementById('shade');
	opacity('full_image', 100, 0, 500);
	shade.style.filter = "alpha(opacity=100)";
	shade.style.opacity = "1.0";
	document.getElementById('save_results').style.display = '';
}

function getMouseOffset(target, ev){
	ev = ev || window.event;

	var docPos    = getPosition(target);
	var mousePos  = mouseCoords(ev);
	return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y};
}

function getPosition(e){
	var left = 0;
	var top  = 0;

	while (e.offsetParent){
		left += e.offsetLeft;
		top  += e.offsetTop;
		if (e.offsetParent != null) {
			e = e.offsetParent;
		}
	}

	left += e.offsetLeft;
	top  += e.offsetTop;
	
	return {x:left, y:top};
}

function mouseMove(ev){
	ev           = ev || window.event;
	var mousePos = mouseCoords(ev);
	
	//document.getElementById('coords').innerHTML = 'Top: ' + mousePos.y + ' Left: ' + mousePos.x;
	
	if(dragObject){
		//dragObject.style.position = 'absolute';
		dragObject.style.top      = mousePos.y - mouseOffset.y + "px";
		dragObject.style.left     = mousePos.x - mouseOffset.x + "px";
		if (parseInt(dragObject.style.zIndex) < top_zIndex) {dragObject.style.zIndex = top_zIndex + 1}
		return false;
	}
}

function mouseCoords(ev){
	if(ev.pageX || ev.pageY){
		return {x:ev.pageX, y:ev.pageY};
	}
	return {
		x:ev.clientX + document.body.scrollLeft - document.body.clientLeft,
		y:ev.clientY + document.body.scrollTop  - document.body.clientTop
	};
}

function mouseUp(){
	saveObject = dragObject;
	dragObject = null;
	savePos = getPosition(saveObject);
	//alert(saveObject.style.zIndex);
	save_position('image.php?save&id=' + saveObject.id + '&top=' + savePos.y + '&left=' + savePos.x + '&zIndex=' + saveObject.style.zIndex);
	if (parseInt(saveObject.style.zIndex) > top_zIndex) {top_zIndex = parseInt(saveObject.style.zIndex);}
}

function makeDraggable(item){
	if(!item) return;
	
	item.onmousedown = function(ev){
		dragObject  = this;
		mouseOffset = getMouseOffset(this, ev);
		return false;
	}
}

function rotate_images() {
	check_timer = setInterval("random_image()", 5000);
}

var last_load = 0;
var left_img = 1;
var center_img = 2;
var right_img = 3;
var total_people_imgs = 7;
var total_building_imgs = 7;

function random_image() {
	var image_number = Math.floor(Math.random()*3) + 1;
	while (image_number == last_load) {
		image_number = Math.floor(Math.random()*3) + 1;
	}
	
	if (image_number == 1) {
		var new_image_number = Math.floor(Math.random()*total_building_imgs) + 1;
		while (new_image_number == left_img || new_image_number == right_img) {
			new_image_number = Math.floor(Math.random()*total_building_imgs) + 1;
		}
		left_img = new_image_number;
		image_path = 'images/header_images/buildings/image_' + new_image_number + '.jpg';
	}
	else if (image_number == 2) {
		var new_image_number = Math.floor(Math.random()*total_people_imgs) + 1;
		while (new_image_number == center_img) {
			new_image_number = Math.floor(Math.random()*total_people_imgs) + 1;
		}
		center_img = new_image_number;
		image_path = 'images/header_images/people/image_' + new_image_number + '.jpg';
	}
	else if (image_number == 3) {
		var new_image_number = Math.floor(Math.random()*total_building_imgs) + 1;
		while (new_image_number == left_img || new_image_number == right_img) {
			new_image_number = Math.floor(Math.random()*total_building_imgs) + 1;
		}
		right_img = new_image_number;
		image_path = 'images/header_images/buildings/image_' + new_image_number + '.jpg';
	}
	
	last_load = image_number;
	
	
	ajax_load_image('image' + image_number, image_path);

}

function ajax_load_image(id, path) {
		var img = document.createElement('img');
		var element = document.getElementById(id);
		img.onload = function (evt) {
			changeOpac(0, id);
			element.innerHTML = '';
			opacity(id, 0, 100, 750);
			element.appendChild(img);
		}
		img.src = path;
}

function enableDrag() {
	images = document.getElementsByTagName('div');
	for (i = 0; i < images.length; i++) {
		if (images[i].className == 'image') {
			makeDraggable(images[i]);
			ajax_load_image(images[i].id);
			if (parseInt(images[i].style.zIndex) >= top_zIndex) {top_zIndex = parseInt(images[i].style.zIndex);}
			
			if (parseInt(images[i].id) >= last_id) {last_id = parseInt(images[i].id);}
		}
	}	
}

var check_timer = null;

function updateTimer(id) {
	interval = document.getElementById(id);
	if (parseInt(interval.value) == 0) {clearInterval(check_timer)}
	else {
		clearInterval(check_timer);
		check_timer = setInterval("check_new()", parseInt(interval.value))}
}

function check_new() {
	loadXML();
}

// XML Document Parser

var xmlDoc;
function loadXML()
{
	// code for IE
	if (window.ActiveXObject) {
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.load("image.php?xml");
		parseXML();
	}
	else if (document.implementation && document.implementation.createDocument) {
		xmlDoc=document.implementation.createDocument("","",null);
		xmlDoc.load("image.php?xml");
		xmlDoc.onload=parseXML;
	}
	else {
		alert('Your browser cannot handle this script');
	}
}

function parseXML() {
	divs = xmlDoc.getElementsByTagName("div");
	var id = null;
	var top = null;
	var left = null;
	var zIndex = null;
	var newdiv = null;
	var curImages = new Array;
	
	for (i = 0; i < divs.length; i++) {
		id = divs[i].childNodes[0].childNodes[0].nodeValue;
		top = divs[i].childNodes[1].childNodes[0].nodeValue;
		left = divs[i].childNodes[2].childNodes[0].nodeValue;
		zIndex = divs[i].childNodes[3].childNodes[0].nodeValue;
		
		if (dragObject == null || (dragObject != null && dragObject.id != id)) {
			curImage = document.getElementById(id);
			if (curImage != null) {
				curImage.style.top = top + "px";
				curImage.style.left = left + "px";
				curImage.style.zIndex = zIndex;
			}
			else {
				createNewImage(id, top, left, zIndex);
			}
		}
		
		if (parseInt(zIndex) >= top_zIndex) {top_zIndex = parseInt(zIndex);}
		curImages[id] = true;
	}
	
	
	images = document.getElementsByTagName('div');
	for (i = 0; i < images.length; i++) {
		if (images[i].className == 'image' && curImages[images[i].id] != true) {
			img_div = document.getElementById(images[i].id);
			img_div.parentNode.removeChild(img_div);
		}
	}
}


function update_cart(item, amount) {

	var total_val = parseFloat(document.getElementById('total').innerHTML);

	if (item.checked == true) {
		total_val += amount;
	}
	else {
		total_val -= amount;
	}
	if (total_val >= 0) {
		document.getElementById('total').innerHTML = total_val;
	}
}

function validate_cart(form) {
	
	var total_checked = 0;
		
	for (i = 0; i < form.elements['checked_items[]'].length; i++) {
		if (form.elements['checked_items[]'][i].checked == true) {
			total_checked++;	
		}
	}
	
	if (total_checked == 0) {
		alert('No Items Selected');
		return false;
	}

	return true;
}

function createNewImage(id, top, left, zIndex) {
	newdiv = document.createElement('div');
	newdiv.id = id;
	newdiv.style.top = top + "px";
	newdiv.style.left = left + "px";
	newdiv.style.zIndex = zIndex;
	newdiv.style.position = 'absolute';
	newdiv.className = 'image';
	newdiv.innerHTML = '<center><img src="ajax-loader.gif" alt="" /></center>';
	newdiv.setAttribute('ondblclick', 'getImage(\'' + id + '\')');
	document.getElementById('shade').appendChild(newdiv);
	makeDraggable(newdiv);
	ajax_load_image(newdiv.id);
}