home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 February / Chip_2004-02_cd1.bin / opsys / wmakeup / downloads / morpheleon.wmz / morpho.js < prev    next >
Text File  |  2003-12-01  |  38KB  |  1,006 lines

  1. /*
  2. //    A Prashant Kukade design. All rights reserved.
  3. //    i try to name all my functions & variables so that they are self explainatory...  :) ;)
  4. */    
  5.  
  6. var plVisiblity = false;
  7. var eqVisiblity = false;
  8. var visVisiblity = false;
  9. var saPLvisible = false;
  10. var saEQvisible = false;
  11. var vidIsON = false;
  12. var isMax = false;
  13. var clrzVisiblity = false;
  14. var isAnim = false;
  15. var isXtended = false;
  16.  
  17. var hueVal = theme.loadPreference("skinHue");
  18. var satVal = theme.loadPreference("skinSaturation");
  19. var darkHexVal;
  20. var lightHexVal;
  21.  
  22. var mediaPlyrHue = mediacenter.backHueShift 
  23. var mainhue = (mediaPlyrHue + 120);            
  24. theme.savePreference("skinHue", mainhue); 
  25.  
  26. var mediaPlyrSat = mediacenter.backSaturation
  27. var mainSat; if (mediaPlyrSat > 1.5) {mainSat = 1.5} else {mainSat = mediaPlyrSat};
  28. theme.savePreference("skinSaturation", mainSat); 
  29.  
  30.  
  31. function openMain() {
  32.     if (player) {
  33.     }
  34.     view.width              = 0;
  35.     view.height             = 0;
  36.     view.backgroundImage    = "";
  37.     var gotoView = ( theme.loadPreference("activeView") == "--" ) ? 'main' : theme.loadPreference("activeView");
  38.     theme.currentViewID = gotoView; 
  39. }
  40.  
  41.  
  42. function initilize(whome) {
  43.  
  44.     darkHexVal = mediacenter.itemPlayingColor;
  45.     lightHexVal = mediacenter.appColorLight;
  46.  
  47.     switch(whome) {
  48.         case "main" :
  49.             mainFn('changeHue'); hueSlider(mainhue);
  50.             mainFn('changeSat'); satBar.value = mainSat;
  51.             vidIsRunning = (player.OpenState == 13) && (player.currentMedia.ImageSourceWidth>0);
  52.             vidIsRunning ? vidFn('load') : vidFn('hide');
  53.             loadPL();
  54.             getMetadata('main');
  55.             getRating('inMain');
  56.             var actView = theme.currentViewID;
  57.             theme.savePreference("activeView", actView);
  58.         break;
  59.         case "mini" :
  60.             miniFn('changeHue');
  61.             miniFn('changeSat');
  62.             vidIsRunning = (player.OpenState == 13) && (player.currentMedia.ImageSourceWidth>0);
  63.             vidIsRunning ? vidFn('load') : vidFn('hide');
  64.             loadPL();
  65.             getMetadata('mini');
  66.             var actView = theme.currentViewID;
  67.             theme.savePreference("activeView", actView);
  68.         break;
  69.         case "plSA" :
  70.             saPLvisible = true;
  71.             plSA.width = ( theme.loadPreference("plSAwd") == "--" ) ? '500' : theme.loadPreference("plSAwd");
  72.             plSA.height = ( theme.loadPreference("plSAht") == "--" ) ? '300' : theme.loadPreference("plSAht");
  73.             plFn('changeHue');
  74.             plFn('changeSat');
  75.             theme.savePreference("plSA", "true");
  76.             getRating('inPLsa');
  77.             saPLAVlist.setColumnResizeMode( 0, "Stretches" ), saPLAVlist.setColumnResizeMode( 1, "Stretches" ), saPLAVlist.setColumnResizeMode( 2, "Stretches" );
  78.             if(player.settings.getMode('shuffle') == true) {saPLshufBtn.down = true} else {saPLshufBtn.down = false};
  79.             if(player.settings.getMode('loop') == true) {saPLreptBtn.down = true} else {saPLreptBtn.down = false};
  80.             saPLAVlist.backgroundColor = getHexVal(darkHexVal);
  81.             saPLAVlist.itemPlayingBackgroundColor = getHexVal(lightHexVal);
  82.         break;
  83.         case "eqSA" :
  84.             eqFn('changeHue');
  85.             eqFn('changeSat');
  86.             theme.savePreference("eqSA", "true")
  87.             saEQvisible = true;
  88.         break;
  89.         case "vidz" :
  90.             vidFn('changeHue')
  91.             vidFn('changeSat')
  92.             vidFn('fit');
  93.             vidBck.backgroundColor = getHexVal(darkHexVal);
  94.         break;
  95.     }
  96. }
  97.  
  98.  
  99. function viewToggle(which){
  100.     if (theme.loadPreference( which ) == "true") {
  101.         theme.savePreference( which , "false");
  102.         theme.closeView( which );
  103.     } else {
  104.         theme.openView( which );
  105.     }                
  106. }
  107.  
  108.  
  109. function loadPL() {
  110.  
  111.     var curPL = theme.loadPreference("currentPL");
  112.  
  113.     if (player){
  114.         switch (player.playState){
  115.             case 0:     //undefined  playItem.value
  116.                 player.currentPlaylist = player.playlistCollection.getByName(curPL).item(0);
  117.                 player.controls.play();
  118.                 break;
  119.             case 1:     //stopped
  120.                 player.currentPlaylist = player.playlistCollection.getByName(curPL).item(0);
  121.                 player.controls.play();
  122.                 break;
  123.         }
  124.     }
  125. }
  126.  
  127.  
  128. function stateChanged(ofWhome) {
  129.     
  130.     switch (ofWhome) {
  131.         case "main":
  132.             vidIsRunning = (player.OpenState == 13) && (player.currentMedia.ImageSourceWidth>0);
  133.             vidIsRunning ? vidFn('load') : vidFn('hide');
  134.             getMetadata('main');
  135.             getRating('inMain');
  136.             break;
  137.         case "mini":
  138.             vidIsRunning = (player.OpenState == 13) && (player.currentMedia.ImageSourceWidth>0);
  139.             vidIsRunning ? vidFn('load') : vidFn('hide');
  140.             getMetadata('mini');
  141.             break;
  142.         case "plSA" :
  143.             getRating('inPLsa');
  144.             break;
  145.     }
  146. }
  147.  
  148.  
  149. function getMetadata(forWhome) {
  150.     switch (forWhome) {
  151.         case "main":
  152.             main.title = player.currentMedia.name + ' : by : ' + player.currentmedia.getiteminfo('author');
  153.             metadata.value = (player.currentMedia) ? player.currentmedia.getiteminfo('author') : "";
  154.             if(metadata.value != "") {
  155.                 metadata.value += " ╖╖ ";
  156.             }
  157.             metadata.value += (player.currentMedia) ? player.currentmedia.name : "";
  158.             metadata.scrolling = true;
  159.             break;
  160.         case "mini":
  161.             mini.title = player.currentMedia.name + ' : by : ' + player.currentmedia.getiteminfo('author');
  162.             metaMini.value = (player.currentMedia) ? player.currentmedia.getiteminfo('author') : "";
  163.             if(metaMini.value != "") {
  164.                 metaMini.value += " ╖╖ ";
  165.             }
  166.             metaMini.value += (player.currentMedia) ? player.currentmedia.name : "";
  167.             metaMini.scrolling = true;
  168.             break;        
  169.     }
  170. }
  171.  
  172.  
  173. function changeBackHue(newVal) {
  174.     hueVal = (newVal<0) ? (newVal+360) : newVal;
  175.     mediacenter.backHueShift = (hueVal - 120);
  176.     theme.savePreference("skinHue", hueVal);
  177.     mainFn('changeHue');
  178. }
  179.  
  180.  
  181. function changeBackSat(newVal) {
  182.     satVal = newVal;
  183.     mediacenter.backSaturation = satVal;
  184.     theme.savePreference("skinSaturation", satVal);
  185.     mainFn('changeSat');
  186. }
  187.  
  188.  
  189. /* 
  190.     color conversion functions taken from  : http://www.eecs.umich.edu/~radu/tools/picker.html
  191.      actual functions @ the bottom....
  192. */
  193.  
  194. function getHexVal (hex) {
  195.     var hexRGB = HextoRGB(hex);
  196.     var rgbHSV = RGBtoHSV(hexRGB.r, hexRGB.g, hexRGB.b);
  197.     
  198.     if (mediacenter.backSaturation == 0) {
  199.         rgbHSV.h = (rgbHSV.h - 0);
  200.         rgbHSV.s = (rgbHSV.s - 0.001);
  201.         rgbHSV.v = (rgbHSV.v - 0.03);        
  202.     } else if (mediacenter.backSaturation < 0.25) {
  203.         rgbHSV.h = (rgbHSV.h - 15);
  204.         rgbHSV.s = (rgbHSV.s - 0.04);
  205.         rgbHSV.v = (rgbHSV.v - 0.03);        
  206.     } else if (mediacenter.backSaturation < 0.5) {
  207.         rgbHSV.h = (rgbHSV.h - 18);
  208.         rgbHSV.s = (rgbHSV.s - 0.07);
  209.         rgbHSV.v = (rgbHSV.v - 0.03);        
  210.     } else if (mediacenter.backSaturation < 0.75) {
  211.         rgbHSV.h = (rgbHSV.h - 17);
  212.         rgbHSV.s = (rgbHSV.s - 0.11);
  213.         rgbHSV.v = (rgbHSV.v - 0.03);        
  214.     } else if (mediacenter.backSaturation < 1) {
  215.         rgbHSV.h = (rgbHSV.h - 18);
  216.         rgbHSV.s = (rgbHSV.s - 0.18);
  217.         rgbHSV.v = (rgbHSV.v - 0.025);        
  218.     } else if (mediacenter.backSaturation < 1.35) {
  219.         rgbHSV.h = (rgbHSV.h - 18);
  220.         rgbHSV.s = (rgbHSV.s - 0.22);
  221.         rgbHSV.v = (rgbHSV.v - 0.03);        
  222.     } else {
  223.         rgbHSV.h = (rgbHSV.h - 18);
  224.         rgbHSV.s = (rgbHSV.s - 0.27);
  225.         rgbHSV.v = (rgbHSV.v - 0.03);        
  226.     }
  227.  
  228.     var rgbVal = HSVtoRGB(rgbHSV.h, rgbHSV.s, rgbHSV.v);
  229.     
  230.     return RGBtoHex(rgbVal.r, rgbVal.g, rgbVal.b);
  231. }
  232.  
  233.  
  234. function barColors (hex) {
  235.     var hexRGB = HextoRGB(hex);
  236.     var rgbHSV = RGBtoHSV(hexRGB.r, hexRGB.g, hexRGB.b);
  237.     
  238.     rgbHSV.h = (rgbHSV.h - 20);
  239.     rgbHSV.s = (rgbHSV.s + 0.25);
  240.     rgbHSV.v = (rgbHSV.v - 0.195);        
  241.  
  242.     var rgbVal = HSVtoRGB(rgbHSV.h, rgbHSV.s, rgbHSV.v);
  243.     
  244.     return RGBtoHex(rgbVal.r, rgbVal.g, rgbVal.b);
  245. }
  246.  
  247.  
  248. function hueSlider(mainHue) {
  249.     var hueSlide = (mainHue<=180) ? mainHue : (mainHue-360);
  250.     hueBar.value = hueSlide;
  251. }
  252.  
  253.  
  254.  
  255. /* 
  256.  
  257.         the MORPHING CODE..............
  258.         
  259.         would like to say patent pending & that kinda stuff....  but hey, who m i kidding...  ;-) :-) :-D
  260.  
  261. */
  262.  
  263.  
  264. var stepAhead = 0;
  265. var stepBack = 13;
  266. var stepXbck = 4;
  267.  
  268. function morph(whome, file, num) {
  269.     switch (whome) {
  270.         case "toMini" :
  271.             main.width = Back.width = 337;
  272.             Back.backgroundImage = file + stepAhead + '.bmp';
  273.             stepAhead++
  274.             main.timerInterval = 70;
  275.             if (stepAhead == num) isAnim = false, stepAhead = 0, main.timerInterval = 0, mainFn('goMini');
  276.         break;
  277.         case "toMain" :
  278.             mini.height = mBack.height = 93;
  279.             mBack.backgroundImage = file + stepBack + '.bmp';
  280.             stepBack--
  281.             mini.timerInterval = 70;
  282.             if (stepBack == 0) isAnim = false, mini.timerInterval = 0, miniFn('goMain');
  283.         break;
  284.         case "shoXten" :
  285.             isAnim = true;
  286.             mini.height = 55;
  287.             mBack.backgroundImage = file + stepAhead + '.bmp';
  288.             stepAhead++
  289.             mini.timerInterval = 72;
  290.             if (stepAhead == num) isAnim = false, stepAhead = 0, mini.timerInterval = 0, miniFn('shoXtended');
  291.         break;
  292.         case "hideXten" :
  293.             muteBack.visible = false;
  294.             mBack.backgroundImage = file + stepXbck + '.bmp';
  295.             stepXbck--
  296.             mini.timerInterval = 74;
  297.             if (stepXbck == 0) isAnim = false, stepXbck = 4, mini.timerInterval = 0, miniFn('hideXtended'), mini.alphaBlendTo(125, 200);
  298.         break;
  299.     }
  300. }
  301.  
  302.  
  303. function fader (whome) {
  304.     switch (whome) {
  305.         case "main" :
  306.             if (plVisiblity) plFn('shoINmain');
  307.             if (eqVisiblity) eqFn('shoINmain');
  308.             if (visVisiblity) visFn('shoINmain');
  309.             if (clrzVisiblity) clrzFn('shoINmain');
  310.             isAnim = true;
  311.             sBtnBack.visible = subCtrl.visible = appBtn.visible = metadata.visible = statusTxt.visible = infoO.visible = seekBar.visible = btnsBck.visible = btnBack.visible = mCtrl.visible = mPause.visible = oneBck.visible = twoBck.visible = threBck.visible = fourBck.visible = muteBack.visible = vMuteBtn.visible = volBar.visible = false;
  312.             sBtnHldr.alphaBlendTo(0, 300); appCtrl.alphaBlendTo(0, 300); btnHldr.alphaBlendTo(0, 300); numOne.alphaBlendTo(0, 250); numTwo.alphaBlendTo(0, 250); colo.alphaBlendTo(0, 250); numThre.alphaBlendTo(0, 250); numFour.alphaBlendTo(0, 250); trkBck.alphaBlendTo(0, 300); volBck.alphaBlendTo(0, 300);
  313.             main.timerInterval = 320;
  314.         break;
  315.         case "mini" :
  316.             if (theme.loadPreference( 'plSA' ) == "true") {
  317.                 theme.savePreference( 'plSA' , "false");
  318.                 theme.closeView( 'plSA' );
  319.             }
  320.             if (theme.loadPreference( 'eqSA' ) == "true") {
  321.                 theme.savePreference( 'eqSA' , "false");
  322.                 theme.closeView( 'eqSA' );
  323.             }
  324.             isAnim = true;
  325.             muteBack.visible = muteBtn.visible = mInfo.visible = metaMini.visible = mInfoO.visible = mSeekBar.visible = mVolBar.visible = mBtnBack.visible = miniToMain.visible = miniCtrl.visible = miniPause.visible = miniPrev.visible = mSbtnBack.visible = miniPLEQ.visible = mAppCtrl.visible = false;
  326.             mBtnHldr.alphaBlendTo(0, 300); mSbtnHldr.alphaBlendTo(0, 300); mAppBtn.alphaBlendTo(0, 300);
  327.             mini.timerInterval = 320;
  328.         break;
  329.     }
  330. }
  331.  
  332.  
  333. /*
  334.         end MORPHING code........
  335. */
  336.  
  337.  
  338. function mainFn(doWhat) {
  339.  
  340.     darkHexVal = mediacenter.itemPlayingColor;
  341.     lightHexVal = mediacenter.appColorLight;
  342.  
  343.     switch (doWhat) {
  344.         case "close" :
  345.             var curPL = player.currentPlaylist.name;
  346.             theme.savePreference("currentPL", curPL);
  347.             mediacenter.backHueShift = (hueVal - 120);
  348.             mediacenter.backSaturation = satVal;
  349.             view.close();
  350.         break;
  351.         case "goFullMode" :
  352.             var curPL = player.currentPlaylist.name;
  353.             theme.savePreference("currentPL", curPL);
  354.             mediacenter.backHueShift = (hueVal - 120);
  355.             mediacenter.backSaturation = satVal;
  356.             view.returnToMediaCenter();
  357.         break;
  358.         case "goMini" :
  359.             mediacenter.backHueShift = (hueVal - 120);
  360.             mediacenter.backSaturation = satVal;
  361.             theme.closeView( 'vidz' );
  362.             theme.currentViewID = 'mini'        
  363.         break;
  364.         case "changeHue" :
  365.             satBck.backgroundImageHueShift = hueVal;
  366.             Back.backgroundImageHueShift = sBtnHldr.backgroundImageHueShift = appBtn.backgroundImageHueShift = btnsBck.backgroundImageHueShift = btnHldr.backgroundImageHueShift = trkBck.backgroundImageHueShift = volBck.backgroundImageHueShift = muteBack.backgroundImageHueShift = pl.backgroundImageHueShift = plBtnsHldr.backgroundImageHueShift = eq.backgroundImageHueShift = eqOOhldr.backgroundImageHueShift = eqBtnsHldr.backgroundImageHueShift = eqTHldr.backgroundImageHueShift = eqPreHldr.backgroundImageHueShift = vis.backgroundImageHueShift = visBck.backgroundImageHueShift = visName.backgroundImageHueShift = visBtnRHldr.backgroundImageHueShift = visBtnCHldr.backgroundImageHueShift = visBtnFHldr.backgroundImageHueShift = clrzBck.backgroundImageHueShift = clrzBtnsHldr.backgroundImageHueShift = hueVal;
  367.             oneBck.backgroundImageHueShift = twoBck.backgroundImageHueShift = colo.backgroundImageHueShift = threBck.backgroundImageHueShift = fourBck.backgroundImageHueShift = hueVal;
  368.             numOne.hueShift = numTwo.hueShift = numThre.hueShift = numFour.hueShift = hueVal;
  369.             subCtrl.hueShift = appCtrl.hueShift = mCtrl.hueShift = mPause.hueShift = vMuteBtn.hueShift = plBtns.hueShift = pDrpDwn.hueShift = eqOObtn.hueShift = eqBtns.hueShift = eqTbtn.hueShift = eqPre.hueShift = visBtnsR.hueShift = visBtnsC.hueShift = visBtnsF.hueShift = clrzBtns.hueShift = hueVal;
  370.         break;
  371.         case "changeSat" :
  372.             Back.backgroundImageSaturation = sBtnHldr.backgroundImageSaturation = appBtn.backgroundImageSaturation = btnsBck.backgroundImageSaturation = btnHldr.backgroundImageSaturation = trkBck.backgroundImageSaturation = volBck.backgroundImageSaturation = muteBack.backgroundImageSaturation = pl.backgroundImageSaturation = plBtnsHldr.backgroundImageSaturation = eq.backgroundImageSaturation = eqOOhldr.backgroundImageSaturation = eqBtnsHldr.backgroundImageSaturation = eqTHldr.backgroundImageSaturation = eqPreHldr.backgroundImageSaturation = vis.backgroundImageSaturation = visBck.backgroundImageSaturation = visName.backgroundImageSaturation = visBtnRHldr.backgroundImageSaturation = visBtnCHldr.backgroundImageSaturation = visBtnFHldr.backgroundImageSaturation = clrzBck.backgroundImageSaturation = clrzBtnsHldr.backgroundImageSaturation = satVal;
  373.             oneBck.backgroundImageSaturation = twoBck.backgroundImageSaturation = colo.backgroundImageSaturation = threBck.backgroundImageSaturation = fourBck.backgroundImageSaturation = satVal;
  374.             numOne.saturation = numTwo.saturation = numThre.saturation = numFour.saturation = satVal;
  375.             subCtrl.saturation = appCtrl.saturation = mCtrl.saturation = mPause.saturation = vMuteBtn.saturation = plBtns.saturation = pDrpDwn.saturation = eqOObtn.saturation = eqBtns.saturation = eqTbtn.saturation = eqPre.saturation = visBtnsR.saturation = visBtnsC.saturation = visBtnsF.saturation = clrzBtns.saturation = satVal;
  376.         break;
  377.         case "drwDigits" :
  378.             seconds = seekBar.value;
  379.             
  380.             if(player.currentPlaylist.count==0) return;
  381.  
  382.             seconds = seconds - seconds % 1;
  383.  
  384.             numFour.left = -( seconds % 10 ) * 9;
  385.  
  386.             seconds = seconds - ( seconds % 10);
  387.             numThre.left = -( ( seconds % 60 ) / 10 ) * 10;
  388.  
  389.             seconds = seconds - ( seconds % 60 );
  390.             seconds = seconds / 60;
  391.             numTwo.left = -( seconds % 10 ) * 11;
  392.  
  393.             seconds = seconds - ( seconds % 10 );
  394.             numOne.left = -( seconds / 10 ) * 9;
  395.         break;
  396.     }
  397. }
  398.  
  399.  
  400. function miniFn(doWhat) {
  401.     switch (doWhat) {
  402.         case "changeHue" :
  403.             mBack.backgroundImageHueShift = muteBack.backgroundImageHueShift = mInfo.backgroundImageHueShift = mBtnHldr.backgroundImageHueShift = mSbtnHldr.backgroundImageHueShift = mAppBtn.backgroundImageHueShift = hueVal;
  404.             muteBtn.hueShift = miniToMain.hueShift = miniCtrl.hueShift = miniPause.hueShift = miniPrev.hueShift = miniPLEQ.hueShift = mAppCtrl.hueShift = hueVal;
  405.         break;
  406.         case "changeSat" :
  407.             mBack.backgroundImageSaturation =  muteBack.backgroundImageSaturation =  mInfo.backgroundImageSaturation = mBtnHldr.backgroundImageSaturation =  mSbtnHldr.backgroundImageSaturation =  mAppBtn.backgroundImageSaturation = satVal;
  408.             muteBtn.saturation =  miniToMain.saturation =  miniCtrl.saturation =  miniPause.saturation =  miniPrev.saturation =  miniPLEQ.saturation =  mAppCtrl.saturation = satVal;
  409.         break;
  410.         case "shoPrev" :
  411.             (event.shiftKey) ? miniPrev.visible = true : miniPrev.visible = false;
  412.         break;
  413.         case "hidePrev" :
  414.             miniPrev.visible = false;
  415.         break;
  416.         case "shoXtended" :
  417.             isXtended = true;
  418.             mBack.backgroundImage='miniXpand.bmp';
  419.             muteBack.visible = true;
  420.         break;
  421.         case "hideXtended" :
  422.             muteBack.visible = false;
  423.             mBack.backgroundImage='mini.bmp';
  424.             mini.height = 35;
  425.             isXtended = false;
  426.         break;
  427.         case "goMain" :
  428.             mediacenter.backHueShift = (hueVal - 120);
  429.             mediacenter.backSaturation = satVal;
  430.             theme.closeView( 'vidz' );
  431.             theme.currentViewID = 'main';
  432.         break;
  433.         case "goFullMode" :
  434.             var curPL = player.currentPlaylist.name;
  435.             theme.savePreference("currentPL", curPL);
  436.             mediacenter.backHueShift = (hueVal - 120);
  437.             mediacenter.backSaturation = satVal;
  438.             view.returnToMediaCenter();
  439.         break;
  440.         case "close" :
  441.             var curPL = player.currentPlaylist.name;
  442.             theme.savePreference("currentPL", curPL);
  443.             mediacenter.backHueShift = (hueVal - 120);
  444.             mediacenter.backSaturation = satVal;
  445.             view.close();
  446.         break;
  447.     }
  448. }
  449.  
  450.  
  451. function vidFn(doWhat) {
  452.     switch (doWhat) {
  453.         case "load":
  454.             theme.savePreference("VidZ", "true");
  455.             theme.openView( 'vidz' );
  456.             vidIsON = true;
  457.         break;
  458.         case "hide":
  459.             vidIsON = false;
  460.             theme.savePreference("VidZ", "false");
  461.             theme.closeView( 'vidz' );
  462.         break;
  463.         case "changeHue" :
  464.             vidkLT.backgroundImageHueShift =  vZoomBck.backgroundImageHueShift = vidBckLM.backgroundImageHueShift = vidBckLB.backgroundImageHueShift = vResetBck.backgroundImageHueShift = vBtnHldr.backgroundImageHueShift = vMuteBck.backgroundImageHueShift = vidBckMT.backgroundImageHueShift = vidBckMB.backgroundImageHueShift = vidBckRT.backgroundImageHueShift = vidBckRM.backgroundImageHueShift = vidBckRB.backgroundImageHueShift = vOlt.backgroundImageHueShift = vOrt.backgroundImageHueShift = vOlb.backgroundImageHueShift = vOrb.backgroundImageHueShift = hueVal;
  465.             muteBtn.hueShift = resetBtn.hueShift = zoomBtn.hueShift = vCtrl.hueShift = vPause.hueShift = muteBtn.hueShift = vidAppCtrl.hueShift = vidResize.hueShift = hueVal;
  466.         break;
  467.         case "changeSat" :
  468.             vidkLT.backgroundImageSaturation =  vZoomBck.backgroundImageSaturation = vidBckLM.backgroundImageSaturation = vidBckLB.backgroundImageSaturation = vResetBck.backgroundImageSaturation = vBtnHldr.backgroundImageSaturation = vMuteBck.backgroundImageSaturation = vidBckMT.backgroundImageSaturation = vidBckMB.backgroundImageSaturation = vidBckRT.backgroundImageSaturation = vidBckRM.backgroundImageSaturation = vidBckRB.backgroundImageSaturation = vOlt.backgroundImageSaturation = vOrt.backgroundImageSaturation = vOlb.backgroundImageSaturation = vOrb.backgroundImageSaturation = satVal;
  469.             muteBtn.saturation = resetBtn.saturation = zoomBtn.saturation = vCtrl.saturation = vPause.saturation = muteBtn.saturation = vidAppCtrl.saturation = vidResize.saturation = satVal;
  470.         break;
  471.         case "fit" :
  472.             view.height = player.currentMedia.imageSourceHeight + 76;
  473.             view.width = player.currentMedia.imageSourceWidth + 97;
  474.             vidFn('resize');
  475.         break;
  476.         case "resize" :
  477.             vidzArea.horizontalAlignment = 'stretch';
  478.             vidzArea.verticalAlignment = 'stretch'; 
  479.             return;
  480.         break;
  481.         case "maxmin" :
  482.             if (!isMax) {
  483.                 vidzArea.maintainAspectRatio = true
  484.                 vidzArea.horizontalAlignment = 'stretch';
  485.                 vidzArea.verticalAlignment = 'stretch';
  486.                 view.maximize();
  487.             } else {
  488.                 vidzArea.horizontalAlignment = 'stretch';
  489.                 vidzArea.verticalAlignment = 'stretch'; 
  490.                 vidzArea.maintainAspectRatio = false
  491.                 view.restore();
  492.             }
  493.             isMax =  !isMax;
  494.         break;
  495.         case "close" :
  496.             vidIsON = false;
  497.             if( player.currentMedia.ImageSourceWidth>0 ){
  498.                 player.controls.pause();
  499.             }
  500.             theme.savePreference("VidZ", "false");
  501.             view.close()
  502.         break;
  503.         case "onOff" :
  504.             if (theme.loadPreference( 'VidZ' ) == "true") {
  505.                 theme.closeView( 'vidz' );
  506.                 theme.openView( 'vidz' );
  507.             }
  508.         break;
  509.         case "zoomIn" :
  510.             if(mediacenter.videoZoom < 56){
  511.                 mediacenter.videoZoom = 75;
  512.             }else if(mediacenter.videoZoom <76){
  513.                 mediacenter.videoZoom = 100;
  514.             }else if(mediacenter.videoZoom < 101){
  515.                 mediacenter.videoZoom = 150;
  516.             }else{
  517.                 mediacenter.videoZoom = 200;
  518.             }
  519.             vidFn('zoomFit');
  520.         break;
  521.         case "zoomOut" :
  522.             if(mediacenter.videoZoom > 195){
  523.                 mediacenter.videoZoom = 150;
  524.             }else if(mediacenter.videoZoom > 145){
  525.                 mediacenter.videoZoom = 100;
  526.             }else if(mediacenter.videoZoom > 95){
  527.                 mediacenter.videoZoom = 75;
  528.             }else{
  529.                 mediacenter.videoZoom = 50;
  530.             }
  531.             vidFn('zoomFit');
  532.         break;
  533.         case "zoomFit" :
  534.             var curZoom = mediacenter.videoZoom;
  535.             
  536.             var curWidth = (player.currentMedia.imageSourceWidth * (curZoom/100.00));
  537.             var curHeight = (player.currentMedia.imageSourceHeight * (curZoom/100.00));
  538.  
  539.             view.height = curHeight + 76;
  540.             view.width = curWidth + 97;
  541.         break;
  542.     }
  543. }
  544.  
  545.  
  546.  
  547. function plFn(doWhat) {
  548.     switch (doWhat) {
  549.         case "shoINmain" :
  550.             if (!plVisiblity) {
  551.                 if (eqVisiblity) eqFn('shoINmain');
  552.                 if (visVisiblity) visFn('shoINmain');
  553.                 if (clrzVisiblity) clrzFn('shoINmain');
  554.                 main.width = '273'; main.height = '275';
  555.                 avList.setColumnResizeMode( 0, "Stretches" );
  556.                 trkBck.visible = volBck.visible = muteBack.visible = oneBck.visible = twoBck.visible = colo.visible = threBck.visible = fourBck.visible = numOne.visible = numTwo.visible = numThre.visible = numFour.visible = false;
  557.                 pl.visible = plBtnsBck.visible = plBtnsHldr.visible = plBtns.visible = pDrpDwn.visible = avList.visible = true;
  558.                 starOne.visible = starTwo.visible = starThree.visible = starFour.visible = starFive.visible = true;
  559.                 if(player.settings.getMode('shuffle') == true) {shufBtn.down = true} else {shufBtn.down = false};
  560.                 if(player.settings.getMode('loop') == true) {reptBtn.down = true} else {reptBtn.down = false};
  561.                 avList.backgroundColor = getHexVal(darkHexVal);
  562.                 avList.itemPlayingBackgroundColor = getHexVal(lightHexVal);
  563.             } else {
  564.                 pl.visible = plBtnsBck.visible = plBtnsHldr.visible = plBtns.visible = pDrpDwn.visible = avList.visible = false;
  565.                 starOne.visible = starTwo.visible = starThree.visible = starFour.visible = starFive.visible = false;
  566.                 plOObtn.down = false;
  567.                 trkBck.visible = volBck.visible = muteBack.visible = oneBck.visible = twoBck.visible = colo.visible = threBck.visible = fourBck.visible = numOne.visible = numTwo.visible = numThre.visible = numFour.visible = true;
  568.                 main.width = '233'; main.height = '106';
  569.             }
  570.             plVisiblity = !plVisiblity;
  571.         break;
  572.         case "opnFile" :
  573.             var newFile = theme.openDialog('FILE_OPEN', 'FILES_ALLMEDIA');
  574.             if (newFile) {
  575.                 player.URL = newFile;
  576.             }    
  577.         break;
  578.         case "movUp" :
  579.             if (plVisiblity) avList.moveSelectedUp();
  580.             if (plSAvisible) plAVlist.moveSelectedUp();
  581.         break;
  582.         case "movDn" :
  583.             if (plVisiblity) avList.moveSelectedDown();
  584.             if (plSAvisible) plAVlist.moveSelectedDown();
  585.         break;
  586.         case "reMov" :
  587.             if (plVisiblity) avList.deleteSelected();
  588.             if (plSAvisible) plAVlist.deleteSelected();
  589.         break;
  590.         case "changeHue" :
  591.             plBckLT.backgroundImageHueShift = saPLBckLM.backgroundImageHueShift = saPLBckLB.backgroundImageHueShift = saPLBckMT.backgroundImageHueShift = saPLBckMB.backgroundImageHueShift = saPLBckRT.backgroundImageHueShift = saPLBckRM.backgroundImageHueShift = saPLBckRB.backgroundImageHueShift = saPLBtnsHldr.backgroundImageHueShift = hueVal;
  592.             saPLappCtrl.hueShift = plSAResize.hueShift = saPLDD.hueShift = saPLBtns.hueShift = hueVal;
  593.         break;
  594.         case "changeSat" :
  595.             plBckLT.backgroundImageSaturation = saPLBckLM.backgroundImageSaturation = saPLBckLB.backgroundImageSaturation = saPLBckMT.backgroundImageSaturation = saPLBckMB.backgroundImageSaturation = saPLBckRT.backgroundImageSaturation = saPLBckRM.backgroundImageSaturation = saPLBckRB.backgroundImageSaturation = saPLBtnsHldr.backgroundImageSaturation = satVal;
  596.             saPLappCtrl.saturation = plSAResize.saturation = saPLDD.saturation = saPLBtns.saturation = satVal;
  597.         break;
  598.         case "savPref" :
  599.             theme.savePreference("plSAwd", plSA.width);
  600.             theme.savePreference("plSAht", plSA.height);
  601.         break;
  602.         case "closeSApl" :
  603.             theme.savePreference("plSA", "false");
  604.             saPLvisible = false;
  605.             view.close();
  606.         break;
  607.     }
  608. }
  609.  
  610.  
  611. function getRating(inWhome) {
  612.     var rate = player.currentMedia.getItemInfo('UserRating');
  613.     switch (inWhome) {
  614.         case "inMain" :
  615.             if (rate == 0) {
  616.                 starOne.image = "1StarU.png"; starTwo.image = "2StarU.png"; starThree.image = "3StarU.png"; starFour.image = "4Star.png"; starFive.image = "5Star.png";
  617.             } else if (rate < 25) {
  618.                 starOne.image = "1StarD.png"; starTwo.image = "2Star.png"; starThree.image = "3Star.png"; starFour.image = "4Star.png"; starFive.image = "5Star.png";
  619.             } else if (rate < 50) {
  620.                 starOne.image = "1StarD.png"; starTwo.image = "2StarD.png"; starThree.image = "3Star.png"; starFour.image = "4Star.png"; starFive.image = "5Star.png";
  621.             } else if (rate < 75) {
  622.                 starOne.image = "1StarD.png"; starTwo.image = "2StarD.png"; starThree.image = "3StarD.png"; starFour.image = "4Star.png"; starFive.image = "5Star.png";
  623.             } else if (rate < 99) {
  624.                 starOne.image = "1StarD.png"; starTwo.image = "2StarD.png"; starThree.image = "3StarD.png"; starFour.image = "4StarD.png"; starFive.image = "5Star.png";
  625.             } else {
  626.                 starOne.image = "1StarD.png"; starTwo.image = "2StarD.png"; starThree.image = "3StarD.png"; starFour.image = "4StarD.png"; starFive.image = "5StarD.png";
  627.             }
  628.         break;
  629.         case "inPLsa" :
  630.             if (rate == 0) {
  631.                 starOneSA.image = "1StarU.png"; starTwoSA.image = "2StarU.png"; starThreeSA.image = "3StarU.png"; starFourSA.image = "4Star.png"; starFiveSA.image = "5Star.png";
  632.             } else if (rate < 25) {
  633.                 starOneSA.image = "1StarD.png"; starTwoSA.image = "2Star.png"; starThreeSA.image = "3Star.png"; starFourSA.image = "4Star.png"; starFiveSA.image = "5Star.png";
  634.             } else if (rate < 50) {
  635.                 starOneSA.image = "1StarD.png"; starTwoSA.image = "2StarD.png"; starThreeSA.image = "3Star.png"; starFourSA.image = "4Star.png"; starFiveSA.image = "5Star.png";
  636.             } else if (rate < 75) {
  637.                 starOneSA.image = "1StarD.png"; starTwoSA.image = "2StarD.png"; starThreeSA.image = "3StarD.png"; starFourSA.image = "4Star.png"; starFiveSA.image = "5Star.png";
  638.             } else if (rate < 99) {
  639.                 starOneSA.image = "1StarD.png"; starTwoSA.image = "2StarD.png"; starThreeSA.image = "3StarD.png"; starFourSA.image = "4StarD.png"; starFiveSA.image = "5Star.png";
  640.             } else {
  641.                 starOneSA.image = "1StarD.png"; starTwoSA.image = "2StarD.png"; starThreeSA.image = "3StarD.png"; starFourSA.image = "4StarD.png"; starFiveSA.image = "5StarD.png";
  642.             }
  643.         break;
  644.     }
  645. }
  646.  
  647.  
  648. function rateSongs(rating) {
  649. //    var stars = rating;
  650.     if (rating == 24) {
  651.         player.currentMedia.setItemInfo('UserRating', 24);
  652.         if (plVisiblity) getRating('inMain');
  653.         if (saPLvisible) getRating('inPLsa');
  654.     }
  655.     if (rating == 49) {
  656.         player.currentMedia.setItemInfo('UserRating', 49);
  657.         if (plVisiblity) getRating('inMain');
  658.         if (saPLvisible) getRating('inPLsa');
  659.     }
  660.     if (rating == 74) {
  661.         player.currentMedia.setItemInfo('UserRating', 74);
  662.         if (plVisiblity) getRating('inMain');
  663.         if (saPLvisible) getRating('inPLsa');
  664.     }
  665.     if (rating == 98) {
  666.         player.currentMedia.setItemInfo('UserRating', 98);
  667.         if (plVisiblity) getRating('inMain');
  668.         if (saPLvisible) getRating('inPLsa');
  669.     }
  670.     if (rating == 99) {
  671.         player.currentMedia.setItemInfo('UserRating', 99);
  672.         if (plVisiblity) getRating('inMain');
  673.         if (saPLvisible) getRating('inPLsa');
  674.     }
  675. }
  676.  
  677.  
  678. function eqFn(doWhat) {
  679.     switch (doWhat) {
  680.         case "shoINmain" :
  681.             if (!eqVisiblity) {
  682.                 if (plVisiblity) plFn('shoINmain');
  683.                 if (visVisiblity) visFn('shoINmain');
  684.                 if (clrzVisiblity) clrzFn('shoINmain');
  685.                 main.width = '233'; main.height = '165';
  686.                 trkBck.visible = volBck.visible = muteBack.visible = oneBck.visible = twoBck.visible = colo.visible = threBck.visible = fourBck.visible = numOne.visible = numTwo.visible = numThre.visible = numFour.visible = false;
  687.                 eq.visible = eqOObck.visible = eqOOhldr.visible = eqOObtn.visible = eqTBck.visible = eqTHldr.visible = eqTbtn.visible = eqBtnsBck.visible = eqBtnsHldr.visible = eqBtns.visible = eqPreHldr.visible = eqPreTxt.visible = balBars.visible = eqBars.visible = true;
  688.             } else {
  689.                 eq.visible = eqOObck.visible = eqOOhldr.visible = eqOObtn.visible = eqTBck.visible = eqTHldr.visible = eqTbtn.visible = eqBtnsBck.visible = eqBtnsHldr.visible = eqBtns.visible = eqPreHldr.visible = eqPreTxt.visible = balBars.visible = eqBars.visible = false;
  690.                 eqObtn.down = false;
  691.                 trkBck.visible = volBck.visible = muteBack.visible = oneBck.visible = twoBck.visible = colo.visible = threBck.visible = fourBck.visible = numOne.visible = numTwo.visible = numThre.visible = numFour.visible = true;
  692.                 main.width = '233'; main.height = '106';
  693.             }
  694.             eqVisiblity = !eqVisiblity;
  695.             eqSet.enableSplineTension = false;
  696.         break;
  697.         case "closSAeq" :
  698.             theme.savePreference("eqSA", "false");
  699.             view.close();
  700.         break;
  701.         case "eqTenNo" :
  702.             if (eqVisiblity) eqSet.enableSplineTension = false, eqSet.splineTension = 0;
  703.             if (saEQvisible) eqSAset.enableSplineTension = false, eqSAset.splineTension = 0;
  704.         break;
  705.         case "eqTenMid" :
  706.             if (eqVisiblity) eqSet.enableSplineTension = true, eqSet.splineTension = 4;
  707.             if (saEQvisible) eqSAset.enableSplineTension = true, eqSAset.splineTension = 4;
  708.         break;
  709.         case "eqTenHi" :
  710.             if (eqVisiblity) eqSet.enableSplineTension = true, eqSet.splineTension = 9;
  711.             if (saEQvisible) eqSAset.enableSplineTension = true, eqSAset.splineTension = 9;
  712.         break;
  713.         case "shoPresets" :
  714.             var presets = 0;
  715.             var allPresets = eqSet.presetCount;
  716.  
  717.             eqPresets.deleteAll();
  718.  
  719.             for (presets=0; presets<allPresets; presets++)
  720.             {
  721.             eqPresets.AppendItem( eqSet.presetTitle(presets) );
  722.             }
  723.  
  724.             eqPresets.selectedItem = eqSet.currentPreset;
  725.             eqPresets.show();
  726.         break;
  727.         case "shoEQSApre" :
  728.             var preset = 0;
  729.             var allPreset = eqSAset.presetCount;
  730.  
  731.             eqSAPreDD.deleteAll();
  732.  
  733.             for (preset=0; preset<allPreset; preset++)
  734.             {
  735.             eqSAPreDD.AppendItem( eqSAset.presetTitle(preset) );
  736.             }
  737.  
  738.             eqSAPreDD.selectedItem = eqSAset.currentPreset;
  739.             eqSAPreDD.show();
  740.         break;
  741.         case "changeHue" :
  742.             eqSAbck.backgroundImageHueShift = eqSAOOhldr.backgroundImageHueShift = eqSAclose.backgroundImageHueShift = eqSATHldr.backgroundImageHueShift = eqSAPreHldr.backgroundImageHueShift = eqSABtnsHldr.backgroundImageHueShift = hueVal;
  743.             eqSAOObtn.hueShift = eqPre.hueShift = eqSATbtn.hueShift = eqSAPre.hueShift = eqSABtns.hueShift = hueVal;
  744.         break;
  745.         case "changeSat" :
  746.             eqSAbck.backgroundImageSaturation = eqSAOOhldr.backgroundImageSaturation = eqSAclose.backgroundImageSaturation = eqSATHldr.backgroundImageSaturation = eqSAPreHldr.backgroundImageSaturation = eqSABtnsHldr.backgroundImageSaturation = satVal;
  747.             eqSAOObtn.saturation = eqPre.saturation = eqSATbtn.saturation = eqSAPre.saturation = eqSABtns.saturation = satVal;
  748.         break;
  749.     }
  750. }
  751.  
  752.  
  753. function enDisEQ() {
  754.     if (eqVisiblity) eqSet1.enabled = eqSet2.enabled = eqSet3.enabled = eqSet4.enabled = eqSet5.enabled = eqSet6.enabled = eqSet7.enabled = eqSet8.enabled = eqSet9.enabled = eqSet10.enabled = !eqSet.bypass;
  755.     if (saEQvisible) eqSASet1.enabled = eqSASet2.enabled = eqSASet3.enabled = eqSASet4.enabled = eqSASet5.enabled = eqSASet6.enabled = eqSASet7.enabled = eqSASet8.enabled = eqSASet9.enabled = eqSASet10.enabled = !eqSAset.bypass;
  756. }
  757.  
  758.  
  759. function visFn(doWhat) {
  760.  
  761.     darkHexVal = mediacenter.itemPlayingColor;
  762.     lightHexVal = mediacenter.appColorLight;
  763.  
  764.     switch (doWhat) {
  765.         case "shoINmain" :
  766.             if (!visVisiblity) {
  767.                 if (eqVisiblity) eqFn('shoINmain');
  768.                 if (plVisiblity) plFn('shoINmain');
  769.                 if (clrzVisiblity) clrzFn('shoINmain');
  770.                 main.width = '258'; main.height = '127';
  771.                 trkBck.visible = volBck.visible = muteBack.visible = oneBck.visible = twoBck.visible = colo.visible = threBck.visible = fourBck.visible = numOne.visible = numTwo.visible = numThre.visible = numFour.visible = false;
  772.                 vis.visible = visBck.visible = theBars.visible = visName.visible = visBtnRHldr.visible = visBtnCHldr.visible = visBtnFHldr.visible = visBtnsR.visible = visBtnsC.visible = visBtnsF.visible = true;
  773.                 bars.levelColor = barColors(darkHexVal);
  774.                 bars.peakColor = barColors(lightHexVal);
  775.             } else {
  776.                 vis.visible = visBck.visible = theBars.visible = visName.visible = visBtnRHldr.visible = visBtnCHldr.visible = visBtnFHldr.visible = visBtnsR.visible = visBtnsC.visible = visBtnsF.visible = false;
  777.                 visOObtn.down = false;
  778.                 trkBck.visible = volBck.visible = muteBack.visible = oneBck.visible = twoBck.visible = colo.visible = threBck.visible = fourBck.visible = numOne.visible = numTwo.visible = numThre.visible = numFour.visible = true;
  779.                 main.width = '233'; main.height = '106';
  780.             }
  781.             visVisiblity = !visVisiblity;
  782.         break;
  783.         case "preVis" :
  784.             if(theBars.visible) {
  785.                 theBars.visible = barTxt.visible = false; 
  786.                 visClose.down = visTxt.visible = true;
  787.             }
  788.             theVis.visible = true;
  789.             theVis.previous();
  790.         break;
  791.         case "preEff" :
  792.             if(theBars.visible) {
  793.                 theBars.visible = barTxt.visible = false; 
  794.                 visClose.down = visTxt.visible = true;
  795.             }
  796.             theVis.visible = true;
  797.             theVis.previousEffect();
  798.         break;
  799.         case "cloVis" :
  800.             if(theBars.visible) {
  801.                 theBars.visible = barTxt.visible = false; 
  802.                 theVis.visible = visTxt.visible = true; 
  803.             } else {
  804.                 theBars.visible = barTxt.visible = true; 
  805.                 theVis.visible = visTxt.visible = false
  806.             }
  807.         break;
  808.         case "nxtEff" :
  809.             if(theBars.visible) {
  810.                 theBars.visible = barTxt.visible = false; 
  811.                 visClose.down = visTxt.visible = true;
  812.             }
  813.             theVis.visible = true;
  814.             theVis.nextEffect();
  815.         break;
  816.         case "nxtVis" :
  817.             if(theBars.visible) {
  818.                 theBars.visible = barTxt.visible = false; 
  819.                 visClose.down = visTxt.visible = true;
  820.             }
  821.             theVis.visible = true;
  822.             theVis.next();
  823.         break;
  824.     }
  825. }
  826.  
  827.  
  828. function clrzFn(doWhat) {
  829.     switch (doWhat) {
  830.         case "shoINmain" :
  831.             if (!clrzVisiblity) {
  832.                 if (plVisiblity) plFn('shoINmain');
  833.                 if (visVisiblity) visFn('shoINmain');
  834.                 if (eqVisiblity) eqFn('shoINmain');
  835.                 main.width = '248'; main.height = '117';
  836.                 trkBck.visible = volBck.visible = muteBack.visible = oneBck.visible = twoBck.visible = colo.visible = threBck.visible = fourBck.visible = numOne.visible = numTwo.visible = numThre.visible = numFour.visible = false;
  837.                 clrzBck.visible = hueBar.visible = satBck.visible = satBar.visible = clrzBtnsBck.visible = clrzBtnsHldr.visible = true;
  838.             } else {
  839.                 clrzBck.visible = hueBar.visible = satBck.visible = satBar.visible = clrzBtnsBck.visible = clrzBtnsHldr.visible = false;
  840.                 clrzOO.down = false;
  841.                 trkBck.visible = volBck.visible = muteBack.visible = oneBck.visible = twoBck.visible = colo.visible = threBck.visible = fourBck.visible = numOne.visible = numTwo.visible = numThre.visible = numFour.visible = true;
  842.                 main.width = '233'; main.height = '106';
  843.             }
  844.             clrzVisiblity = !clrzVisiblity;
  845.         break;
  846.     }
  847. }
  848.  
  849.  
  850.  
  851.  
  852. /* 
  853.     color conversion functions taken from  : http://www.eecs.umich.edu/~radu/tools/picker.html
  854.     not using all available functions over there...
  855.     
  856. */
  857.  
  858.  
  859. function HextoRGB(hex) {
  860.   hex = hex.toUpperCase();
  861.   if(hex.charAt(0) == "#") hex = hex.substring(1,hex.length);
  862.   var rgb = new Array(3);
  863.   rgb.r = hex.substring(0,2);
  864.   rgb.g = hex.substring(2,4);
  865.   rgb.b = hex.substring(4,6);
  866.   rgb.r = parseInt(rgb.r,16);
  867.   rgb.g = parseInt(rgb.g,16);
  868.   rgb.b = parseInt(rgb.b,16);
  869.   if(isNaN(rgb.r)) rgb.r = 0;
  870.   if(isNaN(rgb.g)) rgb.g = 0;
  871.   if(isNaN(rgb.b)) rgb.b = 0;
  872.   return rgb;
  873. }
  874.  
  875.  
  876. function RGBtoHex(R, G, B) {
  877.   var n = Math.round(B); 
  878.   n += Math.round(G) << 8;
  879.   n += Math.round(R) << 16;
  880.   return DectoHex(n);
  881. }
  882.  
  883.  
  884. function DectoHex(num) {
  885.   var i = 0; var j = 20;
  886.   var str = "#";
  887.   while(j >= 0) {
  888.     i = (num >> j)%16;
  889.     if(i >= 10) {
  890.       if(i == 10) str += "A";
  891.       else if(i == 11) str += "B";
  892.       else if(i == 12) str += "C";
  893.       else if(i == 13) str += "D";
  894.       else if(i == 14) str += "E";
  895.       else str += "F";
  896.     } else
  897.       str += i;
  898.     j -= 4;
  899.   }
  900.   return str;
  901. }
  902.  
  903.  
  904. function MIN() {
  905.   var min = 255;
  906.   for(var i = 0; i < arguments.length; i++)
  907.     if(arguments[i] < min)
  908.       min = arguments[i];
  909.   return min;
  910. }
  911.  
  912. function MAX() {
  913.   var max = 0;
  914.   for(var i = 0; i < arguments.length; i++)
  915.     if(arguments[i] > max)
  916.       max = arguments[i];
  917.   return max;
  918. }
  919.  
  920.  
  921. function RGBtoHSV(r,g,b) {
  922.   r /= 255;
  923.   g /= 255;
  924.   b /= 255;
  925.   var min, max, delta;
  926.   var hsv = new Array(3);
  927.   min = MIN(r,g,b);
  928.   max = MAX(r,g,b);
  929.   hsv.v = max;
  930.   delta = max - min;
  931.   if (max != 0) hsv.s = delta/max;
  932.   else {
  933.     hsv.s = .005;
  934.     hsv.h = 0;
  935.     return hsv;
  936.   }
  937.   if(delta == 0) {
  938.     hsv.s = .005;
  939.     hsv.h = 0;
  940.     return hsv;
  941.   }
  942.   if (r == max) hsv.h = (g-b)/delta;
  943.   else if(g == max) hsv.h = 2+(b-r)/delta;
  944.   else hsv.h = 4+(r-g)/delta;
  945.   hsv.h *= 60;
  946.   if(hsv.h<0) hsv.h += 360;
  947.   if(hsv.h>=360) hsv.h -= 360;
  948.   return hsv;
  949. }
  950.  
  951.  
  952. function HSVtoRGB(h,s,v) {
  953.   var rgb = new Array(3);
  954.   var i;
  955.   var f, p, q, t;
  956.   if(s == 0) {
  957.     rgb.r = rgb.g = rgb.b = v*255;
  958.     return rgb;
  959.   }
  960.   h /= 60;
  961.   i = Math.floor(h);
  962.   f = h-i;
  963.   p = v*(1-s);
  964.   q = v*(1-s*f);
  965.   t = v*(1-s*(1-f));
  966.   switch(i) {
  967.   case 0:
  968.     rgb.r = v;
  969.     rgb.g = t;
  970.     rgb.b = p;
  971.     break;
  972.   case 1:
  973.     rgb.r = q;
  974.     rgb.g = v;
  975.     rgb.b = p;
  976.     break;
  977.   case 2:
  978.     rgb.r = p;
  979.     rgb.g = v;
  980.     rgb.b = t;
  981.     break;
  982.   case 3:
  983.     rgb.r = p;
  984.     rgb.g = q;
  985.     rgb.b = v;
  986.     break;
  987.   case 4:
  988.     rgb.r = t;
  989.     rgb.g = p;
  990.     rgb.b = v;
  991.     break;
  992.   default:
  993.     rgb.r = v;
  994.     rgb.g = p;
  995.     rgb.b = q;
  996.     break;
  997.   }
  998.   rgb.r *= 255;
  999.   rgb.g *= 255;
  1000.   rgb.b *= 255;
  1001.   return rgb;
  1002. }
  1003.  
  1004.  
  1005.  
  1006.