
	//<![CDATA[
    var centreLat = 0;
	var centreLon = 0;
    var initialZoom = 4;
    var imageWraps = false; //SET THIS TO false TO PREVENT THE IMAGE WRAPPING AROUND
    var map; //the GMap2 itself
	var mgr; //Marker Manager
	var marker_info;
	var html_arr;
	var marker_mov;

	/////////////////////
	//Custom projection
	/////////////////////
	function CustomProjection(a,b){
		this.imageDimension=65536;
		//this.imageDimension=99999;
		this.pixelsPerLonDegree=[];
		this.pixelOrigin=[];
		this.tileBounds=[];
		this.tileSize=256;
		this.isWrapped=b;
		var b=this.tileSize;
		var c=1;
		for(var d=0; d<a; d++){
			  var e=b/2;
			  this.pixelsPerLonDegree.push(b/360);
			  this.pixelOrigin.push(new GPoint(e,e));
			  this.tileBounds.push(c);
			  b*=2;
			  c*=2
        }
    }
 
    CustomProjection.prototype=new GProjection();
  
    CustomProjection.prototype.fromLatLngToPixel=function(latlng,zoom){
        var c=Math.round(this.pixelOrigin[zoom].x+latlng.lng()*this.pixelsPerLonDegree[zoom]);
        var d=Math.round(this.pixelOrigin[zoom].y+(-2*latlng.lat())*this.pixelsPerLonDegree[zoom]);
        return new GPoint(c,d)
    };

    CustomProjection.prototype.fromPixelToLatLng=function(pixel,zoom,unbounded){
        var d=(pixel.x-this.pixelOrigin[zoom].x)/this.pixelsPerLonDegree[zoom];
        var e=-0.5*(pixel.y-this.pixelOrigin[zoom].y)/this.pixelsPerLonDegree[zoom];
        return new GLatLng(e,d,unbounded)
    };

    CustomProjection.prototype.tileCheckRange=function(tile,zoom,tilesize){
        var tileBounds=this.tileBounds[zoom];
		if (tile.y<0 || tile.y >= tileBounds) {return false;}
		if (this.isWrapped) {
			if (tile.x<0 || tile.x>=tileBounds) { 
				tile.x = tile.x%tileBounds; 
				if (tile.x < 0) {tile.x+=tileBounds} 
			}
			//if(tile.y<0 || tile.y >= tileBounds){
				//tile.y = tile.y%tileBounds;
				//if(tile.y < 0){tile.y+=tileBounds}
			//}
			
		} else { 
			if (tile.x < 0 || tile.x>=tileBounds) {return false;}
		}  
		return true;
    }
      
    CustomProjection.prototype.getWrapWidth=function(zoom) {
        return this.tileBounds[zoom]*this.tileSize;
    }
////////////////////////////////////////////////////////////////////////////

    function customGetTileURL(a,b) {
      //converts tile x,y into keyhole string
		var c=Math.pow(2,b);
		var d=a.x;
		var e=a.y;
        var file_name="t";
        for(var g=0;g<b;g++){
            c=c/2;
            if(e<c){
                if(d<c){
					file_name+="q"
				}
                else{
					file_name+="r";
					d-=c;
				}
            }
            else{
                if(d<c){
					file_name+="t";
					e-=c;
				}
                else{
					file_name+="s";
					d-=c;
					e-=c;
				}
            }
        }
        return "works/"+file_name+".jpg"
    }


    function getWindowHeight() {
        if (window.self&&self.innerHeight) {
            return self.innerHeight;
        }
        if (document.documentElement&&document.documentElement.clientHeight) {
            return document.documentElement.clientHeight;
        }
        return 0;
    }

    function resizeMapDiv() {
        //Resize the height of the div containing the map.
        //Do not call any map methods here as the resize is called before the map is created.
    	var d=document.getElementById("map");
        var offsetTop=0;
        for (var elem=d; elem!=null; elem=elem.offsetParent) {
            offsetTop+=elem.offsetTop;
        }
        var height=getWindowHeight()-offsetTop-12;
        if (height>=0) {
            d.style.height=height+"px";
        }
    }


    function load() {
		if (GBrowserIsCompatible()) {
			resizeMapDiv();
			var copyright = new GCopyright(1, new GLatLngBounds(new GLatLng(-90, -180), new GLatLng(90, 180)), 0, "©2010 AKINOBU MAEDA");
			var copyrightCollection = new GCopyrightCollection("");
			copyrightCollection.addCopyright(copyright);
			//create a custom picture layer
			//@param: GTitleLayer(copyrightCollection, minResolution, maxResolution)
			var pic_tileLayers = [ new GTileLayer(copyrightCollection , 0, 20)];
			//GPointを返す
			pic_tileLayers[0].getTileUrl = customGetTileURL;
			//pngかどうか
			pic_tileLayers[0].isPng = function() { return false; };
			//不透明度
			pic_tileLayers[0].getOpacity = function() { return 1.0; };
			//CustomProjection作成
			//@param(zoomMax, wrapsOnOff)
			var proj=new CustomProjection(999,imageWraps);
			var pic_customMap = new GMapType(pic_tileLayers, proj, "Pic", {maxResolution:5, minResolution:1, errorMessage:"Not Available"});
			//Now create the custom map. Would normally be G_NORMAL_MAP,G_SATELLITE_MAP,G_HYBRID_MAP
			map = new GMap2(document.getElementById("map"),{ backgroundColor:"#FFFFFF", mapTypes:[pic_customMap]});
			var topLeft = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(14,14));
			//map.addControl(new GLargeMapControl(), topLeft);
			map.addControl(new GSmallMapControl(), topLeft);
			//map.addControl(new GMapTypeControl());
			map.addControl(new GOverviewMapControl(new GSize(161,161)));
			//
			var defPos = makeDefalt();
			centreLat = defPos[0];
			centreLon = defPos[1];
			initialZoom = defPos[2];
			map.setCenter(new GLatLng(centreLat, centreLon), initialZoom, pic_customMap);
			/////////////////////////////////////////////////////////////////////////////////////
			//Add any markers here e.g.
			//map.addOverlay(new GMarker(new GLatLng(x,y)));
			/////////////////////////////////////////////////////////////////////////////////////
			map.enableDoubleClickZoom();
			map.enableScrollWheelZoom();  
 			map.enableContinuousZoom();
			//
			//GEvent.addDomListener(document.getElementById("wheelMap"), "DOMMouseScroll", CancelEvent); // Firefox
  			//GEvent.addDomListener(document.getElementById("wheelMap"), "mousewheel", CancelEvent); // IE
			downloadData();
		}
	}
	
	function CancelEvent(event){
	  e = event;
	  if (typeof e.preventDefault  == 'function') 
			e.preventDefault();
	  if (typeof e.stopPropagation == 'function')
			e.stopPropagation();
	  if (window.event) {
		 window.event.cancelBubble = true; // for IE
		 window.event.returnValue = false; // for IE
	  }
	}
	
	function makeDefalt(){
		//@param lat, lung, depth
		var p1 = [30, -52, 4]; //Art work
		var p2 = [50, 35, 4]; //altz
		var p3 = [53, 102, 4]; //altz Epic and...
		var p4 = [-35, -20, 4]; //SKATE FURNITURE
		var defPos;
		var count = parseInt(Math.random()*4);
		if(count == 0){
			defPos = p1;
		}else if(count == 1){
			defPos = p2;
		}else if(count == 2){
			defPos = p3;
		}else if(count == 3){
			defPos = p4;
		}else{
			defPos = [50, 35, 4];//altz 
		}
		return defPos;
	
	}
	
	function downloadData(){
		//var mgrOptions = { borderPadding: 50, maxZoom: 4, trackMarkers: false };
		mgr = new MarkerManager(map);
		GDownloadUrl("xml/marker.xml", function dispData(data, statusCode){
			var xml = GXml.parse(data);
			var markers = xml.documentElement.getElementsByTagName("marker");
			marker_info = new Array(markers.length);
			html_arr = new Array(markers.length);
			for (var i = 0; i < markers.length; i++) {
				var lats = markers[i].getElementsByTagName("lat");
				var lngs = markers[i].getElementsByTagName("lng");
				var credits = markers[i].getElementsByTagName("credit");
				var linkUrls = markers[i].getElementsByTagName("linkUrl");
				var ws = markers[i].getElementsByTagName("width");
				var hs = markers[i].getElementsByTagName("height");
				var ts = markers[i].getElementsByTagName("title");
				var tp = markers[i].getElementsByTagName("type");
				
				var lat = parseFloat(GXml.value(lats[0]));
				var lng = parseFloat(GXml.value(lngs[0]));
				var credit = GXml.value(credits[0]);
				var linkUrl = GXml.value(linkUrls[0]);
				var width = GXml.value(ws[0]);
				var height = GXml.value(hs[0]);
				var title = GXml.value(ts[0]);
				var type = GXml.value(tp[0]);
				mgr.addMarker(createMarker(lat, lng, credit, linkUrl, width, height, title, type, i), 2, 5);
				//mgr.refresh();
			}
		});
	}

	function createMarker(lat, lng, credit, linkUrl, w, h, t, tp, num) {
		//Marker Infomation
		var markerIcon = new GIcon();
		var fileName = num+1;
		markerIcon.image = "img/num/"+fileName+".png";
		markerIcon.iconSize = new GSize(25, 25);
		markerIcon.iconAnchor = new GPoint(12, 12);
		markerIcon.infoWindowAnchor = new GPoint(12, 12);
		var opts = {icon:markerIcon};
		
		marker_info[num] = new GMarker(new GLatLng(lat, lng, true), opts);
		var credit_arr = credit.split("|");
		html_arr[num] = "<div id=\"credit\">";
		for(var i=0; i<credit_arr.length ; i++){
			if(i==0){
				html_arr[num] += "<strong>";
				html_arr[num] += credit_arr[i] + "<br />";
				html_arr[num] += "</strong>";
			}else{
				html_arr[num] += credit_arr[i] + "<br />";
			}
		}
		if(linkUrl != "none"){
			html_arr[num] += "<p id=\"linkMov\">";
			html_arr[num] += "<a href=\"#\"";
			html_arr[num] += "onclick=\"openMovie(";
			html_arr[num] += "\'"+linkUrl+"\',";		
			html_arr[num] += "\'"+w+"\',";		
			html_arr[num] += "\'"+h+"\',";
			html_arr[num] += "\'"+t+"\',";
			html_arr[num] += "\'"+tp+"\'";	
			html_arr[num] += ")\">→detail movie</a>";
			html_arr[num] += "</p>";
		}
		
		html_arr[num] += "</div>";
		GEvent.addListener(marker_info[num], "click", function() {
			openMarker(num);
		});
		return marker_info[num];
	}
	
	function openMarker(num){
		marker_info[num].openInfoWindowHtml(html_arr[num]);
	}
	
	function moveCenter(depth, num){
		//openMarker(num);
		if(marker_info[num] != null){
			map.setCenter(marker_info[num].getLatLng());
			map.setZoom(depth);
		}
	}
	
	function openMovie(url, w, h, t, type){
		if(type == "img"){
			Shadowbox.open({ content:url, player:"img", title:t, width:w, height:h });
		}else{
			Shadowbox.open({ content:url, player:"qt", title:t, width:w, height:h });
		}
	}
	
	
	function MM_swapImgRestore() { //v3.0
	  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
	}
	function MM_preloadImages() { //v3.0
	  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
		var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
		if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
	}
	
	function MM_findObj(n, d) { //v4.01
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  if(!x && d.getElementById) x=d.getElementById(n); return x;
	}
	
	function MM_swapImage() { //v3.0
	  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
	}


Shadowbox.init({language:"en", players:["img","qt"]});


