var ajax = {
	_objPool: [],
	_getInstance: function () {
		for (var i = 0; i < this._objPool.length; i ++) {
			if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4) return this._objPool[i];
		}
		this._objPool[this._objPool.length] = this._createObj();
		return this._objPool[this._objPool.length - 1];
	},
	_createObj: function () {
		if (window.XMLHttpRequest) var objXMLHttp = new XMLHttpRequest();
		else if (window.ActiveXObject) var objXMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
		return objXMLHttp;
	},
	send: function (url, callback) {
		var objXMLHttp = this._getInstance();
		with(objXMLHttp) {
			try {
				if (url.indexOf("?") > -1)  url += "&randnum=" + Math.random();
				else url += "?randnum=" + Math.random();
				open('GET', url, true);
				setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=gbk');
				send('');
				onreadystatechange = function () {
					if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304)) {
						if(callback=='' || callback==null) new JSON(objXMLHttp);
						else callback(objXMLHttp);
					}
				}
			} catch(e) {
				alert(e);
			}
		}
	}
};

function createXmlHttpRequest()
{
	var $http_request = null;
	if(window.XMLHttpRequest) { 
		http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
			http_request.overrideMimeType('text/xml');
		}
	}
	else if (window.ActiveXObject) { 
		try {
			http_request = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	if (!http_request) { 
		window.alert("Oject create error!");
		return false;
	}
	return http_request;
}

function iso_date(date){
	format = s_date_format;
	var year;
	var month;
	var day;
	if(date != ""){
		dateArray = date.split('-');
		if(format.substring(1, 2) == "Y"){
			year = dateArray[0];
		}else if(format.substring(1, 2) == "m"){
			month = dateArray[0];
		}else if(format.substring(1, 2) == "d"){
			day = dateArray[0];
		}
		if(format.substring(4, 5) == "Y"){
			year = dateArray[1];
		}else if(format.substring(4, 5) == "m"){
			month = dateArray[1];
		}else if(format.substring(4, 5) == "d"){
			day = dateArray[1];
		}
		if(format.substring(7, 8) == "Y"){
			year = dateArray[2];
		}else if(format.substring(7, 8) == "m"){
			month = dateArray[2];
		}else if(format.substring(7, 8) == "d"){
			day = dateArray[2];
		}
		date_return = year + "-" + month + "-" + day;
	}else{
		date_return = "";
	}
	return date_return
}

function user_date(date){
	format = s_date_format;
	var first;
	var second;
	var third;
	if(format.substring(1, 2) == "Y"){
		first = date.substring(0,4);
	}else if(format.substring(1, 2) == "m"){
		first = date.substring(5,7);
	}else if(format.substring(1, 2) == "d"){
		first = date.substring(8,10);
	}
	if(format.substring(4, 5) == "Y"){
		second = date.substring(0,4);
	}else if(format.substring(4, 5) == "m"){
		second = date.substring(5,7);
	}else if(format.substring(4, 5) == "d"){
		second = date.substring(8,10);
	}
	if(format.substring(7, 8) == "Y"){
		third = date.substring(0,4);
	}else if(format.substring(7, 8) == "m"){
		third = date.substring(5,7);
	}else if(format.substring(7, 8) == "d"){
		third = date.substring(8,10);
	}
	date_return = first + "-" + second + "-" + third;
	return date_return
}

function image_open(src,w,h)
{
	window.open(src,"showimage","height="+h+",width="+w+",left=80,top=180,scrollbars=1");
}

function votescore(s)
{
	document.getElementById("score").value=s;
}

 // utility function to retrieve an expiration data in proper format;
    function getExpDate(days, hours, minutes)
    {
        var expDate = new Date();
        if(typeof(days) == "number" && typeof(hours) == "number" && typeof(hours) == "number")
        {
            expDate.setDate(expDate.getDate() + parseInt(days));
            expDate.setHours(expDate.getHours() + parseInt(hours));
            expDate.setMinutes(expDate.getMinutes() + parseInt(minutes));
            return expDate.toGMTString();
        }
    }

    //utility function called by getCookie()
    function getCookieVal(offset)
    {
        var endstr = document.cookie.indexOf(";", offset);
        if(endstr == -1)
        {
            endstr = document.cookie.length;
        }
        return unescape(document.cookie.substring(offset, endstr));
    }

    // primary function to retrieve cookie by name
    function getCookie(name)
    {
        var arg = name + "=";
        var alen = arg.length;
        var clen = document.cookie.length;
        var i = 0;
        while(i < clen)
        {
            var j = i + alen;
            if (document.cookie.substring(i, j) == arg)
            {
                return getCookieVal(j);
            }
            i = document.cookie.indexOf(" ", i) + 1;
            if(i == 0) break;
        }
        return;
    }

    // store cookie value with optional details as needed
    function setCookie(name, value, expires, path, domain, secure)
    {
        document.cookie = name + "=" + escape(value) +
            ((expires) ? "; expires=" + expires : "") +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            ((secure) ? "; secure" : "");
    }

    // remove the cookie by setting ancient expiration date
    function deleteCookie(name,path,domain) 
    {
        if(getCookie(name))
        {
            document.cookie = name + "=" +
                ((path) ? "; path=" + path : "") +
                ((domain) ? "; domain=" + domain : "") +
                "; expires=Thu, 01-Jan-70 00:00:01 GMT";
        }
    }

function displayformatdate(dayValue,id)
{
	if(tday>dayValue && canpast<1){
		document.form.predate.value = tday;
		dayValue = tday;
		alert(cannt_book_past);
	}
	var daystr, day = new Date(Date.parse(dayValue.replace(/-/g, '/')));
	daystr = today[day.getDay()] + " " + day.getDate() + " " + month[day.getMonth()] + " " + day.getFullYear();
	da = document.getElementById(id);
	da.innerHTML = daystr;
}

function changePreferredTime(lct_id)
{
	var url = "includes/getData.php?c=getPreferredTime&lct_id="+lct_id+"&"+Math.random();
	ajax.send(url,displayPreferredTime);
}

function displayPreferredTime(xmlHttp)
{
	var arr = xmlHttp.responseText.split(",");
	document.form.pretime.options.length=1;
	for(i=0;i<arr.length;i++)
	{
		document.form.pretime.options[i+1] = new Option(arr[i],arr[i]); 
	}
	xmlHttp = null;
}

var item_num = 0;
function checkitem(obj_id,time,i,price)
{
	if(price==''){
		price = 0;
	}
	price = roundfloat(parseFloat(price));
	predate = document.form.predate.value;
	var itemobj = document.getElementById("t_"+obj_id+"_"+i);
	var checkobj = document.getElementById("item_"+obj_id+"_"+i);
	if(predate<tday && canpast<1){
		alert(this_day_cannt_book);
		checkobj.checked = false;
		return false;
	}
	if(predate == tday){
		timearr = time.split("-");
		s_time = timearr[0].split(":");
		strmin = parseInt(s_time[0])*60+parseInt(s_time[1]);
		var d = new Date();
		nowmin = d.getHours()*60+d.getMinutes();
		if(nowmin>strmin && canpast<1){
			alert(cannt_book_past);
			checkobj.checked = false;
			return false;
		}
	}
	var xmlHttp = createXmlHttpRequest();
	var url = "includes/getData.php?c=checkbookitem&obj_id="+obj_id+"&predate="+predate+"&time="+time+"&"+Math.random();
	//ajax.send(url,changeItemgb);
	xmlHttp.onreadystatechange = function(){
		if (xmlHttp.readyState == 4) {
			if (xmlHttp.status == 200) {
				var rt = xmlHttp.responseText.split(";");
				if(rt[0]=="booked"){
					//itemobj.style.background = "#01FF2A";
					itemobj.className = "item_price_green";
					item_prices += price;
					option_prices = parseFloat(rt[1]);
					eval("obj_option_"+obj_id+"++");
					item_num++;
				}else if(rt[0]=="unbooked"){
					//itemobj.style.background = "#C7E7FF";
					itemobj.className = "item_price";
					item_prices -= price;
					option_prices = parseFloat(rt[1]);
					eval("obj_option_"+obj_id+"--");
					item_num--;
				}else if(rt[0]=="unavailable"){
					//itemobj.style.background = "#B5B5B5";
					itemobj.innerHTML = "unavailable";
					itemobj.className = "item_price_grey";
					checkobj.style.visibility = 'hidden';
					option_prices = parseFloat(rt[1]);
				}else if(rt[0]=="past"){
					alert(cannt_book_past);
					checkobj.checked = false;
				}
				item_prices = roundfloat(item_prices);
				option_prices = roundfloat(option_prices);
				total_prices = item_prices + option_prices;
				document.getElementById("item_prices").innerHTML = "€ "+item_prices;
				document.getElementById("option_prices").innerHTML = "€ "+option_prices;
				document.getElementById("total_prices").innerHTML = "€ "+ total_prices;
				xmlHttp = null;
				if(item_prices>0||item_num>0){
					document.getElementById("book_button").style.display = '';
				}else{
					document.getElementById("book_button").style.display = 'none';
				}
				checkOptionDisabled(obj_id);
			}
		}
	}
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function checkItemAll(obj_id)
{
	predate = document.form.predate.value;
	if(predate<tday && canpast<1){
		alert(this_day_cannt_book);
		document.getElementById("obj_"+obj_id+"_all").checked = false;
		return false;
	}
	var flag = document.getElementById("obj_"+obj_id+"_all").checked;
	for(i=0;i<obj_item[obj_id].length;i++){
		var itemobj = document.getElementById("item_"+obj_id+"_"+i);
		if(itemobj.checked != flag){
			checkitem(obj_id,obj_item[obj_id][i],i,obj_price[obj_id][i]);
			itemobj.checked = flag;
		}
	}
}

function validate_email(field)
{
	if(field==""){
		return false;
	}
	//var emailtest=/^[a-z]([a-z0-9\.]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[\.][a-z]{2,3}([\.][a-z]{2,10})?$/i;
	apos=field.indexOf("@");
	dotpos=field.lastIndexOf(".");
	if(apos<1 || dotpos-apos<2) 
	//if(emailtest.test(field))
		return false; 
	else
		return true;
}

function checkOptionDisabled(obj_id)
{
	if(eval("obj_option_"+obj_id+">0")){
		for(i=0;i<obj_otions[obj_id].length;i++){
			document.getElementById(obj_otions[obj_id][i]).disabled = false;
		}	
	}else{
		for(i=0;i<obj_otions[obj_id].length;i++){
			document.getElementById(obj_otions[obj_id][i]).disabled = true;
			if(document.getElementById(obj_otions[obj_id][i]).type=="text"){
				document.getElementById(obj_otions[obj_id][i]).value = '';
			}else if(document.getElementById(obj_otions[obj_id][i]).type=="checkbox"){
				document.getElementById(obj_otions[obj_id][i]).checked = false;
			}

		}
	}
}

function roundfloat(v)
{
	return Math.round(v*100)/100;
}
