var enableFlashInteraction = true;


/* LAYER */
function dispLayer (id, state) {
	var o = document.getElementById(id);
	if (!o)
		return (false);


	if (state)
		o.className = 'show';
	else
		o.className = 'hide';
}


function resizeLayer (id, width, height) {
	var o = document.getElementById(id);
	if (!o)
		return (false);

	//o.style.width = width;
	//o.style.height = height;
}


function writeLayer (id, data) {
	var o = document.getElementById(id);
	if (!o)
		return (false);

	pos = data.indexOf('\n');

	myRE = new RegExp("\\[setFlashPage:([0-9]+),([0-9]+),([0-9]+),([0-9]+)\\]");
	if (enableFlashInteraction && (results = data.substr(0, pos).match (myRE)))
		setFlashPage (results[1], results[2], results[3], results[4]);

	o.innerHTML = data.substr(pos);

	myEventObject._trackEvent("AJAX event test", "index.php/id/1");

	myRE = new RegExp("\\[setTitle:(.*?)\\]");
	if ((results = data.substr(0, pos).match (myRE)))
		document.title = results[1];
}



/* PAGE */
function loadPage (url) {
	if (arguments.length > 1)
		enableFlashInteraction = arguments[1];
	else
		enableFlashInteraction = true;
		

	xmlhttpGet (url, 'content');
}



/* HTML & FLASH INTERACTION */
function getFlashMovieObject (movieName) {
	if (window.document[movieName])
		return window.document[movieName];

	if (navigator.appName.indexOf("Microsoft Internet")==-1) {
		if (document.embeds && document.embeds[movieName])
			return document.embeds[movieName]; 

	} else
		return document.getElementById(movieName);
}

function setFlashPage (style, cat_id, item_id, sub_id) {
	var flashMovie = getFlashMovieObject("flash");

	if (!flashMovie)
		return false;

	flashMovie.SetVariable("/:ajax_style", style);
	flashMovie.SetVariable("/:ajax_cat_id", cat_id);
	flashMovie.SetVariable("/:ajax_item_id", item_id);
	flashMovie.SetVariable("/:ajax_sub_id", sub_id);
}






/* AJAX */
var xmlHttpReq = false;

function xmlhttpGet (strURL, o) {
	xmlHttpReq = false;

	strURL = strURL + '&dummy=' + new Date().getTime();

	// Mozilla/Safari
	if (window.XMLHttpRequest) {
		xmlHttpReq = new XMLHttpRequest();
		if (xmlHttpReq.overrideMimeType) 
			xmlHttpReq.overrideMimeType('text/xml'); 
    }
    // IE
    else if (window.ActiveXObject) {
		try { 
			xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); 
		} catch (e) { 
			try { 
				xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); 
			} catch (e) {} 
		} 
	} 

	if (!xmlHttpReq) { 
		alert('Unfortunatelly you browser doesn\'t support AJAX.'); 
		return false; 
	} 

	xmlHttpReq.open('GET', strURL, true);
	xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlHttpReq.onreadystatechange = function() {
        if (xmlHttpReq.readyState == 4) {
			if (xmlHttpReq.status != 200) {
				alert ('Error 404: url not found.');
				return (false);
			}

            //parseAjax(o, xmlHttpReq.responseText);
			writeLayer (o, xmlHttpReq.responseText);
        }
    }
    xmlHttpReq.send(null);
}


function parseAjax (o, str){
	str = str.split("\n");
	var tpl_name = o;
	var tpl_data = '';
	var results;

	myRE = new RegExp("^\\[tpl:(.+)\\]$");

	for (var i = 0; i < str.length; i++) {

		// new tpl match
		if (results = str[i].match (myRE)) {

			// write old data to layer
			if (tpl_data != '')
				writeLayer (tpl_name, tpl_data);

			tpl_name = results[1];
			tpl_data = '';

		// add line to current tpl
		} else {
			tpl_data = tpl_data + str[i];

			// end of tpl
			if (i == str.length-1)
				writeLayer (tpl_name, tpl_data);
		}
	}
}