
var GMiF_Type = 'standalone';
var nsid;
var global_photos = new Array();
var photo_id;
// var IE4=(document.all);
if( typeof(XMLHttpRequest) == "undefined" ) IE4 = true;
else IE4 = false;

var re = /^http:\/\/.*\/maps\/([^\/]*)\/?(\d*)\/?/;
var ary = re.exec(document.location);
var username = ary[1];
var photoid = ary[2];

re = /zoom=(\d+)/;
ary = re.exec(document.location.search);
var _ZOOM = (ary)? 1*ary[1] : 8;

if (typeof DOMParser == "undefined") {
   DOMParser = function () {}

   DOMParser.prototype.parseFromString = function (str, contentType) {
      if (typeof ActiveXObject != "undefined") {
         var d = new ActiveXObject("MSXML.DomDocument");
         d.loadXML(str);
         return d;
      } else if (typeof XMLHttpRequest != "undefined") {
         var req = new XMLHttpRequest;
         req.open("GET", "data:" + (contentType || "application/xml") +
                         ";charset=utf-8," + encodeURIComponent(str), false);
         if (req.overrideMimeType) {
            req.overrideMimeType(contentType);
         }
         req.send(null);
         return req.responseXML;
      }
   }
}

var handle_getPhotoStream = function(result) {
    var parser = new DOMParser();
    var dom = parser.parseFromString(result, "application/xml");
    var photos = dom.getElementsByTagName('photo');
    var tags = dom.getElementsByTagName('tag');
    var server = photos[0].getAttribute('server');
    var secret = photos[0].getAttribute('secret');
    var title = (photoid!='' && dom.getElementsByTagName('title').item(0).firstChild) ? dom.getElementsByTagName('title').item(0).firstChild.data : photos[0].getAttribute('title');
    photo_id = (photoid!='') ? photoid : photos[0].getAttribute('id');
//  alert( photoid +','+ photo_id);
    global_photos[photo_id] = new Object();
    global_photos[photo_id].id = photo_id;
    global_photos[photo_id].server = server;
    global_photos[photo_id].secret = secret;
    global_photos[photo_id].url = '/photos/' + username + '/' + photo_id + '/';
    global_photos[photo_id].ownersUrl = '/photos/' + username + '/';
    global_photos[photo_id].tagsA = [];
    global_photos[photo_id].tags_rawA = [];
    global_photos[photo_id].isPublic = 1;
    global_photos[photo_id].title = title;
    global_photos[photo_id].description = '';
    global_photos[photo_id].isOwner = false;
    for(var i=0;i<tags.length;i++) {
	global_photos[photo_id].tags_rawA.push(tags[i].getAttribute('raw'));
    }
    global_photos[photo_id].xmlhttpRequest = function(req) {
//	req.url = 'http://flickr.yuan.cc/maps/xml_proxy.php?' + req.url;
	req.url = 'http://' + document.location.hostname + '/maps/xml_proxy.php?' + req.url;
	var xmlhttpChange = function() {
		if (xmlhttp.readyState==4) if (xmlhttp.status==200) req.onload(xmlhttp);
	}
	if (window.XMLHttpRequest) {
	    var xmlhttp = new XMLHttpRequest(req);
	    xmlhttp.onreadystatechange = xmlhttpChange;
	    xmlhttp.open(req.method, req.url, true);
	    xmlhttp.send(null);
	} else if (window.ActiveXObject) {
	    var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	    if (xmlhttp) {
		xmlhttp.onreadystatechange = xmlhttpChange;
		xmlhttp.open("GET",req.url,true);
		xmlhttp.send();
	    }
	}
    };
    global_photos[photo_id].getValue = _get_cookie;
    global_photos[photo_id].setValue = _set_cookie;

    var js = document.createElement("script");
    js.language = "javascript";
    js.src = "http://webdev.yuan.cc/gmif/gmif_v3.5.js";
    js.src = "http://webdev.yuan.cc/gmif/gmif_v4.0.js";
//    document.body.appendChild(js);

    if( !IE4 ) document.body.appendChild(js);
    else loadCreateEl(js.src);
// loadCreateInnerHTML(js.src);
}

var url = 'http://www.flickr.com/services/rest/?method=flickr.urls.lookupUser&api_key=bc60075f4ce963fab3fac473d0741fe8&url=http://www.flickr.com/photos/'+ username;
// url = 'http://flickr.yuan.cc/maps/xml_proxy.php?' + url;
url = 'http://' + document.location.hostname + '/maps/xml_proxy.php?' + url;
if( IE4 ) var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
else var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState==4) {
	if (xmlhttp.status==200) {
	    var parser = new DOMParser();
	    var dom = parser.parseFromString(xmlhttp.responseText, "application/xml");
	    var users = dom.getElementsByTagName('user');
	    nsid = users[0].getAttribute('id');
	    if( photoid == '' ) 
//		url = 'http://www.flickr.com/services/rest/?method=flickr.people.getPublicPhotos&api_key=bc60075f4ce963fab3fac473d0741fe8&per_page=1&page=1&user_id=' + nsid;
		url = 'http://www.flickr.com/services/rest/?method=flickr.photos.search&api_key=bc60075f4ce963fab3fac473d0741fe8&per_page=1&page=1&user_id=' + nsid + '&tags=geotagged';
	    else url = 'http://www.flickr.com/services/rest/?method=flickr.photos.getInfo&api_key=bc60075f4ce963fab3fac473d0741fe8&photo_id=' + photoid;
//	    url = 'http://flickr.yuan.cc/maps/xml_proxy.php?' + url;
	    url = 'http://' + document.location.hostname + '/maps/xml_proxy.php?' + url;
	    if( IE4 ) var xmlhttp2 = new ActiveXObject("Microsoft.XMLHTTP");
	    else var xmlhttp2 = new XMLHttpRequest();
	    xmlhttp2.onreadystatechange = function() {
		if (xmlhttp2.readyState==4) {
		    if (xmlhttp2.status==200) {
			handle_getPhotoStream(xmlhttp2.responseText);
		    }
		}
	    }
	    xmlhttp2.open('GET', url, true);
	    if(IE4) xmlhttp2.send();
	    else xmlhttp2.send(null);
	}
    }
}

function init() {

    if( username == '' ) {
//	document.location = 'http://maps.yuan.cc/';
	var title = document.getElementById('greeting');
	title.innerHTML = 'Standalone GMiF';
	var text = document.getElementById('divajax');
	text.style.textAlign = 'left';
	text.style.width = '600px';
	var str = '<hr>';
	str +='Welcome to use GMiF standalone version. <p>GMiF is a Greasemonkey script for Flickr. This site is an standalone version of GMiF and shares the same codes of GMiF. We provide permanent URLs for your geotagged photos. To use the service, please follow the format to build your own GMiF URL.</p>'; 
	str +='If your flickr URL is';
	str +='<blockquote><b><i>http://www.flickr.com/photos/ckyuan/ </i></b></blockquote>';
	str +='Then your flickr map URL is';
	str +='<blockquote><b><i>http://flickr.yuan.cc/maps/ckyuan/ </i></b></blockquote>';
	str += 'Or you want to guide users to a specific photo ';
	str +='<blockquote><b><i>http://www.flickr.com/photos/ckyuan/23045446/ </i></b></blockquote>';
	str +='Then the map of flickr photo URL is';
	str +='<blockquote><b><i>http://flickr.yuan.cc/maps/ckyuan/23045446/ </i></b></blockquote>';
	str += 'For more information, please visit the following sites:';
	str += '<ul>';
	str += '<li><a href="http://webdev.yuan.cc/gmif/">GMiF Official site</a></li>';
	str += '<li><a href="http://webdev.yuan.cc/">Yuan.CC Web Experiments</a></li>';
	str += '</ul>';
	text.innerHTML = str;
	return;
    }
    xmlhttp.open('GET', url, true);
    if(IE4) xmlhttp.send();
    else xmlhttp.send(null);
}

function loadCreateInnerHTML(jssrc) {
    div = document.getElementById("divajax") ;
    div.innerHTML = '<scr' + 'ipt type="text/javascript" id="jsajax2"></sc' + 'ript>' ;
    js = document.getElementById("jsajax2") ;
            
    if(js) {
        js.src = jssrc ;
    }
}
function loadCreateEl(jssrc) {
    divj = document.getElementById('divajax');
    var newEl = document.createElement('script');
    //textEl.setAttribute("type","text/javascript");
    //textEl.setAttribute("id","jsajax2");
    newEl.setAttribute("src", jssrc);
    if(divj) divj.appendChild(newEl);
}


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

function _get_cookie(name) {  
//  alert(name + '......' + document.cookie);
    var arg = name + "=";  
    var alen = arg.length;  
    var clen = document.cookie.length;  
    var i=0,j;  
    while (i < clen) {    
	j = i + alen;    
	if (document.cookie.substring(i, j) == arg)      
	return getCookieVal (j);    
	i = document.cookie.indexOf(" ", i) + 1;    
	if (i == 0) break;   
    }  
    return null;
}

function _set_cookie(name, value) {  
//  alert(document.cookie);
    var expDays = 300;
    var exp = new Date(); 
    exp.setTime(exp.getTime() + (expDays*24*60*60*1000));
    var argv = _set_cookie.arguments;  
    var argc = _set_cookie.arguments.length;  
//    var expires = (argc > 2) ? argv[2] : null;  
    var expires = exp;
    var path = (argc > 3) ? argv[3] : null;  
    var domain = (argc > 4) ? argv[4] : null;  
    var domain = 'flickr.yuan.cc';
    var path = '/maps/';
    var secure = (argc > 5) ? argv[5] : false;  
    document.cookie = name + "=" + escape (value) + ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) + 
	((path == null) ? "" : ("; path=" + path)) +  
	((domain == null) ? "" : ("; domain=" + domain)) +    
	((secure == true) ? "; secure" : "");
//  alert(expires + '||' + document.cookie);
}

function DeleteCookie (name) {  
    var exp = new Date();  
    exp.setTime (exp.getTime() - 1);  
    var cval = _get_cookie(name);  
    document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}


