if (!window.SilverlightTest)
window.SilverlightTest = {}; var mainCanvas = null; var isDrag = false; var appendObject = new Array(); var diffTime = 0; var appendCategoryList = null; var previousEnterRestaurant = null; var flagEnableZoom = 1|2; var BLOCKWIDTH = 640; var BLOCKHEIGHT = 480; var timerId = 0; var isDragSlider = false; var startSlider_y = 0; var isPanShift = false; var currentX = 0; var currentY = 0; var mouseDownRestName = null; var panTest = 0; SilverlightTest.Scene = function()
{ }
SilverlightTest.Scene.prototype = { handleLoad: function(plugIn, userContext, rootElement)
{ this.plugIn = plugIn; host = plugIn;}
}
function mainCanvasLoaded(sender, eventArgs)
{ mainCanvas = sender; mapCtrl.setStartPanListener(notifyStartPan); mapCtrl.setEndPanListener(notifyEndPan); mapCtrl.setStartZoomListener(notifyStartZoom); mapCtrl.setEndZoomListener(notifyEndZoom);}
function mainCanvasLeftButtonDown(sender, eventArg)
{ var tm = new Date(); var currentTime = tm.getTime(); if (currentTime - diffTime < 250) { isDrag = false; diffTime = currentTime; mainCanvasLeftButtonDblClk(sender, eventArg); return;}
diffTime = currentTime; isDrag = true; start_x = eventArg.getPosition(null).x; start_y = eventArg.getPosition(null).y;}
function mainCanvasLeftButtonDblClk(sender, eventArg)
{ if (flagEnableZoom != 3) { return;}
flagEnableZoom = 0; showToHide(); var pointX = eventArg.getPosition(null).x; var pointY = eventArg.getPosition(null).y; mapCtrl.changeZoomLevelAndMove(1, pointX, pointY); tabelogManager.replotRestaurant(mainCanvas); zoomPointAnimation(1);}
function mainCanvasMouseLeave(sender, eventArg)
{ isDrag = false;}
function notifyEndPan()
{ isPanShift = false; tabelogManager.replotRestaurantLite(mainCanvas); hideToShow(); panTest--;}
function hideToShow() { tabelogManager.showRestaurant(mainCanvas, true); tabelogManager.showSearchRange(mainCanvas, true);}
function showToHide() { tabelogManager.showRestaurant(mainCanvas, false); tabelogManager.showSearchRange(mainCanvas, false);}
function notifyStartPan()
{ isPanShift = true; clearTimeout(timerId);}
function notifyStartZoom()
{ tabelogManager.showSearchRange(mainCanvas, false);}
function notifyEndZoom()
{ flagEnableZoom |= 1; tabelogManager.replotRestaurant(mainCanvas); hideToShow();}
function notifyEndZoomPointAnimation(sender, eventArg)
{ flagEnableZoom |= 2;}
function mainCanvasMouseMove(sender, eventArgs)
{ if (!isDrag) { return;}
if (panTest > 0) { return;}
showToHide(); var x_ = eventArgs.getPosition(null).x; var y_ = eventArgs.getPosition(null).y; var diffX = start_x - x_; var diffY = start_y - y_; if (Math.abs(diffX) + Math.abs(diffY) > 10) { start_x = x_; start_y = y_;}
panTest++; mapCtrl.moveByPixelDiff(diffX, diffY);}
function mainCanvasLeftButtonUp(sender, eventArgs)
{ isDrag = false;}
function appendXaml(xamltxt)
{ var slControl = mainCanvas.getHost(); var obj = slControl.content.createFromXaml(xamltxt, false); mainCanvas.children.add(obj); appendObject.push(obj);}
function clearAppendXaml()
{ for (var i = 0; i < appendObject.length; ++i) { mainCanvas.children.remove(appendObject[i]);}
delete appendObject; appendObject = new Array(); if (appendCategoryList != null) { mainCanvas.children.remove(appendCategoryList); appendCategoryList = null;}
}
function mouseEnterRestaurant(sender, eventArg)
{ if (previousEnterRestaurant != null) { previousEnterRestaurant.setValue("Stroke", "Black"); previousEnterRestaurant.setValue("Fill", "White");}
var shape = sender.Children.getItem(0); if (shape != undefined) { shape.setValue("Stroke", "Red"); shape.setValue("Fill", "#fff0e0"); previousEnterRestaurant = shape;}
var xamlname = sender.getValue("Name"); var id = xamlname.match(/\d+/); var scoreInfo = mainCanvas.findName("ScoreInformation"); scoreInfo.setValue("Visibility", "Visible"); var posX = eventArg.getPosition(null).x; var posY = eventArg.getPosition(null).y; scoreInfo.setValue("Canvas.Left", (posX > 580) ? posX - 84 : posX + 20); scoreInfo.setValue("Canvas.Top", (posY > 426) ? posY - 54 : posY); scoreInfo.children.getItem(1).setValue("Text", "★" + tabelogManager.restArray[id].totalScore); scoreInfo.children.getItem(2).setValue("Text", "味" + tabelogManager.restArray[id].tasteScore); scoreInfo.children.getItem(3).setValue("Text", "接" + tabelogManager.restArray[id].serviceScore); scoreInfo.children.getItem(4).setValue("Text", "雰" + tabelogManager.restArray[id].moodScore); var str = tabelogManager.restArray[id].name + " [" + tabelogManager.restArray[id].category + "]"; var txtBlock = sender.findName("RestInfoText"); txtBlock.setValue("Text", str); txtBlock.setValue("Visibility", "Visible"); var slidein = mainCanvas.findName("SlideInRestInfo"); slidein.begin();}
function mouseDownRestaurant(sender, eventArg)
{ mouseDownRestName = sender.getValue("Name");}
function mouseUpRestaurant(sender, eventArg)
{ if (mouseDownRestName == null) { return;}
var name = sender.getValue("Name"); if (mouseDownRestName == name) { clickRestaurant(sender, eventArg);}
mouseDownRestName = null;}
function clickRestaurant(sender, eventArg)
{ var xamlname = sender.getValue("Name"); var id = xamlname.match(/\d+/); var isexist = $(tabelogManager.restArray[id].url); if (isexist != undefined) { return;}
var addTag = '<div class="restaurant" id="' + tabelogManager.restArray[id].url + '"	>'; addTag += '<div class="RestaurantName"><a href="' + tabelogManager.restArray[id].url + '" target="レストラン情報" ></div>'; addTag += tabelogManager.restArray[id].name + '</a><br />'; addTag += '★' + tabelogManager.restArray[id].totalScore + '<br /><span class="category">'; addTag += tabelogManager.restArray[id].category + '</span><br />'; addTag += '<span class="price">昼 ' + tabelogManager.restArray[id].lunchPrice + '</span><br />'; addTag += '<span class="price">夜 ' + tabelogManager.restArray[id].dinnerPrice + '</span><br />'; addTag += '<span class="business">営業時間 ' +　tabelogManager.restArray[id].business + '</span><br />'; addTag += '<span class="business">休日 ' + tabelogManager.restArray[id].holiday + '</span><br />'; addTag += '<a href="javascript: moveMapFromHTML(' + tabelogManager.restArray[id].latitude + ', ' + tabelogManager.restArray[id].longitude + ');" class="toMap">&gt;&gt;マップ移動</a><br />'; var bookmarkName = tabelogManager.restArray[id].name + "[食べログ.com]"; addTag += '<div class="RegistBookmark">' + createDelicious(bookmarkName, tabelogManager.restArray[id].url) + createHatenaBookmark(bookmarkName, tabelogManager.restArray[id].url) + createYahooBookmark(bookmarkName, tabelogManager.restArray[id].url) + createLivedoorClip(bookmarkName, tabelogManager.restArray[id].url) + '</div>'; addTag += '<input style="text-align: right;"type="button" value="消去" onclick="removeRestaurantBlock(this);" class="clearButton" />'; addTag += '<hr /></div>'; $("restaurantList").innerHTML += addTag;}
function createDelicious(title, url)
{ var delicious = 'javascript:url="' + url + '";title="' + title + '";location.href="http://del.icio.us/post?url="+encodeURIComponent(url)+"&title="+encodeURIComponent(title);'; return "<a href='" + delicious + "' target='_new'><img src='images/delicious.gif' class='BookmarkImg' alt='del.icio.usに登録' /></a>";}
function createHatenaBookmark(title, url)
{ var hatebu = '<a href="http://b.hatena.ne.jp/entry/' + (url) + '" target="_blank">'; return hatebu + '<img class="BookmarkImg" src="images/hatebu_entry.gif" alt="はてなブックマークに登録" style="width: 16px; height: 12px;" /></a>';}
function createYahooBookmark(title, url)
{ var yahoo = "javascript:url='" + url + "';title='" + title + "';void window.open('http://bookmarks.yahoo.co.jp/bookmarklet/showpopup?t='+encodeURIComponent(title)+'&u='+encodeURIComponent(url)+'&ei=UTF-8','_blank','width=550,height=480,left=100,top=50,scrollbars=1,resizable=1',0);"; return '<a href="' + yahoo + '"><img src="http://i.yimg.jp/images/sicons/ybm16.gif" class="BookmarkImg" alt="Yahoo!ブックマークに登録" ></a>';}
function createLivedoorClip(title, url)
{ var livedoor = "javascript:url='" + url + "';title='" + title + "';location.href='http://clip.livedoor.com/clip/add?link='+encodeURIComponent(url)+'&title='+encodeURIComponent(title)+'&jump=ref&public=off';"; return '<a href="' + livedoor + '" target="_new"><img src="http://parts.blog.livedoor.jp/img/cmn/clip_16_16_w.gif" class="BookmarkImg" alt="Livedoor Clipに登録" /></a>';}
function mouseMoveRestaurant(sender, eventArg)
{ var scoreInfo = mainCanvas.findName("ScoreInformation"); var posX = eventArg.getPosition(null).x; var posY = eventArg.getPosition(null).y; if (posX > 580) { posX -= 84;}
if (posY > 426) { posY -= 54;}
scoreInfo.setValue("Canvas.Left", posX + 20); scoreInfo.setValue("Canvas.Top", posY);}
function mouseLeaveRestaurant(sender, eventArg)
{ var scoreInfo = mainCanvas.findName("ScoreInformation"); scoreInfo.setValue("Visibility", "Collapsed");}
function removeRestaurantBlock(node)
{ var parent = node.parentNode; if (parent == undefined) { return;}
var restList = $("restaurantList"); restList.removeChild(parent);}
function enterSearchHere(sender, eventArg)
{ var obj = sender.findName("PreSearchRange"); tabelogManager.resizeSearchRange(obj, tabelogManager.searchRange); tabelogManager.moveSearchRange(obj, BLOCKWIDTH/2, BLOCKHEIGHT/2); obj.setValue("Visibility", "Visible");}
function leaveSearchHere(sender, eventArg)
{ sender.findName("PreSearchRange").setValue("Visibility", "Collapsed");}
function searchHere(sender, eventArg)
{ var ll = mapCtrl.getPixelToLatLong((BLOCKWIDTH/2),(BLOCKHEIGHT/2)); tabelogManager.newSearch(ll.Latitude, ll.Longitude);}
function categorySelect(sender, eventArg)
{ if (appendCategoryList == null) { xamltxt = tabelogManager.createCategorySelectXAML(1); var slControl = mainCanvas.getHost(); appendCategoryList = slControl.content.createFromXaml(xamltxt, false); mainCanvas.children.add(appendCategoryList);} else { mainCanvas.children.remove(appendCategoryList); appendCategoryList = null;}
}
function clickAllCategory(sender, eventArg)
{ var brush = sender.getValue("Foreground"); var color = brush.getValue("Color"); if ((color & 0xffffff) == 0) { sender.setValue("Foreground", "Red"); tabelogManager.showAllRestaurant(sender, true, true); tabelogManager.categoryInfo.highlightAllCategory = true;} else { sender.setValue("Foreground", "Black"); tabelogManager.showAllRestaurant(sender, false, true); tabelogManager.categoryInfo.highlightAllCategory = false;}
for (var prop in tabelogManager.categoryInfo.categoryItem) { var obj = mainCanvas.findName(prop); if (obj != undefined) { obj.setValue("Foreground", "Black");}
tabelogManager.categoryInfo.categoryItem[prop].highlight = false;}
}
function clickCategory(sender, eventArg)
{ var brush = sender.getValue("Foreground"); var color = brush.getValue("Color"); var name = sender.getValue("Name"); if ((color & 0xffffff) == 0) { sender.setValue("Foreground", "Red"); tabelogManager.changeCategorySelection(mainCanvas, name, true);} else { sender.setValue("Foreground", "Black"); tabelogManager.changeCategorySelection(mainCanvas, name, false);}
}
function mouseEnterCategory(sender, eventArg)
{ sender.setValue("TextDecorations", "Underline");}
function mouseLeaveCategory(sender, eventArg)
{ sender.setValue("TextDecorations", "None");}
function clickCategoryPage(sender, eventArg)
{ var name = sender.getValue("Name"); var clickpage = parseInt(name.match(/\d+/)); mainCanvas.children.remove(appendCategoryList); appendCategoryList = null; xamltxt = tabelogManager.createCategorySelectXAML(clickpage); var slControl = mainCanvas.getHost(); appendCategoryList = slControl.content.createFromXaml(xamltxt, false); mainCanvas.children.add(appendCategoryList);}
function mouseEnterCategoryPage(sender, eventArg)
{ var focus = mainCanvas.findName("CategoryPageFocus"); focus.setValue("Canvas.Left", sender.getValue("Canvas.Left") - 2); focus.setValue("Visibility", "Visible");}
function mouseLeaveCategoryPage(sender, eventArg)
{ mainCanvas.findName("CategoryPageFocus").setValue("Visibility", "Collapsed");}
function reverseZOrder(sender, eventArg)
{ tabelogManager.reverseZOrder(mainCanvas);}
function moveMapFromHTML(lat, lon)
{ tabelogManager.showRestaurant(mainCanvas, false); tabelogManager.showSearchRange(mainCanvas, false); mapCtrl.moveMap(lat,lon); timerId = setTimeout('tabelogManager.replotRestaurantLite(mainCanvas); hideToShow();', 600); tabelogManager.replotRestaurantLite(mainCanvas);}
function changeZoom(sender, eventArg)
{ if (flagEnableZoom != 3) { return;}
showToHide(); flagEnableZoom = 0; var name = sender.getValue("Name"); var zoomLev = parseInt(name.match(/\d+/)); var zoomDiff = zoomLev - mapCtrl.getZoomLevel(); if (zoomDiff == 0) { return;}
mapCtrl.changeZoomLevelAndMove(zoomDiff, BLOCKWIDTH/2, BLOCKHEIGHT/2); zoomPointAnimation(zoomDiff);}
function zoomPointAnimation(zoomDiff)
{ var anime = mainCanvas.findName("ZoomPointAnimation"); var dbl_anime = anime.children.getItem(0); dbl_anime.setValue("By", -30 * zoomDiff); anime.begin();}
function mouseDownThreshSlider(sender, eventArg)
{ isDragSlider = true; sender.CaptureMouse(); startSlider_y = eventArg.getPosition(sender).y;}
function mouseMoveThreshSlider(sender, eventArg)
{ if (!isDragSlider) { return;}
var neo_top = sender.getValue("Canvas.Top") + eventArg.getPosition(sender).y - startSlider_y; if (neo_top < 0) { if (neo_top < -25) { isDragSlider = false;}
neo_top = 0;}
else if (neo_top > 80) { if (neo_top > 105) { isDragSlider = false;}
neo_top = 80;}
sender.setValue("Canvas.Top", neo_top); var thresh = 400 - (neo_top * 5); var strThresh = String(thresh / 100); sender.children.getItem(1).setValue("Text", strThresh); tabelogManager.setTotalThresh(thresh / 100, mainCanvas); var x_ = eventArg.getPosition(sender).x; if (x_ > 32) { isDragSlider = false;}
}
function mouseUpThreshSlider(sender, eventArg)
{ isDragSlider = false; sender.ReleaseMouseCapture();}
function clickSearchRangeLarge(sender, eventArg)
{ tabelogManager.setSearchRange(RANGE_LARGE); sender.findName("SearchRangeHighlight").setValue("Canvas.Left", sender.getValue("Canvas.Left"));}
function enterSearchRangeLarge(sender, eventArg)
{ var obj = sender.findName("PreSearchRange"); tabelogManager.resizeSearchRange(obj, RANGE_LARGE); tabelogManager.moveSearchRange(obj, BLOCKWIDTH/2, BLOCKHEIGHT/2); obj.setValue("Visibility", "Visible");}
function clickSearchRangeMedium(sender, eventArg)
{ tabelogManager.setSearchRange(RANGE_MEDIUM); sender.findName("SearchRangeHighlight").setValue("Canvas.Left", sender.getValue("Canvas.Left"));}
function enterSearchRangeMedium(sender, eventArg)
{ var obj = sender.findName("PreSearchRange"); tabelogManager.resizeSearchRange(obj, RANGE_MEDIUM); tabelogManager.moveSearchRange(obj, BLOCKWIDTH/2, BLOCKHEIGHT/2); obj.setValue("Visibility", "Visible");}
function clickSearchRangeSmall(sender, eventArg)
{ tabelogManager.setSearchRange(RANGE_SMALL); sender.findName("SearchRangeHighlight").setValue("Canvas.Left", sender.getValue("Canvas.Left"));}
function enterSearchRangeSmall(sender, eventArg)
{ var obj = sender.findName("PreSearchRange"); tabelogManager.resizeSearchRange(obj, RANGE_SMALL); tabelogManager.moveSearchRange(obj, BLOCKWIDTH/2, BLOCKHEIGHT/2); obj.setValue("Visibility", "Visible");}
function leaveSearchRangeChanger(sender, eventArg)
{ sender.findName("PreSearchRange").setValue("Visibility", "Collapsed");}
