﻿if (!window.pblnew)
	window.pblnew = {};

pblnew.Scene = function() {
}

pblnew.Scene.prototype =
{
    handleLoad: function(plugIn, userContext, rootElement) {
        this.plugIn = plugIn;

    }

    // Sample event handlers
    
}
//以下開始User function定義

var beginX;
var beginY;
var isMouseDown = false;
var xmlDoc;
var token, token2;
var mvar1, mvar2,mvar3;
var mtimer;
var mangle = 5;
var mcount = 0;
var mcount2 = 0;
var mlen = 0;
var mcnt = 0;

function star_turn() {
    mtimer=setInterval("my_turn()", 5)
}



function moveleft() {
    stop_turn();
    start_move();

}

function moveright() {
    stop_turn();
    start_move2();

}
 function start_move() {
     mtimer = setInterval("my_move2()", 1);
 }
 function start_move2() {
     mtimer = setInterval("my_move()", 1);
 }

 function my_move() {
    
     
     var shost = document.getElementById("silverlightPlugIn");
     var listitem = "";
     var e = shost.content.findName("layer1");
     var f = e.findName("layer3");

     if (mlen >= -((f.children.count - 8) * 100)) { mlen = mlen - mangle; }
     
     f["Canvas.Left"]=mlen;

 }
 function my_move2() {
     if (mlen<0) {mlen = mlen + mangle;}

     var shost = document.getElementById("silverlightPlugIn");
     var listitem = "";
     var e = shost.content.findName("layer1");
     var f = e.findName("layer3");
     f["Canvas.Left"] = mlen;

 }

function my_turn() {
    mangle = mangle + 5;
    mcount = mcount + 1;
    var vNum = Math.random();
 
    var shost = document.getElementById("silverlightPlugIn");
    var listitem = "";
    var e = shost.content.findName("layer1");
    var f = e.findName("layer2");
   
    var xx = 360 / f.children.count;
    
    for (i = 0; i < f.children.count; i++) {

        
        var mchild = f.children.getItem(i);
        if (mchild.Name.indexOf("xobj") >= 0) { //listitem += mchild.Name + ',';
            
            mchild["Canvas.Left"] = (400 + (Math.cos((i * xx+mangle) * Math.PI / 180) * (200+mcount2)) - 50)
            mchild["Canvas.Top"] = (400 + (Math.sin((i * xx + mangle) * Math.PI / 180) * (200 +  mcount2)) - 39)
          
        }
        //listitem += mchild.Name + ',';
    }



        var mchild = e.findName("zobj");
        mchild["Canvas.Left"] = (350 + (Math.sin((mangle) * Math.PI / 180) * 360) - 0);
        mchild["Canvas.Top"] = 400
        if (Math.cos((mangle) * Math.PI / 180) * 50 >= 10) {
            mchild["Width"] = Math.cos((mangle) * Math.PI / 180) * 50;
            mchild["Height"] = Math.cos((mangle) * Math.PI / 180) * 50;
            mchild["Canvas.ZIndex"] = 1000

        } else { mchild["Canvas.ZIndex"] = 0 }
        //mchild["Canvas.Top"] = (375 + (Math.cos(( mangle) * Math.PI / 180)*Math.sin(( mangle) * Math.PI / 180) * (50 + mcount2)) - 10)
        var mchild = e.findName("tobj");
        mchild["Canvas.Top"] = (350 + (Math.cos((mangle-90) * Math.PI / 180) * 360) - 0);
       mchild["Canvas.Left"] = 350
        if (Math.cos((mangle) * Math.PI / 180) * 50 >= 10) {
            mchild["Width"] = Math.cos((mangle) * Math.PI / 180) * 50;
            mchild["Height"] = Math.cos((mangle) * Math.PI / 180) * 50;
            mchild["Canvas.ZIndex"] = 1000

        } else { mchild["Canvas.ZIndex"] = 1}
    
        //listitem += mchild.Name + ',';
   
    if (mcount <= 45) {mcount2 =mcount2+1;js_setZindex(mchild,""); }else mcount2 -= 1;
    if (mcount > 90) { mcount = 0;  }
    shost.content.findName("per").Text = mcount.toString();
    //alert(listitem);
    
}

function stop_turn()
{ clearInterval(mtimer) }


function p_change(sender, args) 
{
    window.open(sender.Tag, '_self', '');
}

function p_link(sender,args) {
    window.open(sender.Text, '_blank', 'toolbar,scrollbars,width=600,height=400,resizable');

 }

function js_download() {     //js_download 下載 var1=要下載的xaml檔,var2=完成呼叫,var3=過程%呼叫
  
    var shost = document.getElementById("silverlightPlugIn");
    var theDownloader = shost.createObject("downloader");
    
	eval('token = theDownloader.addEventListener("completed", '+mvar2+')');
	eval('token2 = theDownloader.addEventListener("downloadProgressChanged",'+mvar3+')');
	
	theDownloader.open("GET",mvar1);
	theDownloader.send();

	
}

function onCompleted(sender, args) {
    var mlnk = "";
    var mpth = "";
    var nxaml = "";
    var shost = document.getElementById("silverlightPlugIn");
	//var xamlcontent = shost.content.createFromXamlDownloader(sender, "");
	var objCanvas=shost.content.findName("layer1");
    //var objCanvas = document.getElementById("silverlightPlugIn");
	var x = xmlDoc.getElementsByTagName("items");
	var xamlformat = sender.ResponseText;
	var xobjnam = "";
	var oxaml = "";
	var mang = 360 / x.length;
	var mstr = "";
	var mstr2 = "";
	var xxcnt = 0;
	for (i = 0; i < x.length; i++) {
	    xxcnt = 0;
	    for (j = 0; j < x[i].childNodes.length; j++) {
	        //alert(x[i].childNodes[j].firstChild.nodeValue);break;
	        if (x[i].childNodes[j].nodeType != 1) { continue; }
	        else {
	            if (xxcnt == 0) { mpth = x[i].childNodes[j].firstChild.nodeValue; }
	            else {
	                mlnk = x[i].childNodes[j].firstChild.nodeValue;}
	                xxcnt += 1;
	            
	            if (xxcnt >= 2) { break;}
	            
	        }
	    }
	        nxaml = xamlformat;
	        oxaml = xamlformat;
	        //oxaml = xmlDoc;
	        //xobjnam = "obj" + (i + 2);
	        nxaml = nxaml.replace('x:Name="obj1"', 'x:Name="xobj' + (i) + '"');
	        nxaml = nxaml.replace('x:Name="obj1_brush"', 'x:Name="xobj' + (i) + '_brush"');
	        nxaml = nxaml.replace('x:Name="obj1_rotate"', 'x:Name="xobj' + (i) + '_rotate"');
	        nxaml = nxaml.replace('TargetName="obj1_rotate"', 'TargetName="xobj' + (i) + '_rotate"');
	        nxaml = nxaml.replace('ImageSource=""', 'ImageSource="' + mpth + '"');
	        nxaml = nxaml.replace('Tag=""', 'Tag="' + mlnk + '"');

	        //nxaml = nxaml.replace('MouseLeftButtonDown="js_onMouseDown"', '');
	        //nxaml = nxaml.replace('MouseLeftButtonUp="js_onMouseUp"', '');
	        nxaml = nxaml.replace('MouseMove="js_onMouseMove"', '');

	        oxaml = oxaml.replace('x:Name="obj1"', 'x:Name="yobj' + (i) + '"');
	        oxaml = oxaml.replace('x:Name="obj1_brush"', 'x:Name="yobj' + (i) + '_brush"');
	        oxaml = oxaml.replace('x:Name="obj1_rotate"', 'x:Name="yobj' + (i) + '_rotate"');
	        oxaml = oxaml.replace('TargetName="obj1_rotate"', 'TargetName="yobj' + (i) + '_rotate"');
	        oxaml = oxaml.replace('ImageSource=""', 'ImageSource="' + mpth + '"');
	        //oxaml = oxaml.replace('MouseMove="js_onMouseMove"', '');
	        oxaml = oxaml.replace('Tag=""', 'Tag="' + mlnk + '"');


	        nxaml = nxaml.replace('Canvas.Left="0"', 'Canvas.Left="' + (400 + (Math.cos(i * mang * Math.PI / 180) * 200) - 50) + '"');
	        nxaml = nxaml.replace('Canvas.Top="0"', 'Canvas.Top="' + (400 + (Math.sin(i * (mang * Math.PI / 180)) * 200) - 39) + '"');


	        oxaml = oxaml.replace('Canvas.Left="0"', 'Canvas.Left="' + (i * 100) + '"');

	        //else { nxaml = nxaml.replace('Canvas.Left="100"', 'Canvas.Left="' + (200+((i ) * 50)) + '"'); }



	        //var aa=js_create_obj(nxaml, "", "layer1");
	        mstr += nxaml;
	        mstr2 += oxaml;
	    
	 
	}
	mstr = '<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="800" Height="600" Canvas.Left="0" Canvas.Top="0" x:Name="layer2">' + mstr + '</Canvas>';
	mstr2 = '<Canvas xmlns="http://schemas.microsoft.com/client/2007" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="100" Height="100" Canvas.Left="0" Canvas.Top="0" x:Name="layer3">' + mstr2 + '</Canvas>';
	
	//alert(mstr2);
	//var obj = shost.content.createFromXaml(mstr);
	//objCanvas.children.add(obj);
	var obj2 = shost.content.createFromXaml(mstr2);
	objCanvas.children.add(obj2);
	mangle = 1;
	start_move2();
	handleCleanUp(sender, args);
}

function ondownloadProgressChanged(sender, args)
{
 var mper = Math.floor(sender.downloadProgress*100);
 var mcontrol=sender.findName("per")
 mcontrol.Text=mper + "%";
}


function handleCleanUp(sender, args) {
    sender.removeEventListener("completed", token);
    sender = null;
    
}


function js_loadxml(sender, args) //亂數強迫ajax重新 reload movie.aspx
{
    mvar1="scene_s.xaml"
    mvar2="onCompleted";
    mvar3="ondownloadProgressChanged";
    js_loadxmlstart('xml/xml2.aspx', 'items', 'js_loadxmlfinish', 'layer1', "js_download");
}



//*******************************共用function ********************************************************************************************************************



function js_loadxmlstart(url, mtagnam, mfunc, mlayer, mfuncnam) //以下是固定呼叫ajax 的寫法,可不用動, 參數(xml的url,xml裡的tagname,完成後要呼叫的function名,canvas的名字,讀到xml後要呼叫的function)
{
    var vNum;
    vNum = Math.random();
    var http_request = false;
    if (window.XMLHttpRequest)
    { http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml'); } }
    else if (window.ActiveXObject)
    { try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { } } }
    if (!http_request) { alert('Giving up :( Cannot create an XMLHTTP instance'); return false; }
    http_request.onreadystatechange = function() { eval(mfunc + '(http_request,"' + mtagnam + '","' + mlayer + '","'+mfuncnam+'")'); } //宣告回應時要處理的function,下面ajax_result()
    http_request.open('GET', url, true); //宣告psot or get,注意大寫, url是上面傳入的
    http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    http_request.send('rnd=' + vNum);  //null表示不傳給對方參數,有的話請改成 'id=1234&email=test@yahoo.com&age=30//
}

function js_loadxmlfinish(http_request, mtagnam, mlayer, funcnam) //來自 js_loadxmlstart()
{ 
    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            xmlDoc = http_request.responseXML;  //取得回傳成功的XML文件格式//
            
            eval(funcnam+'()');
         
        }
        else { alert('There was a problem with the request.'); }
    }
}

function js_setZindex(sender, args)    //將物件移到最上層
{
    //var slhost = document.getElementById("silverlightPlugIn");
    var slhost = sender.getHost();
    var oldindex = sender["Canvas.ZIndex"];
    var newindex = 0;
    var e = slhost.content.findName("layer1");
    for (i = 0; i < e.children.count; i++) {
        var mchild = e.children.getItem(i);
        var newindex = mchild["Canvas.ZIndex"];
        if (newindex > 0 && newindex >= oldindex && mchild != sender) {
            mchild["Canvas.ZIndex"] = newindex - 1;
        }
    }
    sender["Canvas.ZIndex"] = e.children.count;
  
}

function js_onMouseDown(sender, args) //按下滑鼠時取得mouse event
{var shost = sender.getHost();
    //shost.content.findName("per").Text = sender.Name;
    //beginX = args.getPosition(null).x;
    //beginY = args.getPosition(null).y;
    //if (sender.Name.indexOf('xobj') < 0) {
    //    js_setZindex(sender, args);
    //}
    //isMouseDown = true;
    sender.Opacity = 0.5; stop_turn();
    //sender.captureMouse();
	//stop_turn();
    //star_turn();
}

function js_onMouseMove(sender, args)    //拖拉物件
{
   // var msg = args.getPosition(null).x + "," + args.getPosition(null).y;
    //if (isMouseDown == true) {
    //    var currX = args.getPosition(null).x;
    //    var currY = args.getPosition(null).y;
    //    sender["Canvas.Left"] += currX - beginX;
    //    sender["Canvas.Top"] += currY - beginY;
    //    beginX = currX;
    //    beginY = currY;

    //} else {

    if (args.getPosition(null).y <= 78) {

        if (args.getPosition(null).x <= 10) { mangle = 50; stop_turn(); start_move(); }
        if (args.getPosition(null).x > 10 && args.getPosition(null).x <= 70) { mangle = 10; stop_turn(); start_move(); }
        if (args.getPosition(null).x > 70 && args.getPosition(null).x < 250) {mangle = 2;  stop_turn(); start_move(); }
        if (args.getPosition(null).x > 250 && args.getPosition(null).x <= 430) { mangle = 2; stop_turn(); start_move2(); }
        if (args.getPosition(null).x > 430 && args.getPosition(null).x <= 500) { mangle = 10; stop_turn(); start_move2(); }
        if (args.getPosition(null).x > 500 && args.getPosition(null).x <= 520) { mangle = 50; stop_turn(); start_move2(); }
        if (args.getPosition(null).x > 520 && args.getPosition(null).x <= 770) { mangle = 10; stop_turn(); start_move2(); }
        if (args.getPosition(null).x >= 770) { mangle = 50; stop_turn(); start_move2(); }    
     }
  
    else { stop_turn(); }    
    //}
    //sender.findName("per").Text = msg;
}

function js_onMouseUp(sender, args)    //放開滑鼠
{
    //isMouseDown = false;
    sender.Opacity = 1;
    //sender.releaseMouseCapture();
    stop_turn();
    //sender["Canvas.ZIndex"] = 0;
    if (sender.toString() == "Rectangle" && sender.Name.indexOf('obj') >= 0) { p_change(sender, args); }

}

function js_create_obj(mstr, mtagnam, mlayer) //建立物件
{
    var nindex = -1;
    var slhost = document.getElementById("silverlightPlugIn");
    var e = slhost.content.findName(mlayer);
    for (i = 0; i < e.children.count; i++) {
        var mchild = e.children.getItem(i);
        if (mchild.Name == mtagnam) { nindex = i; break; }
    }
    if (e != null && nindex > -1) { e.children.removeAt(nindex); }

    var xe = slhost.content.CreateFromXaml(mstr);
    var e = slhost.content.findName(mlayer);
    e.children.Add(xe);

}
