/**
 * ajax.js
 * processing ajax request
 * @author bmw748 <bmw748@zeroneit.com>
 * @copyright 
 * @version 1.0
 */

function ajax_item(e){if(typeof e=='string')e=document.getElementById(e);return e};
function collect(a,f){var n=[];for(var i=0;i<a.length;i++){var v=f(a[i]);if(v!=null)n.push(v)}return n};

ajax={};
ajax.x=function(){try{return new ActiveXObject('Msxml2.XMLHTTP')}catch(e){try{return new ActiveXObject('Microsoft.XMLHTTP')}catch(e){return new XMLHttpRequest()}}};
ajax.serialize=function(f)
  {
  var g=function(n)
    {
    return f.getElementsByTagName(n)
    };
  var nv=function(e)
    {
    if(e.name)
      {
      return encodeURIComponent(e.name)+'='+encodeURIComponent(e.value);
      } else {return '';}
    };
  var i=collect(g('input'),function(i){if((i.type!='radio'&&i.type!='checkbox')||i.checked)return nv(i)});var s=collect(g('select'),nv);var t=collect(g('textarea'),nv);return i.concat(s).concat(t).join('&');
  };
  
ajax.send=function(u,f,m,a){var x=ajax.x();x.open(m,u,true);x.onreadystatechange=function(){if(x.readyState==4)f(x.responseText)};if(m=='POST')x.setRequestHeader('Content-type','application/x-www-form-urlencoded');x.send(a)};
ajax.get=function(url,func){ajax.send(url,func,'GET')};
ajax.gets=function(url){var x=ajax.x();x.open('GET',url,false);x.send(null);return x.responseText};
ajax.post=function(url,func,args){ajax.send(url,func,'POST',args)};
ajax.update=function(url,elm){var e=ajax_item(elm);var f=function(r){e.innerHTML=r};ajax.get(url,f)};
ajax.submit=function(url,elm,frm){var e=ajax_item(elm);var f=function(r){e.innerHTML=r};ajax.post(url,f,ajax.serialize(frm))};

var share_type;
//click location on map
function onMapLocation(id)
{
	ajax.post("actions/ajaxprocess.php", setlocationviewresults, "setlocationview=true&id="+id);
}

var setlocationviewresults = function(results)
{
}

var getallresults = function(results)
{
	if (document.getElementById("expandResult") != null)
		document.getElementById("expandResult").innerHTML = "";
	document.getElementById("allmeta").innerHTML = results;

	if (document.getElementById("expand_link") != null)
		document.getElementById("expand_link").innerHTML = "Go More";
}

var getlocationresults = function(results)
{
	if (document.getElementById("metalocation").style.display == "none")
		document.getElementById("metalocation").style.display = "inline";
	if (document.getElementById("searchTable") != null)
	{
		document.getElementById("searchTable").style.display = "none";	
	}
	document.getElementById("metalocation").innerHTML = results;
}

var getarticleresults = function(results)
{
	if (document.getElementById("expandResult") != null)
		document.getElementById("expandResult").innerHTML = "";
	if (document.getElementById("metaarticle").style.display == "none")
		document.getElementById("metaarticle").style.display = "inline";

	document.getElementById("metaarticle").innerHTML = results;
	document.getElementById("filterResult").innerHTML = "";
}

function itemCheck(obj)
{
	if (obj.src.indexOf("unchecked") != -1)
		obj.src = "images/ajax/checked.gif";
	else
		obj.src = "images/ajax/unchecked.gif";
	
	var field = "";
	var oGpsCheck = document.getElementById("gpsCheck");
	var oArticleCheck = document.getElementById("articleCheck");
	var oVideoCheck = document.getElementById("videoCheck");
	var oPhotoCheck = document.getElementById("photoCheck");

	if (oGpsCheck.src.indexOf("unchecked") == -1)
	{
		if (field == "")
			field += "gps"; 
		else 
			field += ",gps"; 
	}
	if (oArticleCheck.src.indexOf("unchecked") == -1)
	{
		if (field == "")
			field += "article"; 
		else 
			field += ",article"; 
	}
	if (oVideoCheck.src.indexOf("unchecked") == -1)
	{
		if (field == "")
			field += "video"; 
		else 
			field += ",video"; 
	}
	if (oPhotoCheck.src.indexOf("unchecked") == -1)
	{
		if (field == "")
			field += "photo"; 
		else 
			field += ",photo"; 
	}
	var loc_id = document.getElementById("loc_id1").value;
	document.getElementById("filterResult").innerHTML = "<img src='images/ajax/waiting.gif'>";
	ajax.post("actions/ajaxprocess.php", getarticleresults, "metaarticle=true&id="+loc_id+"&curpage=1&sort_field="+document.getElementById("sort_field").value+"&field="+field);
}

function change_over_image(obj)
{
	var src, fpathname;
	if (obj.src.indexOf("focus") != -1)
	{
		src = obj.src;
		fpathname = src.substring(0, src.length - 10);
		obj.src = fpathname + ".gif";
	} else {
		src = obj.src;
		fpathname = src.substring(0, src.length - 4);
		obj.src = fpathname + "_focus.gif";
	}
}

// click navigate button on map
function navigate_loc_article(obj)
{
	var field = "";
	var oGpsCheck = document.getElementById("gpsCheck");
	var oArticleCheck = document.getElementById("articleCheck");
	var oVideoCheck = document.getElementById("videoCheck");
	var oPhotoCheck = document.getElementById("photoCheck");
	
	if (oGpsCheck != null && oArticleCheck != null && oVideoCheck != null && oPhotoCheck != null)
	{
		if (oGpsCheck.src.indexOf("unchecked") == -1)
		{
			if (field == "")
				field += "gps"; 
			else 
				field += ",gps"; 
		}
		if (oArticleCheck.src.indexOf("unchecked") == -1)
		{
			if (field == "")
				field += "article"; 
			else 
				field += ",article"; 
		}
		if (oVideoCheck.src.indexOf("unchecked") == -1)
		{
			if (field == "")
				field += "video"; 
			else 
				field += ",video"; 
		}
		if (oPhotoCheck.src.indexOf("unchecked") == -1)
		{
			if (field == "")
				field += "photo"; 
			else 
				field += ",photo"; 
		}
	}

	var art_count = parseInt(document.getElementById("art_count").value);
	var cur_art_pos = document.getElementById("art_pos").value;
	var loc_id = document.getElementById("loc_id").value;
	var type;

	if (cur_art_pos == "")
	{
		return;
	} else {
		cur_art_pos = parseInt(cur_art_pos);
		if (obj.src.indexOf("next") != -1)
		{	
			type = "next";
			cur_art_pos++;
			if (cur_art_pos >= art_count)
				cur_art_pos = 0;
			document.getElementById("art_pos").value = cur_art_pos;
		} else
		{
			type = "prev";
			cur_art_pos--;
			if (cur_art_pos < 0 )
				cur_art_pos = art_count - 1;
			document.getElementById("art_pos").value = cur_art_pos;
		}
		document.getElementById("map_meta_location").innerHTML = "<img src='images/ajax/waiting_b.gif'>";
		if (field != "")
			ajax.post("actions/ajaxprocess.php", getlocarticleresults, "navartonmap=true&loc_id="+loc_id+"&cur_art_pos="+cur_art_pos+"&field="+field);
		else 
			ajax.post("actions/ajaxprocess.php", getlocarticleresults, "navartonmap=true&loc_id="+loc_id+"&cur_art_pos="+cur_art_pos);
	}
}

var getlocarticleresults = function(results)
{
	document.getElementById("map_meta_location").innerHTML = results;
}

// click navigate button on map
function navigate_article(obj)
{
	var field = "";
	var oGpsCheck = document.getElementById("gpsCheck");
	var oArticleCheck = document.getElementById("articleCheck");
	var oVideoCheck = document.getElementById("videoCheck");
	var oPhotoCheck = document.getElementById("photoCheck");

	if (oGpsCheck.src.indexOf("unchecked") == -1)
	{
		if (field == "")
			field += "gps"; 
		else 
			field += ",gps"; 
	}
	if (oArticleCheck.src.indexOf("unchecked") == -1)
	{
		if (field == "")
			field += "article"; 
		else 
			field += ",article"; 
	}
	if (oVideoCheck.src.indexOf("unchecked") == -1)
	{
		if (field == "")
			field += "video"; 
		else 
			field += ",video"; 
	}
	if (oPhotoCheck.src.indexOf("unchecked") == -1)
	{
		if (field == "")
			field += "photo"; 
		else 
			field += ",photo"; 
	}

	if (document.getElementById("art_count1") == null)
	{
		return;
	}
	var art_count1 = parseInt(document.getElementById("art_count1").value);
	var cur_art_pos1 = document.getElementById("art_pos1").value;
	var loc_id1 = document.getElementById("loc_id1").value;
	var field1 = document.getElementById("sort_field").value;
	var type1;
	if (cur_art_pos1 == "")
	{
		return;
	} else {
		cur_art_pos1 = parseInt(cur_art_pos1);
		if (obj.src.indexOf("next") != -1)
		{	
			type1 = "next";
			cur_art_pos1++;
			if (cur_art_pos1 >= art_count1)
				cur_art_pos1 = 0;
		} else
		{
			type1 = "prev";
			cur_art_pos1--;
			if (cur_art_pos1 < 0 )
				cur_art_pos1 = art_count1 - 1;
		}
		document.getElementById("navartresult").innerHTML = "<img src='images/ajax/waiting.gif'>";
		ajax.post("actions/ajaxprocess.php", getarticleresults, "metaarticle=true&id="+loc_id1+"&cur_art_pos="+cur_art_pos1+"&sort_field="+field1+"&curpage=1&field="+field);
	}
}

// click expand button on map popup window
function expand_article(locid, artpos, arttype, obj)
{
	if (obj != null) {
		if (obj.innerHTML.indexOf("More") != -1) {
			expand_more();
			return;
		}
	}

	var field = "";
	var oGpsCheck = document.getElementById("gpsCheck");
	var oArticleCheck = document.getElementById("articleCheck");
	var oVideoCheck = document.getElementById("videoCheck");
	var oPhotoCheck = document.getElementById("photoCheck");

	if (oGpsCheck != null && oArticleCheck != null && oVideoCheck != null && oPhotoCheck != null)
	{
		if (oGpsCheck.src.indexOf("unchecked") == -1)
		{
			if (field == "")
				field += "gps"; 
			else 
				field += ",gps"; 
		}
		if (oArticleCheck.src.indexOf("unchecked") == -1)
		{
			if (field == "")
				field += "article"; 
			else 
				field += ",article"; 
		}
		if (oVideoCheck.src.indexOf("unchecked") == -1)
		{
			if (field == "")
				field += "video"; 
			else 
				field += ",video"; 
		}
		if (oPhotoCheck.src.indexOf("unchecked") == -1)
		{
			if (field == "")
				field += "photo"; 
			else 
				field += ",photo"; 
		}
	}
	
	if (locid == null)
	{
		var cur_art_pos = document.getElementById("art_pos").value;
		var loc_id = document.getElementById("loc_id").value;
	} else {
		var cur_art_pos = artpos;
		var loc_id = locid;
	}
	
	setCookie("loaded_loc", loc_id, 60);
	
	var sort_field_obj = document.getElementById("sort_field");
	if (sort_field_obj != null)
		var sort_field = sort_field_obj.value;
	else
		var sort_field = "id";
	
	var oHdn = document.getElementById("cur_art_id");
	if (oHdn != null || artpos != null)
	{
		if (arttype == "bestnew")
			document.getElementById("bestnewexpandResult").innerHTML = "<img src='images/ajax/waiting.gif'>";
		else if (arttype == "mostpopular")
			document.getElementById("mostpopularexpandResult").innerHTML = "<img src='images/ajax/waiting.gif'>";
		else if (arttype == "featured")
			document.getElementById("featuredexpandResult").innerHTML = "<img src='images/ajax/waiting.gif'>";
		else
			document.getElementById("expandResult").innerHTML = "<img src='images/ajax/waiting.gif'>";
		if (field != "")
			ajax.post("actions/ajaxcontent.php", getallresults, "allmeta=true&cur_art_pos="+cur_art_pos+"&id="+loc_id+"&sort_field="+sort_field+"&curpage=1&field"+field);
		else
			ajax.post("actions/ajaxcontent.php", getallresults, "allmeta=true&cur_art_pos="+cur_art_pos+"&id="+loc_id+"&sort_field="+sort_field+"&curpage=1");
	} else {
		if (locid != null)
			document.getElementById("locationexpandResult").innerHTML = "<img src='images/ajax/waiting.gif'>";
		else
			document.getElementById("expandResult").innerHTML = "<img src='images/ajax/waiting.gif'>";
		ajax.post("actions/ajaxcontent.php", getallresults, "allmeta=true&id="+loc_id+"&sort_field="+sort_field+"&curpage=1");
	}

	if ($j("#chkPhoto").attr("checked") == true) {
		photoViewMap('true');
	}
	return;
}

function expand_more(id, llat, llong)
{
	var clat, clong;
	if (id == null) {
		clat = document.getElementById("loc_lat").value;
		clong = document.getElementById("loc_long").value;
		map.setCenter(new GLatLng(clat, clong), map.getZoom() + 3);
	} else {
		map.clearOverlays();
		clat = llat;
		clong = llong;
		map.setCenter(new GLatLng(clat, clong), map.getZoom() + 3);
	}
}

//article for location sort
function article_sort(obj, locid, field)
{
	var oUl = document.getElementById("sortfield_ul");
	var count = oUl.childNodes.length;
	for(i = 0; i < count; i++)
	{	
		var childObj = oUl.childNodes.item(i);
		if (childObj.tagName != null)
		{
			childObj.style.color = "#000000";
		}
	}
	obj.style.color = "#FF0000";
	document.getElementById("filterResult").innerHTML = "<img src='images/ajax/waiting.gif'>";
	ajax.post("actions/ajaxprocess.php", getarticleresults, "metaarticle=true&id="+locid+"&sort_field="+field+"&curpage=1");
}

// set rating in article
function setContentRate(count, id, type, arttype)
{
	if (arttype == null) {
		document.getElementById("articlerating").innerHTML = "<img src='images/ajax/waiting.gif'>";
		ajax.post("actions/ajaxprocess.php", setContentRateResult, "setcontentrate=true&count="+count+"&id="+id+"&type="+type);
		ajax.post("actions/ajaxprocess.php", viewContentRateNum, "viewcontentratenum=true&id="+id+"&type="+type);
	} else {
		document.getElementById(arttype).innerHTML = "<img src='images/ajax/waiting.gif'>";
		if (arttype == "featured")
			ajax.post("actions/ajaxprocess.php", setMostFeaturedRateResult, "setcontentrate=true&arttype="+arttype+"&count="+count+"&id="+id+"&type="+type);
		else if (arttype == "mostpopular")
			ajax.post("actions/ajaxprocess.php", setMostPopularRateResult, "setcontentrate=true&arttype="+arttype+"&count="+count+"&id="+id+"&type="+type);
		else
			ajax.post("actions/ajaxprocess.php", setBestNewRateResult, "setcontentrate=true&arttype="+arttype+"&count="+count+"&id="+id+"&type="+type);
	}
}

var setMostFeaturedRateResult = function(results)
{
	document.getElementById("featured").innerHTML = results;
}

var setMostPopularRateResult = function(results)
{
	document.getElementById("mostpopular").innerHTML = results;
}

var setBestNewRateResult = function(results)
{
	document.getElementById("bestnew").innerHTML = results;
}

var setContentRateResult = function(results)
{
	document.getElementById("articlerating").innerHTML = results;
}
var viewContentRateNum = function(results)
{
	document.getElementById("articleratingnum").innerHTML = results;
}

// set rating in location
function setLocationRate(count, locid)
{
	document.getElementById("locationrating").innerHTML = "<img src='images/ajax/waiting.gif'>";
	ajax.post("actions/ajaxprocess.php", setLocationRateResult, "setlocationrate=true&count="+count+"&locid="+locid);
}

var setLocationRateResult = function(results)
{
	document.getElementById("locationrating").innerHTML = results;
}

// set inappropriate in article
function setInappropriate(artid)
{
	document.getElementById("setInappropriateResult").innerHTML = "<img src='images/ajax/waiting.gif'>";
	ajax.post("actions/ajaxprocess.php", setInappropriateResult, "setinappropriate=true&artid="+artid);
}

var setInappropriateResult = function(results)
{
	document.getElementById("setInappropriateResult").innerHTML = results;
}

//pagenavigation
function page_navigation(curpage)
{
	var field = "";
	var oGpsCheck = document.getElementById("gpsCheck");
	var oArticleCheck = document.getElementById("articleCheck");
	var oVideoCheck = document.getElementById("videoCheck");
	var oPhotoCheck = document.getElementById("photoCheck");

	if (oGpsCheck.src.indexOf("unchecked") == -1)
	{
		if (field == "")
			field += "gps"; 
		else 
			field += ",gps"; 
	}
	if (oArticleCheck.src.indexOf("unchecked") == -1)
	{
		if (field == "")
			field += "article"; 
		else 
			field += ",article"; 
	}
	if (oVideoCheck.src.indexOf("unchecked") == -1)
	{
		if (field == "")
			field += "video"; 
		else 
			field += ",video"; 
	}
	if (oPhotoCheck.src.indexOf("unchecked") == -1)
	{
		if (field == "")
			field += "photo"; 
		else 
			field += ",photo"; 
	}

	if (document.getElementById("art_count1") == null)
	{
		return;
	} else {
		var cur_art_pos = document.getElementById("art_pos1").value;
		var loc_id = document.getElementById("loc_id1").value;
		var field1 = document.getElementById("sort_field").value;
		document.getElementById("navartresult").innerHTML = "<img src='images/ajax/waiting.gif'>";
		ajax.post("actions/ajaxprocess.php", getpageresults, "pagearticle=true&id="+loc_id+"&cur_art_pos="+cur_art_pos+"&sort_field="+field1+"&curpage="+curpage+"&field="+field);
	}
}

var getpageresults = function(results)
{
	document.getElementById("navartresult").innerHTML = "Content " + (parseInt(document.getElementById("art_pos1").value) + 1) + " Of " + document.getElementById("art_count1").value;
	document.getElementById("pageresult").innerHTML = results;
}

//full detail location metadata
function full_detail(obj, locid)
{
	if (obj.innerHTML.indexOf("Full") != -1)
	{
		document.getElementById("filterResult").innerHTML = "<img src='images/ajax/waiting.gif'>";
		ajax.post("actions/ajaxprocess.php", getfulldetaillocation, "fulldetail=true&id="+locid);
	} else {
		document.getElementById("filterResult").innerHTML = "<img src='images/ajax/waiting.gif'>";
		ajax.post("actions/ajaxprocess.php", getfulldetaillocation, "fulldetail=true");
	}
}

var getfulldetaillocation = function(results)
{
	document.getElementById("fulldetail").innerHTML = results;
	document.getElementById("filterResult").innerHTML = "";
	if (document.getElementById("fulldetailobj").innerHTML.indexOf("Full") != -1)
	{
		document.getElementById("fulldetailobj").innerHTML = "<b>Close Details</b>";
		document.getElementById("fulldetail").style.display = "inline";
	} else {
		document.getElementById("fulldetailobj").innerHTML = "<b>Full Details</b>";
		document.getElementById("fulldetail").style.display = "none";
	}
}

//view Video, Photo, GPS data
function viewItem(id, type)
{
	document.getElementById("viewItemResult").innerHTML = "<img src='images/ajax/waiting.gif'>";
	ajax.post("actions/ajaxprocess.php", viewItemResult, "viewitem=true&id="+id+"&type="+type);
}

var viewItemResult = function(results)
{
	document.getElementById("art_body").innerHTML = results;
	document.getElementById("viewItemResult").innerHTML = "";
}

function mouseoverRate(obj)
{
	obj.style.display = 'none';
	document.getElementById(obj.id+'_rate').innerHTML = 'Sign in to rate.';
	document.getElementById(obj.id+'_rate').style.display = 'inline';				
}
function mouseoutRate(obj)
{
	obj.style.display = 'none';
	document.getElementById(obj.id.substring(0, obj.id.length - 5)).style.display = 'inline';
}

/**
 ** added by bmw748@gmail.com
 ** open share box
 **/
function openShare(type)
{
	document.getElementById("maptype").value = map.getCurrentMapType().getName(true);
	document.getElementById("zoomlevel").value = map.getZoom();
	share_type = type;
	$j.get("templates/share.htm", function(data){
		$j(data).modal({
			close: false,
			overlayId: 'share-overlay',
			containerId: 'share-container',
			onOpen: share.open,
			onShow: share.show,
			onClose: share.close
		});
	});
}

/**
 ** added by bmw748@gmail.com
 ** open new location window
 **/
function openNewLocation()
{
	$j.get("templates/newlocation.htm", function(data){
		$j(data).modal({
			close: false,
			overlayId: 'newlocation-overlay',
			containerId: 'newlocation-container',
			onOpen: newlocation.open,
			onShow: newlocation.show,
			onClose: newlocation.close
		});
	});
}

function setCookie(name,value,minute) {
	if (minute) {
		var date = new Date();
		date.setTime(date.getTime()+(minute*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else {
		var date = new Date();
		date.setTime(date.getTime()+(5*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	document.cookie = name + "=" + value + expires + "; path=/";
}
function getCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function deleteCookie(name) {
	setCookie(name,"",-1);
}

function searchKeyword(e) {
	var keyCode	= window.event ? window.event.keyCode : e.which;
	if (keyCode == 13)
		document.search.submit();
}

/**
 ** Add location into article at article editor
 **/
function addSelectLocation(locid) {
	$j('#sellocationresult').html('<img src="images/ajax/waiting.gif">');
	ajax.post("actions/ajaxprocess.php", getSelectLocation, "addselectlocation=true&locid="+locid);
	//ajax.post("actions/ajaxprocess.php", getDivSelectLocation, "divselectlocation=true");
}

/**
 ** Delete location into article at article editor
 **/
function delSelectLocation(locid) {
	$j('#sellocationresult').html('<img src="images/ajax/waiting.gif">');
	ajax.post("actions/ajaxprocess.php", getSelectLocation, "delselectlocation=true&locid="+locid);
	//ajax.post("actions/ajaxprocess.php", getDivSelectLocation, "divselectlocation=true");
}

var getSelectLocation = function(results)
{
	if (results != '') {
		$j('#sellocations').html(results);
		ajax.post("actions/ajaxprocess.php", getDivSelectLocation, "divselectlocation=true");
	}
}

var getDivSelectLocation = function(results)
{
	$j('#sellocationresult').html('');
	$j('#divsellocationlist').html(results);
}

/**
 ** search article
 **/
function articleSort(sortby) {
	document.getElementById('sortby').value = sortby;
	var search = document.getElementById("search").value;
	var option = document.getElementById("searchoption").value;
	var sortby = document.getElementById("sortby").value;
	$j('#search_article_result').html('<img src="images/ajax/waiting.gif">');
	ajax.post("actions/ajaxprocess.php", getArticlesResult, "articlesearch=true&keyword="+search+"&searchoption="+option+"&sortby="+sortby);
}

function articleSearch(option) {
	document.getElementById('searchoption').value = option;
	var search = document.getElementById("search").value;
	var sortby = document.getElementById("sortby").value;
	ajax.post("actions/ajaxprocess.php", getArticlesResult, "articlesearch=true&keyword="+search+"&searchoption="+option+"&sortby="+sortby);
}

function articleEnterSearch(e) {
	var search = document.getElementById("search").value;
	var option = document.getElementById("searchoption").value;
	var sortby = document.getElementById("sortby").value;
	var keyCode	= window.event ? window.event.keyCode : e.which;
	if (keyCode == 13) {
		$j('#search_article_result').html('<img src="images/ajax/waiting.gif">');
		ajax.post("actions/ajaxprocess.php", getArticlesResult, "articlesearch=true&keyword="+search+"&searchoption="+option+"&sortby="+sortby);
	}
}

var getArticlesResult = function(results)
{
	$j('#article_result').html(results);
	$j('#search_article_result').html('');
}

/**
 ** add article link into article editor
 **/
function setArticleLink(title, link) {
	var aLink = "<a href='?q=itemview&url=" + link + "'>" + title + "</a>";
	tinyMCE.get('body').setContent(tinyMCE.get('body').getContent() + aLink);
}
