local    MAX_COUNT = 9
local    LINE_SPACE = 40
local    kItemTagBasic = 5432

local Winsize = cc.Director:getInstance():getWinSize()

local testNames = {
    "Bug-350",
    "Bug-422",
    "Bug-458",
    "Bug-624",
    "Bug-886",
    "Bug-899",
    "Bug-914",
    "Bug-1159",
    "Bug-1174",
    "Bug-value-type-judge-in-table"
}

local function CreateBugsTestBackMenuItem(pLayer)
    cc.MenuItemFont:setFontName("Arial")
    cc.MenuItemFont:setFontSize(24)
    local pMenuItemFont = cc.MenuItemFont:create("Back")
    pMenuItemFont:setPosition(cc.p(VisibleRect:rightBottom().x - 50, VisibleRect:rightBottom().y + 25))
    local function menuCallback()
        local pScene = BugsTestMain()
        if pScene ~= nil then
            cc.Director:getInstance():replaceScene(pScene)
        end
    end
    pMenuItemFont:registerScriptTapHandler(menuCallback)
    local pMenu = cc.Menu:create()
    pMenu:addChild(pMenuItemFont)
    pMenu:setPosition(cc.p(0, 0))
    pLayer:addChild(pMenu)
end

--BugTest350
local function BugTest350()
    local pLayer = cc.Layer:create()
    local pBackground = cc.Sprite:create("Hello.png")
    pBackground:setPosition(cc.p(Winsize.width/2, Winsize.height/2))
    pLayer:addChild(pBackground)
    return pLayer
end

--BugTest422
local nLocalTag = 0
local function BugTest422()
    local function reset(pResetLayer)
        nLocalTag = nLocalTag + 1
        local pNode = pResetLayer:getChildByTag(nLocalTag - 1)
        if nil ~= pNode then
           --userdata per
           local strLog = "Menu:"..nLocalTag
           print(strLog)
        end

        pResetLayer:removeChild(pNode, false)
        
        local function menuCallback(tag,pMenuItem)
            if nil ~= pMenuItem then
                local pCallbackLayer = pMenuItem:getParent():getParent()
                reset(pCallbackLayer)
            end
        end
        cc.MenuItemFont:setFontName("Arial")
        cc.MenuItemFont:setFontSize(24)
        local pMenuItem1 = cc.MenuItemFont:create("One")
        pMenuItem1:registerScriptTapHandler(menuCallback)
        local pMenuItem2 = cc.MenuItemFont:create("Two")
        pMenuItem2:registerScriptTapHandler(menuCallback)
        local pMenu = cc.Menu:create(pMenuItem1, pMenuItem2)
        pMenu:alignItemsVertically()
        local fX = math.random() * 50
        local fY = math.random() * 50
        local menuPosX ,menuPosY = pMenu:getPosition()
        pMenu:setPosition(cc.p(menuPosX + fX,menuPosY + fY))
        pResetLayer:addChild(pMenu,0,nLocalTag)
    end
    
    local pLayer = cc.Layer:create()
    reset(pLayer)
    return pLayer
end

--BugTest458
local nColorFlag = 0
local function BugTest458()
    local pLayer = cc.Layer:create()
    
    local function InitQuestionContainerSprite(pSprite)
        --Add label
        local pLabel = cc.Label:createWithTTF("Answer 1", s_arialPath, 12)
        pLabel:setAnchorPoint(cc.p(0.5,0.5))
        pLabel:setTag(100)
        
        --Add the background
        local pCorner = cc.Sprite:create("Images/bugs/corner.png")
        local nWidth = Winsize.width * 0.9 - (pCorner:getContentSize().width * 2)
        local nHeight = Winsize.height * 0.15  - (pCorner:getContentSize().height * 2)
        local pColorLayer = cc.LayerColor:create(cc.c4b(255, 255, 255, 255 * .75), nWidth, nHeight)
        pColorLayer:setPosition(cc.p(-nWidth / 2, -nHeight / 2))
        --First button is blue,Second is red,Used for testing - change later
        if (0 == nColorFlag) then
            pLabel:setColor(cc.c3b(0,0,255))
        else
            print("Color changed")
            pLabel:setColor(cc.c3b(255,0,0))
        end
        nColorFlag = nColorFlag + 1
        pSprite:addChild(pColorLayer)
        
        pCorner:setPosition(cc.p(-(nWidth / 2 + pCorner:getContentSize().width / 2), -(nHeight / 2 + pCorner:getContentSize().height / 2)))
        pSprite:addChild(pCorner)
		
		local nX,nY = pCorner:getPosition()
        local pCorner2 = cc.Sprite:create("Images/bugs/corner.png")
        pCorner2:setPosition(cc.p(-nX, nY))
        pCorner2:setFlippedX(true)
        pSprite:addChild(pCorner2)

        local pCorner3 = cc.Sprite:create("Images/bugs/corner.png")
        pCorner3:setPosition(cc.p(nX, -nY))
        pCorner3:setFlippedY(true)
        pSprite:addChild(pCorner3)

        local pCorner4 = cc.Sprite:create("Images/bugs/corner.png")
        pCorner4:setPosition(cc.p(-nX, -nY))
        pCorner4:setFlippedX(true)
        pCorner4:setFlippedY(true)
        pSprite:addChild(pCorner4)

        local pEdge = cc.Sprite:create("Images/bugs/edge.png")
        pEdge:setScaleX(nWidth)
        pEdge:setPosition(cc.p(nX + (pCorner:getContentSize().width / 2) + (nWidth / 2), nY))
        pSprite:addChild(pEdge)
        
        local pEdge2 = cc.Sprite:create("Images/bugs/edge.png")
        pEdge2:setScaleX(nWidth)
        pEdge2:setPosition(cc.p(nX + (pCorner:getContentSize().width / 2) + (nWidth / 2), -nY))
        pEdge2:setFlippedY(true)
        pSprite:addChild(pEdge2)

        local pEdge3 = cc.Sprite:create("Images/bugs/edge.png")
        pEdge3:setRotation(90)
        pEdge3:setScaleX(nHeight)
        pEdge3:setPosition(cc.p(nX, nY + (pCorner:getContentSize().height / 2) + (nHeight / 2)))
        pSprite:addChild(pEdge3)

        local pEdge4 = cc.Sprite:create("Images/bugs/edge.png")
        pEdge4:setRotation(270)
        pEdge4:setScaleX(nHeight)
        pEdge4:setPosition(cc.p(-nX, nY + (pCorner:getContentSize().height / 2) + (nHeight / 2)))
        pSprite:addChild(pEdge4)

        pSprite:addChild(pLabel)
    end
    
    local pQuestion1 = cc.Sprite:create()
    InitQuestionContainerSprite(pQuestion1)
    local pQuestion2 = cc.Sprite:create()
    InitQuestionContainerSprite(pQuestion2)
    
    local function menuCallback()
        print("Selected")
    end
    local pMenuItemSprite = cc.MenuItemSprite:create(pQuestion1,pQuestion2)
    pMenuItemSprite:registerScriptTapHandler(menuCallback)
    local pLayerColor1 = cc.LayerColor:create(cc.c4b(0,0,255,255), 100, 100)
--  question->release()
--  question2->release()

    local pLayerColor2 = cc.LayerColor:create(cc.c4b(255,0,0,255), 100, 100)
    local pMenuItemSprite2 = cc.MenuItemSprite:create(pLayerColor1, pLayerColor2)   
    pMenuItemSprite2:registerScriptTapHandler(menuCallback) 
    local pMenu = cc.Menu:create(pMenuItemSprite, pMenuItemSprite2)
    pMenu:alignItemsVerticallyWithPadding(100)
    pMenu:setPosition(cc.p(Winsize.width / 2, Winsize.height / 2))

    -- add the label as a child to this Layer
    pLayer:addChild(pMenu)

    return pLayer
end

--BugTest624
local BugTest624_entry = nil
local BugTest624_2_entry = nil

local function BugTest624()
    local pLayer = cc.Layer:create()
    
    local pLabel = cc.Label:createWithTTF("Layer1", s_markerFeltFontPath, 36)
    pLabel:setAnchorPoint(cc.p(0.5, 0.5))
    pLabel:setPosition(cc.p(Winsize.width / 2, Winsize.height / 2))
    pLayer:addChild(pLabel)
    pLayer:setAccelerometerEnabled(true)
--  schedule(schedule_selector(Bug624Layer::switchLayer), 5.0f)
	
	local function BugTest624_SwitchLayer()
		local scheduler = cc.Director:getInstance():getScheduler()
		scheduler:unscheduleScriptEntry(BugTest624_entry)
			
		local pScene = cc.Scene:create() 
		local pNewPlayer = BugTest624_2()
		CreateBugsTestBackMenuItem(pNewPlayer)   
        pScene:addChild(pNewPlayer)   
        cc.Director:getInstance():replaceScene(cc.TransitionFade:create(2.0, pScene, cc.c3b(255,255,255))) 
	end
	
	
    local function BugTest624_OnEnterOrExit(tag)
    	local scheduler = cc.Director:getInstance():getScheduler()
		if tag == "enter" then
			BugTest624_entry = scheduler:scheduleScriptFunc(BugTest624_SwitchLayer, 5.0, false)
		elseif tag == "exit" then
			scheduler:unscheduleScriptEntry(BugTest624_entry)
		end
    end 
    pLayer:registerScriptHandler(BugTest624_OnEnterOrExit)
    
    local function didAccelerate(x,y,z,timestamp)
    	print("Layer1 accel")
    end
    pLayer:registerScriptAccelerateHandler(didAccelerate)
    
    return pLayer 
end

function BugTest624_2()
	local pLayer = cc.Layer:create()
	
	local pLabel = cc.Label:createWithTTF("Layer2", s_markerFeltFontPath, 36)
    pLabel:setAnchorPoint(cc.p(0.5, 0.5))
	pLabel:setPosition(cc.p(Winsize.width / 2, Winsize.height / 2))
    pLayer:addChild(pLabel)
    pLayer:setAccelerometerEnabled(true)
    
    local function BugTest624_2_SwitchLayer()
		local scheduler = cc.Director:getInstance():getScheduler()
		scheduler:unscheduleScriptEntry(BugTest624_2_entry)
			
		local pScene = cc.Scene:create() 
		local pNewPlayer = BugTest624()
		CreateBugsTestBackMenuItem(pNewPlayer)   
        pScene:addChild(pNewPlayer)
        cc.Director:getInstance():replaceScene(cc.TransitionFade:create(2.0, pScene, cc.c3b(255,0,0))) 
	end
	
	local function BugTest624_2_OnEnterOrExit(tag)
    	local scheduler = cc.Director:getInstance():getScheduler()
		if tag == "enter" then
			BugTest624_2_entry = scheduler:scheduleScriptFunc(BugTest624_2_SwitchLayer, 5.0, false)
		elseif tag == "exit" then
			scheduler:unscheduleScriptEntry(BugTest624_2_entry)
		end
    end    
    pLayer:registerScriptHandler(BugTest624_2_OnEnterOrExit)
    
    local function didAccelerate(x,y,z,timestamp)
    	print("Layer2 accel")
    end
    
    pLayer:registerScriptAccelerateHandler(didAccelerate)
	return pLayer
end

--BugTest886
local function BugTest886()
    local pLayer = cc.Layer:create()
    
    local pSprite1 = cc.Sprite:create("Images/bugs/bug886.jpg")
    pSprite1:setAnchorPoint(cc.p(0, 0))
    pSprite1:setPosition(cc.p(0, 0))
    pSprite1:setScaleX(0.6)
    pLayer:addChild(pSprite1)
    
    local pSprite2 = cc.Sprite:create("Images/bugs/bug886.jpg")
    pSprite2:setAnchorPoint(cc.p(0, 0))
    pSprite2:setScaleX(0.6)
    pSprite2:setPosition(cc.p(pSprite1:getContentSize().width * 0.6 + 10, 0))
    pLayer:addChild(pSprite2)
    
    return pLayer
end

--BugTest899
local function BugTest899()
    local pLayer = cc.Layer:create()
    
    local pBg = cc.Sprite:create("Images/bugs/RetinaDisplay.jpg")
    pLayer:addChild(pBg,0)
    pBg:setAnchorPoint(cc.p(0, 0))

    return pLayer
end

--BugTest914
local function BugTest914()
    local layer = cc.Layer:create()
    
    local layerColor = nil
    
    for i = 0, 4 do
       layerColor = cc.LayerColor:create(cc.c4b(i*20, i*20, i*20,255))
       layerColor:setContentSize(cc.size(i*100, i*100))
       layerColor:setPosition(cc.p(Winsize.width/2, Winsize.height/2))
       layerColor:setAnchorPoint(cc.p(0.5, 0.5))
       layerColor:setIgnoreAnchorPointForPosition(false)
       layer:addChild(layerColor, -1-i)
    end
    
    --create and initialize a Label
    local function restart()
       local scene = cc.Scene:create()
       local newLayer = BugTest914()
       CreateBugsTestBackMenuItem(newLayer)
       scene:addChild(newLayer)
       cc.Director:getInstance():replaceScene(scene)
	end

    local label = cc.Label:createWithTTF("Hello World", s_markerFeltFontPath, 64)
    label:setAnchorPoint(cc.p(0.5, 0.5))
    --position the label on the center of the screen
    label:setPosition(cc.p( Winsize.width /2 , Winsize.height/2 ))
    layer:addChild(label)
    
    local item1 = cc.MenuItemFont:create("restart")
    item1:registerScriptTapHandler(restart)
    
    local menu = cc.Menu:create()
    menu:addChild(item1)
    menu:alignItemsVertically()
    menu:setPosition(cc.p(Winsize.width/2, 100))
    layer:addChild(menu)
    
    -- handling touch events   
    local function onTouchMoved(touches, event)		
		local count = table.getn(touches)	
		print("Number of touches: ",count)
    end
    local function onTouchBegan(touches, event)
		onTouchMoved(touches, event)
    end
    local listener = cc.EventListenerTouchAllAtOnce:create()
    listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCHES_BEGAN )
    listener:registerScriptHandler(onTouchMoved,cc.Handler.EVENT_TOUCHES_MOVED )

    local eventDispatcher = layer:getEventDispatcher()
    eventDispatcher:addEventListenerWithSceneGraphPriority(listener, layer)

    return layer
end

--BugTest1159
local function BugTest1159()
    local pLayer = cc.Layer:create()

    local background = cc.LayerColor:create(cc.c4b(255, 0, 255, 255))
    pLayer:addChild(background)

    local sprite_a   = cc.LayerColor:create(cc.c4b(255, 0, 0, 255), 700, 700)
    sprite_a:setAnchorPoint(cc.p(0.5, 0.5))
    sprite_a:setIgnoreAnchorPointForPosition(false)
    sprite_a:setPosition(cc.p(0.0, Winsize.height/2))
    pLayer:addChild(sprite_a)
    local seq = cc.Sequence:create(cc.MoveTo:create(1.0, cc.p(1024.0, 384.0)), cc.MoveTo:create(1.0, cc.p(0.0, 384.0)))     
    sprite_a:runAction(cc.RepeatForever:create(seq))

    local sprite_b = cc.LayerColor:create(cc.c4b(0, 0, 255, 255), 400, 400)
    sprite_b:setAnchorPoint(cc.p(0.5, 0.5))
    sprite_b:setIgnoreAnchorPointForPosition(false)
    sprite_b:setPosition(cc.p(Winsize.width/2, Winsize.height/2))
    pLayer:addChild(sprite_b)

	local function menuCallback()
	   local pScene = cc.Scene:create()
       local pLayer = BugTest1159()
       CreateBugsTestBackMenuItem(pLayer)
       pScene:addChild(pLayer)
       cc.Director:getInstance():replaceScene(cc.TransitionPageTurn:create(1.0, pScene, false))
	end
    local label = cc.MenuItemLabel:create(cc.Label:createWithSystemFont("Flip Me", "Helvetica", 24))
    label:setAnchorPoint(cc.p(0.5, 0.5))
    label:registerScriptTapHandler(menuCallback)
    local menu = cc.Menu:create()
    menu:addChild(label)
    menu:setPosition(cc.p(Winsize.width - 200.0, 50.0))
    pLayer:addChild(menu)
    
    local function onNodeEvent(event)
        if event == "exit" then
        --[[
            if schedulerEntry ~= nil then
                scheduler:unscheduleScriptEntry(schedulerEntry)
            end
            ]]--
        end
    end

    pLayer:registerScriptHandler(onNodeEvent)

	return pLayer
end

--BugTest1174
local function BugTest1174()
    local layer = cc.Layer:create()

    local size = cc.Director:getInstance():getWinSize()


    local subtitleLabel = cc.Label:createWithTTF("The results output on the console", s_thonburiPath, 24)
    subtitleLabel:setAnchorPoint(cc.p(0.5, 0.5))
    layer:addChild(subtitleLabel, 1)
    subtitleLabel:setPosition(size.width / 2, size.height - 80)
    
    local function check_for_error(p1,p2,p3,p4,s,t)
        local p4_p3 = cc.pSub(p4,p3)
        local p4_p3_t = cc.pMul(p4_p3,t)
        local hitp1 = cc.pAdd(p3,p4_p3_t)
        
        local p2_p1 = cc.pSub(p2,p1)
        local p2_p1_s = cc.pMul(p2_p1,s)
        local hitp2 = cc.pAdd(p1,p2_p1_s)
        
        if math.abs(hitp1.x - hitp2.x ) > 0.1 or math.abs(hitp1.y - hitp2.y) > 0.1 then
        	local strErr = "ERROR: ("..hitp1.x..","..hitp1.y..") != ("..hitp2.x..","..hitp2.y..")"
            print(strErr)
        	return 1
        end
        return 0
    end
    local A,B,C,D,p1,p2,p3,p4
    local s = 0.0
    local t = 0.0
    local err = 0
    local ok  = 0
    local bRet = false
    
    print("Test1 - Start")
    local i = 0
    for i = 0, 9999 do
        --[[
        A|b
        -----
        c|d
        ]]--
        local ax = math.random() * -5000
        local ay = math.random() * 5000
        --[[
        a|b
        -----
        c|D 
        ]]--      
        local dx = math.random() * 5000
        local dy = math.random() * -5000
        
        --[[
        a|B
        -----
        c|d 
        ]]--
        local bx = math.random() * 5000
        local by = math.random() * 5000
        
        --[[
        a|b
        -----
        C|d
        ]]--
        local cx = math.random() * -5000
        local cy = math.random() * -5000
        
        A = cc.p(ax,ay)
        B = cc.p(bx,by)
        C = cc.p(cx,cy)
        D = cc.p(dx,dy)
       
        bRet,s,t = cc.pIsLineIntersect( A, D, B, C, s, t)
        if true == bRet then
            if 1 == check_for_error(A,D,B,C,s,t) then
                err = err + 1
            else
                ok = ok + 1
            end
        end
    end
    local strLog = "Test1 - End. OK="..ok..", Err="..err
    print(strLog)
    --------
    --Test 2
    --------
    print("Test2 - Start")
        
    p1 = cc.p(220,480)
    p2 = cc.p(304,325)
    p3 = cc.p(264,416)
    p4 = cc.p(186,416)
    s  = 0.0
    t  = 0.0
    bRet,s,t = cc.pIsLineIntersect( p1, p2, p3, p4, s, t)
    if true == bRet then
    	check_for_error(p1, p2, p3, p4, s, t)
    end
    print("Test2 - End")
    
    ------
    --Test 3
    ------
    print("Test3 - Start")
        
    ok=0
    err=0
    for i = 0 , 9999 do
        -- A | b
        -- -----
        -- c | d
        local ax = math.random() * -500
        local ay = math.random() * 500
        p1 = cc.p(ax,ay)
        -- a | b
        -- -----
        -- c | D
        local dx = math.random() * 500
        local dy = math.random() * -500
        p2 = cc.p(dx,dy)
        
        -------
            
        local y = ay - ((ay - dy) / 2.0)
        
        -- a | b
        -- -----
        -- C | d
        local cx = math.random() * -500
        p3 = cc.p(cx,y)
            
        -- a | B
        -- -----
        -- c | d
        local bx = math.random() * 500
        p4 = cc.p(bx,y)
        
        s = 0.0
        t = 0.0
        bRet,s,t = cc.pIsLineIntersect(p1, p2, p3, p4, s, t)
        if true == bRet then 
          if 1 == check_for_error(p1, p2, p3, p4, s,t ) then
             err = err + 1
          else
             ok = ok + 1
          end
        end
    end
    strLog = "Test3 - End. OK="..ok..", Err="..err
    print(strLog)
    
    return layer
end

--BugTestValueTypeJudgeInTable
local function BugTestValueTypeJudgeInTable()
    local layer = cc.Layer:create()
    local label = cc.Label:createWithTTF("Value Type Judge Error in the table:number -> string", "fonts/arial.ttf", 24)
    label:setAnchorPoint(cc.p(0.5, 0.5))
    label:setPosition(cc.p(VisibleRect:center().x, VisibleRect:top().y - 40))
    layer:addChild(label)
    local outLable = cc.Label:createWithTTF("You should see the following output in the console: \n     The type of index 0 is number \n     The type of index 1 is number \n     The type of index 2 is number", "fonts/arial.ttf", 18)
    outLable:setAnchorPoint(cc.p(0.5, 0.5))
    outLable:setPosition(cc.p(VisibleRect:center().x, VisibleRect:top().y - 160))
    layer:addChild(outLable)

    local valueTypeJudge = cc.ValueTypeJudgeInTable:create({index1 = 111, index2 = 112, index3 = 113})
    layer:addChild(valueTypeJudge)

    return layer
end

local CreateBugsTestTable = {
   BugTest350,
   BugTest422,
   BugTest458,
   BugTest624,
   BugTest886,
   BugTest899,
   BugTest914,
   BugTest1159,
   BugTest1174,
   BugTestValueTypeJudgeInTable,
}

local function CreateBugsTestScene(nBugNo)
  local pNewscene = cc.Scene:create()
  local pLayer = CreateBugsTestTable[nBugNo]()
  CreateBugsTestBackMenuItem(pLayer)
  pNewscene:addChild(pLayer)
  cc.Director:getInstance():replaceScene(pNewscene)
--pLayer:autorelease()
end


local function BugsTestMainLayer()
	local ret = cc.Layer:create() 
    
    --menu callback
    local function menuCallback(tag, pMenuItem)
        local nIdx = pMenuItem:getLocalZOrder() - kItemTagBasic
        local BugTestScene = CreateBugsTestScene(nIdx)
        if nil ~= testScene then
            cc.Director:getInstance():replaceScene(testScene)
        end
    end
	
	-- add menu items for tests
    local pItemMenu = cc.Menu:create()
    local nTestCount = table.getn(testNames)
    
    local i = 1
    for  i = 1, nTestCount do
        local  label = cc.Label:createWithTTF(testNames[i], s_arialPath, 24)
        print("test label index " .. i)
        label:setAnchorPoint(cc.p(0.5, 0.5))
        local  pMenuItem = cc.MenuItemLabel:create(label)
        pMenuItem:registerScriptTapHandler(menuCallback)
        pItemMenu:addChild(pMenuItem, i + kItemTagBasic)
       pMenuItem:setPosition( cc.p( VisibleRect:center().x, (VisibleRect:top().y - i * LINE_SPACE) ))
    end
    
    pItemMenu:setPosition(cc.p(0, 0))   
    ret:addChild(pItemMenu)
    
    -- handling touch events
    local ptBeginPos = {x = 0, y = 0}
    local ptCurPos  = {x = 0, y = 0}

    -- handling touch events   
    local function onTouchMoved(touches, event) 
        local touchLocation = touches[1]:getLocation()   
        local nMoveY = touchLocation.y - ptBeginPos.y
        local curPosx, curPosy = pItemMenu:getPosition()
        local nextPosy = curPosy + nMoveY
        if nextPosy < 0 then
            pItemMenu:setPosition(0, 0)
            return
        end

        if nextPosy > ((nTestCount + 1) * LINE_SPACE - Winsize.height) then
            pItemMenu:setPosition(0, ((nTestCount + 1) * LINE_SPACE - Winsize.height))
            return
        end

        pItemMenu:setPosition(curPosx, nextPosy)
        ptBeginPos = touchLocation
        ptCurPos = {x = curPosx, y = nextPosy}
    end
    local function onTouchBegan(touches, event)
        ptBeginPos = touches[1]:getLocation()
    end
    local listener = cc.EventListenerTouchAllAtOnce:create()
    listener:registerScriptHandler(onTouchBegan,cc.Handler.EVENT_TOUCHES_BEGAN )
    listener:registerScriptHandler(onTouchMoved,cc.Handler.EVENT_TOUCHES_MOVED )

    local eventDispatcher = ret:getEventDispatcher()
    eventDispatcher:addEventListenerWithSceneGraphPriority(listener, ret) 
    
    return ret
end
function BugsTestMain()
	cclog("BugsTestMain")
	local scene = cc.Scene:create()
	scene:addChild(BugsTestMainLayer())
	scene:addChild(CreateBackMenuItem())
	return scene
end
