<script language="JavaScript" src="/js/Kribi3DPlayer.js" type="text/javascript"></script>

    <script language="JavaScript" src="/js/gFunct.js" type="text/javascript"></script>

   

    <script language="JavaScript" type="text/javascript">

 

        var controlCount = 3;

        var loadedControls = 0;

        var opening = false;

        var opened = false;

        var materialCurrent = -1;

        var materialVersion = -1;

        var arrMaterial_TextureScaleX;

        var arrMaterial_TextureScaleY;

       

        /* ------------------------------------------------------------ */

        /* This function is invoked every time the player sends a message to the

        * browser, we use it to intercept the Ready event which is sent when

        * the player is ready to accept commands and the ModelOpened event which is

        * sent when the model has been loaded. */

        function KribiPlayer_Tell(msg) {

            var player = document.getElementById("KribiPlayer");

            if (msg == "Ready") {

                // The player is ready to accept commands.

            } else if (msg == "ModelOpened") {

                // The model has been opened, initialize the camera and the page controls.

                opened = true;

                DefaultView_init();

                // Save the initial parameters of every instance.

                // 1. fill array

                var count = player.Do("Material GetCount");

                arrMaterial_TextureScaleX = new Array(count);

                arrMaterial_TextureScaleY = new Array(count);

                for (i = 0; i < count; i++) {

                    var materialTextureScales = player.Do("Material[" + i + "] TextureScales ");

                    var arr_materialTextureScales = materialTextureScales.split(",");

                    arrMaterial_TextureScaleX[i] = arr_materialTextureScales[0] * 1000;

                    arrMaterial_TextureScaleY[i] = arr_materialTextureScales[1] * 1000;

                }

            } else if (msg == "Refresh") {

                if ((loadedControls == controlCount) && !opening) {

                    // Wait for all the controls to be opened, make sure that this will run only once.

                    opening = true;

                    player.Do("Model OpenAsync '" + FullModelsPath() + "Toys_MatTextureV01_OP.kmo'");

                } else if (opened) {

                    // If the model has already been opened do a normal refresh.

                    var version = player.Do("Material GetVersion");

                    var current = player.Do("Material GetCurrent");

                    if ((current != materialCurrent) || (version != materialVersion)) {

                        materialCurrent = current;

                        materialVersion = version;

                        set_Parameter();

                    }

 

                }

            }

 

        }

    

        /* ------------------------------------------------------------ */

        // Set default

        function DefaultView_init() {

            var player = document.getElementById("KribiPlayer");

            // Set the camera to its initial position.

                  player.Do("Camera Position -1910.91,-5051.08,3266.14");

                  player.Do("Camera Orientation -110.438,13.3213,0");

                  player.Do("Camera FieldOfView 71.00");

            // Enable realistic rendering.

                  player.Do("Renderer Shading Realistic");

                  // Set tool

                  InstanceHorizontalPlaneMove();

                  //Set the default material

                  player.Do("Material SetCurrent 'Texture1'");

        }

 

        /* ------------------------------------------------------------ */

        // Tools

        function InstanceHorizontalPlaneMove() {

            // Set Tool InstanceHorizontalPlaneMove

            var player = document.getElementById("KribiPlayer");

            player.Do("Tool SetCurrent 'InstanceHorizontalPlaneMove'");

            player.Do("View SelectionStyle None");

        }

 

        /* ------------------------------------------------------------ */

        // Function

        function ConvertPercentage(myValue) {

            var convert_value = myValue / 100.0;

            return convert_value.toString();

        }

        /* ------------------------------------------------------------ */

        function SetBitmap(var_pic) {

            var player = document.getElementById("KribiPlayer");

            player.Do("Material Texture '" + var_pic + "'");

        }

        /* ------------------------------------------------------------ */

        function setSlider(slider, original_value, value) {

            var max = parseInt(original_value) *2;

            var min = parseInt(original_value) *0.5;

            slider.set_maximumValue(max);

            slider.set_minimumValue(min);

            slider.set_value(parseInt(value));

        }

        /* ------------------------------------------------------------ */

        function set_Parameter() {

            var player = document.getElementById("KribiPlayer");

            var materialSelected = player.Do("Material GetCurrent");

            if (materialSelected != "") {

                player.Do("Material SetCurrent " + materialSelected + " ");

                var materialTextureAmount = player.Do("Material TextureAmount ");

                var materialTextureScales = player.Do("Material TextureScales ");

                var arr_materialTextureScales = materialTextureScales.split(",");

                // set value of textbox and slider

                window.document.getElementById("txt_TextureAmount").value = materialTextureAmount * 100;

                var js_slider_TextureAmount = $find("<%= slider_TextureAmount.ClientID %>");

                js_slider_TextureAmount.set_value(parseInt(materialTextureAmount * 100));

 

                window.document.getElementById("txt_Xscale").value = arr_materialTextureScales[0] ;

                window.document.getElementById("txt_Yscale").value = arr_materialTextureScales[1] ;

 

                var js_slider_Xscale = $find("<%= slider_Xscale.ClientID %>");

                setSlider(js_slider_Xscale,arrMaterial_TextureScaleX[materialSelected], arr_materialTextureScales[0] * 1000);

 

                var js_slider_Yscale = $find("<%= slider_Yscale.ClientID %>");

                setSlider(js_slider_Yscale, arrMaterial_TextureScaleY[materialSelected], arr_materialTextureScales[1] * 1000);

 

            }

        }

 

        /* ------------------------------------------------------------ */

        // Event handlers.

        /* Increase the count of the 'loaded' global variable, this is used to

        * check when all the Telerik controls have been loaded before sending

        * commands to the player. */

        function HandleClientLoad() {

            loadedControls++;

        }

        /* ------------------------------------------------------------ */

        function HandleValueChange_TextureAmount(sender, eventArgs) {

            $get("txt_TextureAmount").value = sender.get_value();

            var player = document.getElementById("KribiPlayer");

            player.Do("Material TextureAmount " + ConvertPercentage(sender.get_value()) + " ");

        }

        /* ------------------------------------------------------------ */

        function HandleValueChange_Xscale(sender, eventArgs) {

            if (document.getElementById("txt_Yscale").value != undefined) {              

                var player = document.getElementById("KribiPlayer");

                var js_txt_Yscale = document.getElementById("txt_Yscale");

                player.Do("Material TextureScales " + sender.get_value() / 1000 + "," + js_txt_Yscale.value  + " ");

            }

        }

        /* ------------------------------------------------------------ */

        function HandleValueChange_Yscale(sender, eventArgs) {

            if (document.getElementById("txt_Xscale").value != undefined) {

                var player = document.getElementById("KribiPlayer");

                var js_txt_Xscale = document.getElementById("txt_Xscale");

                player.Do("Material TextureScales " + js_txt_Xscale.value  + "," + sender.get_value() / 1000 + " ");

            }

           

        }