String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };

function searchphoto(pageno, text) {
	loading();
	if (typeof pageno=="undefined")
		pageno=1;
	
	if (typeof text=="undefined")
		text = document.getElementById('phototext').value;
		
	text = text.toString().trim();		
	var scripturl = "http://api.flickr.com/services/rest/?" +
	                "method=flickr.photos.search&api_key=e1d4f75a3b86a33c426d05fe2fa263ac&" +
	                "min_upload_date=949334400&" +
	                "bbox=" + encodeURI("113.796387,22.136532,114.415741,22.550611") + 
	                "&machine_tag_mode=all&per_page=20&format=json" +
	                "&jsoncallback=searchphotofeedback" +
	                "&page=" + pageno;
	                
	if (text!="") {
		scripturl += "&text=" + encodeURI(text);
	}
	var headTag = document.getElementsByTagName('head')[0]; 
	var script = document.createElement('script'); 
	script.type = 'text/javascript'; 
	script.src = scripturl; 
	headTag.appendChild(script);
}

function buildPhotoPageLink(photosearchrs, phototext) {
	var divtag = document.createElement("div");
	var buildpage = function(pageno, pagetext) {
		var atag = document.createElement("a");
		atag.appendChild(document.createTextNode(pagetext));
		atag.href="#";
		atag.onclick = function() {
			searchphoto(pageno, phototext);
		}
		atags.push(atag);
		return atag;
	}
	var photofrom = ((parseInt(photosearchrs.photos.page)-1)*(parseInt(photosearchrs.photos.perpage))+1);
	var phototo = photofrom + photosearchrs.photos.photo.length - 1;
	divtag.appendChild(document.createTextNode(photofrom+"-"+phototo+"/"+photosearchrs.photos.total));		
	if (photosearchrs.photos.page!="1") {
		divtag.appendChild(document.createTextNode(" "));
		divtag.appendChild(buildpage(1,"<<"));
		divtag.appendChild(document.createTextNode(" "));
		divtag.appendChild(buildpage(parseInt(photosearchrs.photos.page)-1,"<"));
	}
	
	if (photosearchrs.photos.page!=photosearchrs.photos.pages) {
		divtag.appendChild(document.createTextNode(" "));
		divtag.appendChild(buildpage(parseInt(photosearchrs.photos.page)+1,">"));
		divtag.appendChild(document.createTextNode(" "));
		divtag.appendChild(buildpage(parseInt(photosearchrs.photos.pages),">>"));
	}
	
	return divtag;
}

function searchphotofeedback(photosearchrs) {
	endloading();
	var searchresultbox = document.getElementById('searchresultbox');
	MeUnload();
	searchresultbox.innerHTML="";
	if (photosearchrs.stat=="fail") {
		searchresultbox.innerHTML="搜尋失敗<br/>訊息: "+photosearchrs.message;
		return;	
	}
	if (photosearchrs.photos.photo.length==0) {
		searchresultbox.innerHTML="沒有搜尋結果";
	}
	else {
		searchresultbox.appendChild(document.createTextNode("找到"+photosearchrs.photos.total+"張相片"));
		searchresultbox.appendChild(buildPhotoPageLink(photosearchrs), document.getElementById('phototext').value.trim());
		var ul = document.createElement("ul");
		searchresultbox.appendChild(ul);
		for (var i=0; i<photosearchrs.photos.photo.length; i++) {
			var li = document.createElement("li");
			li.appendChild(createPhotoLink(photosearchrs.photos.photo[i]));
			ul.appendChild(li);
		}
	}
	var sourcediv = document.createElement("div");
	sourcediv.innerHTML = '資料來源: <a href="http://www.flickr.com/" target="_BLANK">Flickr</a>';
	searchresultbox.appendChild(sourcediv);
}

curPhotoObj = null;
function gotoPhoto(photoObj) {
	loading();
	var scripturl = "http://api.flickr.com/services/rest/?" +
	                "method=flickr.photos.getInfo&api_key=e1d4f75a3b86a33c426d05fe2fa263ac" +
	                "&photo_id="+photoObj.id +
	                "&format=json&jsoncallback=searchphotoobjfeedback";
	var headTag = document.getElementsByTagName('head')[0]; 
	var script = document.createElement('script'); 
	script.type = 'text/javascript'; 
	script.src = scripturl; 
	headTag.appendChild(script);
}

function searchphotoobjfeedback(photoObj) {
	endloading();
	photoObj = photoObj.photo;
	point = new GLatLng(photoObj.location.latitude,photoObj.location.longitude);
	map.setZoom(12);
	map.panTo(point);
	marker.setPoint(point);
	curLocationObj=null;
	curPhotoObj = photoObj
	curRestaurantObj=null;
	markerClicked();
}

function createPhotoLink(photoObj) {
	var atag = document.createElement("a");
	atag.href = "#";
	atag.onclick = function() {
		gotoPhoto(photoObj);
		return false;
	}
	var imgtag = document.createElement("img");
	imgtag.src = "http://farm" + photoObj.farm + ".static.flickr.com/" + photoObj.server + "/" + photoObj.id + "_" + photoObj.secret + "_s.jpg";
	atag.appendChild(imgtag);
	atag.appendChild(document.createElement("br"));
	atag.appendChild(document.createTextNode(photoObj.title));
	atags.push(atag);
	return atag;
}
