├── CombineJs.cs ├── QTMI_1_000001.xml ├── README ├── dailyTradeAnalysis.v2.htm ├── dailyTradeAnalysis.xml ├── dealAmountAnalysis.htm ├── dealAmountAnalysis.xml ├── docs ├── big-min.JPG ├── dailyTradeAnalysis.JPG ├── dealAmountAnalysis.JPG ├── k-controller.JPG ├── k-touch.JPG ├── mini-min.JPG ├── moneyFlow.JPG └── pie.JPG ├── funds-index.htm ├── index.html ├── k-data.js ├── k-painter.v1.1.htm ├── k-painter.v1.htm ├── kline-controller.htm ├── libs ├── absPainter.js ├── ajax.js ├── axis-x.js ├── axis-y.js ├── chartEventHelper.js ├── chartEventHelper.kl.js ├── controller.js ├── cookie.js ├── crossLines.js ├── ie │ ├── canvas.text.js │ ├── excanvas.compiled.js │ ├── excanvas.js │ └── optimer-normal-normal.js ├── linepainter.js ├── loading.compressed.js ├── loading.js ├── painter.js ├── tip.js ├── util.js ├── volumePainter.js └── xmlparser.js ├── loading.html ├── loading2.html ├── mins-data.js ├── mins-painter-min.html ├── mins-painter-v3.html ├── moneyFlow.html ├── moneyFlow.xml ├── openfundnetvalue-muchdata.xml ├── openfundnetvalue.xml ├── orentationchange.htm ├── painter.compressed.js ├── painter.html ├── pie.html ├── supportTouch.html └── touches.htm /CombineJs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.IO; 6 | using System.Text.RegularExpressions; 7 | using System.Collections.Specialized; 8 | 9 | using Yahoo.Yui.Compressor; 10 | namespace ConsoleApplication3 11 | { 12 | class Program 13 | { 14 | static void Main(string[] args) 15 | { 16 | string dirName = args == null || args.Length == 0 ? @"X:\html5test" : args[0]; 17 | DirectoryInfo dir = new DirectoryInfo(dirName); 18 | FileInfo[] files = dir.GetFiles("*.htm?"); 19 | for (int i = 0; i < files.Length; i++) 20 | { 21 | FileInfo file = files[i]; 22 | Console.WriteLine("process " + file.FullName); 23 | CompressFile(file); 24 | } 25 | } 26 | 27 | private static void CompressFile(FileInfo file) 28 | { 29 | string dir = Path.GetDirectoryName(file.FullName); 30 | string initialContent; 31 | using (StreamReader rdr = new StreamReader(file.OpenRead(), Encoding.Default)) 32 | { 33 | initialContent = rdr.ReadToEnd(); 34 | rdr.BaseStream.Seek(0, SeekOrigin.Begin); 35 | 36 | Regex regexScript = new Regex("]*src=\"(?[^\"]+)\"[^>]*>\\s*", RegexOptions.Compiled | RegexOptions.IgnoreCase); 37 | MatchCollection mc = regexScript.Matches(initialContent); 38 | foreach (Match match in mc) 39 | { 40 | if (match.Success) 41 | { 42 | string val = match.Value; 43 | 44 | string src = match.Groups["src"].Value; 45 | if (!src.StartsWith("libs/", StringComparison.CurrentCultureIgnoreCase)) continue; 46 | string jsPath = Path.Combine(dir, src.Replace('/', '\\')); 47 | int questionMarkIndex = jsPath.IndexOf('?'); 48 | if (questionMarkIndex > 0) 49 | { 50 | jsPath = jsPath.Substring(0, questionMarkIndex); 51 | } 52 | string jsContent; 53 | using (StreamReader rdrJs = new StreamReader(jsPath, Encoding.Default)) 54 | { 55 | jsContent = rdrJs.ReadToEnd(); 56 | } 57 | 58 | jsContent = ""; 59 | 60 | initialContent = initialContent.Replace(val, jsContent); 61 | } 62 | } 63 | } 64 | 65 | Regex regexScripts = new Regex("]*>\\s*]*>", RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline); 66 | initialContent = regexScripts.Replace(initialContent, string.Empty); 67 | 68 | 69 | 70 | //compress with yui 71 | Regex regexScriptTag = new Regex(@"]*>(?[\s\S]*?)", 72 | RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.Multiline); 73 | MatchCollection mcScripts = regexScriptTag.Matches(initialContent); 74 | 75 | initialContent = regexScriptTag.Replace(initialContent, delegate(Match m) 76 | { 77 | string js = m.Groups["js"].Value; 78 | if (string.IsNullOrEmpty(js)) return m.Value; 79 | string compressedJs = JavaScriptCompressor.Compress(js); 80 | return ""; 81 | }); 82 | 83 | 84 | 85 | string saveToFileName = Path.GetFileName(file.FullName); 86 | string saveToDir = Path.Combine(dir, "compiled"); 87 | if (!Directory.Exists(saveToDir)) Directory.CreateDirectory(saveToDir); 88 | saveToFileName = Path.Combine(saveToDir, saveToFileName); 89 | using (StreamWriter writer = new StreamWriter(saveToFileName, false, Encoding.GetEncoding("GBK"))) 90 | { 91 | writer.Write(initialContent); 92 | } 93 | } 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /QTMI_1_000001.xml: -------------------------------------------------------------------------------- 1 | 201112231405142186.3002183.9102219.7902178.1402203.3304054599200334825638172180.480566282995033660222178.920199617001777373662178.610214620001725621372179.540194467001748083882181.620198705001707991782182.660208586001864973092182.950225366002092284352183.830202219001903989082183.710194697001741376492185.190222740001920248862184.830215259001848015812185.900229377001918609422186.270218159001837611032187.190210714001868509762188.260234574002070872842187.680240614002153218252190.130258992002151642172191.140251874002161300572190.620272046002370809852190.460293279002481878182190.870218176001875393142191.650227656001940994392191.590254441001925692632192.840275686001935306302193.150285819002099515872192.900294493002123090792193.030237871001885379692190.210302821002389950532188.840331762002672258262186.860262773002210317612187.210224834002025371892187.240168530001488645822187.720163012001360748572187.580148072001250131512187.210127146001185722852191.240251292001985099552192.360251951002147178302193.070234675002012152172194.020238604001949431002194.340211950001729012962194.160220642001726244792195.560273812001761075562196.250240272001916161192198.000236204001867606832197.570284101002130860022196.000218986001813523702195.920206397001535374722194.610156435001349411472194.430206800001643133202195.760187973001746294362195.600173780001447428832195.640167106001373667792195.900217599001535979892196.210177295001380662782195.960199892001502456692194.770188599001501034582193.540336763002078807622193.040237271001788266712192.180213128001609626092191.990189221001402105432191.360151068001269502822191.830135480001102266152192.570195267001192265192192.270144035001213541772192.620129118001115950212193.100144816001107594822193.350139116001152875722193.120136057001053138582192.79010924200976475432193.620128630001102742702195.910234401001907227352196.700238759001828157882197.180261916002061499052197.700206966001703312662198.780187495001566456732198.540207587001582030822197.940223182001680302532198.980180873001420186052199.160190721001495491842198.540181158001438896502198.490191276001453279232199.550192278001508893002199.640218753001820258272200.250178789001611659842200.570212871001689897462204.340374359003008373282207.360523984004064937752208.050483712003994325152208.660389981003207160622207.950340014002743997142208.470301413002302033422206.020235027001805008232205.330217550001758832442205.630162407001334619432205.550196354001596366822206.020162048001445412702206.120197009001680413602205.940177804001568662712206.220175339001580265462206.230173027001504344092206.400159802001364613042207.750290926002530631052209.980367780003246544642211.970435239003538449152212.820418169003606005642213.310375696003251856522212.010313810002785093172211.820260918002180461172211.320235204001964280942211.080187745001555822452213.070207991001774571932212.990268314002198922122213.370289815002552217752213.710295043002637507282217.340393687003276569802216.440560842004318655852218.360413175003744505152218.560397461003186715082218.100351588002850691352218.440264268002378907812218.370644874005195856452218.850166358001491684402216.940175709001390243352216.560218682001766864782216.470139218001115723332216.860143165001203009172216.370131203001105654682216.150134339001247096972215.730160064001375439042213.200180022001401584432210.690403974003237226662211.150233190001967884882211.120193691001688671072211.230172725001513881032211.810164464001387171702210.730155439001352429572211.540136820001199890262211.820164692001367065312212.290158818001322928242211.240160731001315857602210.520223843001914296642210.790164312001445681092210.560142931001219366322211.48011703200996065772213.280121632001031894872214.370146188001216429142212.490181720001318336822215.190203874001427393402214.140149824001165774372214.630140414001110174412214.020159359001272724422212.750159526001500158092212.640248912002090720362212.300135883001276509182212.900142596001278319512211.250127793001109612392210.930138080001260687962210.750146112001223632052211.280159115001344600182210.540137234001215310522210.770137248001180337842211.060161179001371549072212.240155529001365480252212.590142250001210246532211.700147865001286858832211.610125982001096095752210.830117654001058634402208.920236609002099169292208.150269608002275698392207.070227246002043310012206.360180974001548925592206.810174489001414321732206.990160619001261165132207.380153005001332531282207.870146474001206346612207.590123720001024631642208.180130772001114826242208.030127123001049308232207.430137320001103693992206.520172879001360891672204.710234827001908240762203.910248552002038478032203.580205596001619726332202.920216299001749638722203.130169530001410743892203.330447020036007349 -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | You need to use a www server to view the html page because it uses AJAX. 2 | 3 | -------------------------------------------------------------------------------- /dailyTradeAnalysis.v2.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/dailyTradeAnalysis.v2.htm -------------------------------------------------------------------------------- /dailyTradeAnalysis.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <Item> 5 | <Title name='日成交分析' unit='万元'/> 6 | <Item price1='11.95' price2='11.96' inflow='354.23' outflow='18.64' rate='0.80'/> 7 | <Item price1='11.94' price2='11.95' inflow='0.72' outflow='624.90' rate='1.61'/> 8 | <Item price1='11.93' price2='11.94' inflow='236.42' outflow='1000.02' rate='2.65'/> 9 | <Item price1='11.92' price2='11.93' inflow='1845.42' outflow='1415.71' rate='6.96'/> 10 | <Item price1='11.91' price2='11.92' inflow='789.38' outflow='404.75' rate='2.55'/> 11 | <Item price1='11.90' price2='11.91' inflow='2557.87' outflow='1088.05' rate='7.78'/> 12 | <Item price1='11.89' price2='11.90' inflow='909.82' outflow='361.64' rate='2.71'/> 13 | <Item price1='11.88' price2='11.89' inflow='6.30' outflow='30.67' rate='0.08'/> 14 | <Item price1='11.87' price2='11.88' inflow='784.21' outflow='120.12' rate='1.93'/> 15 | <Item price1='11.86' price2='11.87' inflow='371.93' outflow='491.34' rate='1.86'/> 16 | <Item price1='11.85' price2='11.86' inflow='1477.52' outflow='368.10' rate='4.00'/> 17 | <Item price1='11.84' price2='11.85' inflow='766.23' outflow='526.12' rate='2.79'/> 18 | <Item price1='11.83' price2='11.84' inflow='148.70' outflow='1123.89' rate='2.72'/> 19 | <Item price1='11.82' price2='11.83' inflow='767.31' outflow='236.95' rate='2.14'/> 20 | <Item price1='11.81' price2='11.82' inflow='1553.02' outflow='307.76' rate='4.03'/> 21 | <Item price1='11.80' price2='11.81' inflow='2745.40' outflow='1313.75' rate='8.74'/> 22 | <Item price1='11.79' price2='11.80' inflow='1934.56' outflow='1871.49' rate='8.15'/> 23 | <Item price1='11.78' price2='11.79' inflow='2335.87' outflow='1519.67' rate='8.49'/> 24 | <Item price1='11.77' price2='11.78' inflow='1153.60' outflow='1408.80' rate='5.52'/> 25 | <Item price1='11.76' price2='11.77' inflow='1.41' outflow='1221.96' rate='2.65'/> 26 | <Item price1='11.75' price2='11.76' inflow='49.31' outflow='328.07' rate='1.40'/> 27 | <Item price1='11.74' price2='11.75' inflow='99.36' outflow='28.20' rate='0.27'/> 28 | <Item price1='11.73' price2='11.74' inflow='20.23' outflow='112.88' rate='0.28'/> 29 | <Item price1='11.72' price2='11.73' inflow='0.00' outflow='0.00' rate='0.00'/> 30 | <Item price1='11.71' price2='11.72' inflow='7.02' outflow='1.05' rate='0.02'/> 31 | <Item price1='11.70' price2='11.71' inflow='535.58' outflow='624.47' rate='2.48'/> 32 | <Item price1='11.69' price2='11.70' inflow='368.00' outflow='355.68' rate='1.56'/> 33 | <Item price1='11.68' price2='11.69' inflow='224.52' outflow='211.81' rate='0.93'/> 34 | <Item price1='11.67' price2='11.68' inflow='135.84' outflow='440.80' rate='1.27'/> 35 | <Item price1='11.66' price2='11.67' inflow='17.49' outflow='382.02' rate='0.85'/> 36 | <Item price1='11.65' price2='11.66' inflow='142.46' outflow='265.70' rate='0.87'/> 37 | <Item price1='11.64' price2='11.65' inflow='452.78' outflow='125.56' rate='1.23'/> 38 | <Item price1='11.63' price2='11.64' inflow='100.63' outflow='410.47' rate='1.09'/> 39 | <Item price1='11.62' price2='11.63' inflow='190.21' outflow='106.05' rate='0.63'/> 40 | <Item price1='11.61' price2='11.62' inflow='342.75' outflow='455.91' rate='1.71'/> 41 | <Item price1='11.60' price2='11.61' inflow='488.51' outflow='322.07' rate='1.78'/> 42 | <Item price1='11.59' price2='11.60' inflow='628.44' outflow='473.57' rate='2.50'/> 43 | <Item price1='11.58' price2='11.59' inflow='9.84' outflow='736.43' rate='1.59'/> 44 | <Item price1='11.57' price2='11.58' inflow='0.00' outflow='26.68' rate='0.06'/> 45 | </Item> 46 | </Data> -------------------------------------------------------------------------------- /dealAmountAnalysis.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/dealAmountAnalysis.htm -------------------------------------------------------------------------------- /dealAmountAnalysis.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <Data> 3 | <Title name='招商银行(600036)成交金额分析'/> 4 | <Item> 5 | <Title name='流入流出' type='column' unit='万元' /> 6 | <Item date='09:25' inflow='0.00' outflow='0.00'/> 7 | <Item date='09:30' inflow='13.43' outflow='153.41'/> 8 | <Item date='09:31' inflow='42.51' outflow='32.23'/> 9 | <Item date='09:32' inflow='21.42' outflow='78.47'/> 10 | <Item date='09:33' inflow='366.90' outflow='54.85'/> 11 | <Item date='09:34' inflow='257.84' outflow='59.35'/> 12 | <Item date='09:35' inflow='17.46' outflow='74.06'/> 13 | <Item date='09:36' inflow='15.14' outflow='31.17'/> 14 | <Item date='09:37' inflow='17.68' outflow='69.59'/> 15 | <Item date='09:38' inflow='49.60' outflow='13.36'/> 16 | <Item date='09:39' inflow='132.02' outflow='66.75'/> 17 | <Item date='09:40' inflow='18.90' outflow='34.97'/> 18 | <Item date='09:41' inflow='100.36' outflow='28.23'/> 19 | <Item date='09:42' inflow='1046.39' outflow='0.12'/> 20 | <Item date='09:43' inflow='48.39' outflow='19.45'/> 21 | <Item date='09:44' inflow='106.72' outflow='3.42'/> 22 | <Item date='09:45' inflow='264.43' outflow='26.43'/> 23 | <Item date='09:46' inflow='401.04' outflow='88.50'/> 24 | <Item date='09:47' inflow='168.49' outflow='0.00'/> 25 | <Item date='09:48' inflow='83.80' outflow='241.10'/> 26 | <Item date='09:49' inflow='106.31' outflow='69.49'/> 27 | <Item date='09:50' inflow='20.64' outflow='34.72'/> 28 | <Item date='09:51' inflow='19.12' outflow='57.90'/> 29 | <Item date='09:52' inflow='41.96' outflow='54.63'/> 30 | <Item date='09:53' inflow='60.17' outflow='46.57'/> 31 | <Item date='09:54' inflow='49.26' outflow='9.26'/> 32 | <Item date='09:55' inflow='14.66' outflow='0.12'/> 33 | <Item date='09:56' inflow='52.30' outflow='24.26'/> 34 | <Item date='09:57' inflow='17.80' outflow='122.78'/> 35 | <Item date='09:58' inflow='0.94' outflow='331.25'/> 36 | <Item date='09:59' inflow='6.15' outflow='73.12'/> 37 | <Item date='10:00' inflow='1.87' outflow='5.96'/> 38 | <Item date='10:01' inflow='12.99' outflow='22.91'/> 39 | <Item date='10:02' inflow='14.39' outflow='3.97'/> 40 | <Item date='10:03' inflow='44.46' outflow='36.24'/> 41 | <Item date='10:04' inflow='72.42' outflow='3.74'/> 42 | <Item date='10:05' inflow='453.94' outflow='0.00'/> 43 | <Item date='10:06' inflow='104.57' outflow='19.48'/> 44 | <Item date='10:07' inflow='49.31' outflow='5.16'/> 45 | <Item date='10:08' inflow='23.83' outflow='8.45'/> 46 | <Item date='10:09' inflow='13.49' outflow='76.95'/> 47 | <Item date='10:10' inflow='6.21' outflow='38.00'/> 48 | <Item date='10:11' inflow='34.07' outflow='4.40'/> 49 | <Item date='10:12' inflow='29.78' outflow='31.51'/> 50 | <Item date='10:13' inflow='27.61' outflow='13.11'/> 51 | <Item date='10:14' inflow='12.00' outflow='27.36'/> 52 | <Item date='10:15' inflow='19.93' outflow='73.00'/> 53 | <Item date='10:16' inflow='10.21' outflow='279.17'/> 54 | <Item date='10:17' inflow='7.76' outflow='43.10'/> 55 | <Item date='10:18' inflow='377.59' outflow='94.94'/> 56 | <Item date='10:19' inflow='2.46' outflow='6.67'/> 57 | <Item date='10:20' inflow='20.72' outflow='8.45'/> 58 | <Item date='10:21' inflow='0.59' outflow='22.87'/> 59 | <Item date='10:22' inflow='7.15' outflow='3.30'/> 60 | <Item date='10:23' inflow='6.74' outflow='7.32'/> 61 | <Item date='10:24' inflow='52.97' outflow='34.22'/> 62 | <Item date='10:25' inflow='6.13' outflow='80.87'/> 63 | <Item date='10:26' inflow='5.96' outflow='152.35'/> 64 | <Item date='10:27' inflow='15.24' outflow='755.38'/> 65 | <Item date='10:28' inflow='19.01' outflow='188.66'/> 66 | <Item date='10:29' inflow='1.87' outflow='1.55'/> 67 | <Item date='10:30' inflow='2.33' outflow='51.52'/> 68 | <Item date='10:31' inflow='0.00' outflow='20.64'/> 69 | <Item date='10:32' inflow='23.21' outflow='3.26'/> 70 | <Item date='10:33' inflow='41.39' outflow='51.69'/> 71 | <Item date='10:34' inflow='25.79' outflow='9.80'/> 72 | <Item date='10:35' inflow='31.27' outflow='10.38'/> 73 | <Item date='10:36' inflow='66.03' outflow='23.32'/> 74 | <Item date='10:37' inflow='6.90' outflow='1.17'/> 75 | <Item date='10:38' inflow='0.23' outflow='25.21'/> 76 | <Item date='10:39' inflow='62.96' outflow='1.40'/> 77 | <Item date='10:40' inflow='507.21' outflow='33.90'/> 78 | <Item date='10:41' inflow='80.75' outflow='5.27'/> 79 | <Item date='10:42' inflow='120.58' outflow='0.00'/> 80 | <Item date='10:43' inflow='53.25' outflow='35.76'/> 81 | <Item date='10:44' inflow='6.91' outflow='46.00'/> 82 | <Item date='10:45' inflow='61.43' outflow='13.92'/> 83 | <Item date='10:46' inflow='18.26' outflow='36.88'/> 84 | <Item date='10:47' inflow='57.33' outflow='9.86'/> 85 | <Item date='10:48' inflow='23.64' outflow='3.51'/> 86 | <Item date='10:49' inflow='23.28' outflow='3.51'/> 87 | <Item date='10:50' inflow='11.63' outflow='2.34'/> 88 | <Item date='10:51' inflow='62.61' outflow='56.88'/> 89 | <Item date='10:52' inflow='14.06' outflow='10.89'/> 90 | <Item date='10:53' inflow='130.53' outflow='9.14'/> 91 | <Item date='10:54' inflow='14.42' outflow='17.23'/> 92 | <Item date='10:55' inflow='993.65' outflow='0.00'/> 93 | <Item date='10:56' inflow='377.03' outflow='103.36'/> 94 | <Item date='10:57' inflow='161.77' outflow='34.14'/> 95 | <Item date='10:58' inflow='114.72' outflow='55.62'/> 96 | <Item date='10:59' inflow='187.49' outflow='103.04'/> 97 | <Item date='11:00' inflow='177.65' outflow='46.45'/> 98 | <Item date='11:01' inflow='7.76' outflow='67.54'/> 99 | <Item date='11:02' inflow='20.11' outflow='32.68'/> 100 | <Item date='11:03' inflow='28.37' outflow='58.52'/> 101 | <Item date='11:04' inflow='87.24' outflow='91.07'/> 102 | <Item date='11:05' inflow='15.20' outflow='32.21'/> 103 | <Item date='11:06' inflow='29.07' outflow='2.12'/> 104 | <Item date='11:07' inflow='3.30' outflow='16.95'/> 105 | <Item date='11:08' inflow='12.12' outflow='15.17'/> 106 | <Item date='11:09' inflow='42.12' outflow='56.02'/> 107 | <Item date='11:10' inflow='6.59' outflow='20.60'/> 108 | <Item date='11:11' inflow='568.96' outflow='28.72'/> 109 | <Item date='11:12' inflow='882.44' outflow='164.07'/> 110 | <Item date='11:13' inflow='126.21' outflow='404.83'/> 111 | <Item date='11:14' inflow='92.96' outflow='0.00'/> 112 | <Item date='11:15' inflow='193.20' outflow='48.73'/> 113 | <Item date='11:16' inflow='206.45' outflow='9.63'/> 114 | <Item date='11:17' inflow='15.92' outflow='21.27'/> 115 | <Item date='11:18' inflow='27.01' outflow='8.86'/> 116 | <Item date='11:19' inflow='45.65' outflow='10.97'/> 117 | <Item date='11:20' inflow='262.69' outflow='29.02'/> 118 | <Item date='11:21' inflow='231.57' outflow='136.12'/> 119 | <Item date='11:22' inflow='12.86' outflow='11.79'/> 120 | <Item date='11:23' inflow='105.93' outflow='82.63'/> 121 | <Item date='11:24' inflow='271.86' outflow='67.49'/> 122 | <Item date='11:25' inflow='110.53' outflow='76.67'/> 123 | <Item date='11:26' inflow='1555.37' outflow='5.25'/> 124 | <Item date='11:27' inflow='341.15' outflow='72.91'/> 125 | <Item date='11:28' inflow='136.74' outflow='67.30'/> 126 | <Item date='11:29' inflow='62.78' outflow='13.37'/> 127 | <Item date='11:30' inflow='0.00' outflow='0.00'/> 128 | <Item date='13:00' inflow='26.21' outflow='332.69'/> 129 | <Item date='13:01' inflow='61.95' outflow='3.55'/> 130 | <Item date='13:02' inflow='0.59' outflow='655.67'/> 131 | <Item date='13:03' inflow='43.04' outflow='43.84'/> 132 | <Item date='13:04' inflow='26.23' outflow='16.31'/> 133 | <Item date='13:05' inflow='24.83' outflow='21.74'/> 134 | <Item date='13:06' inflow='41.81' outflow='19.21'/> 135 | <Item date='13:07' inflow='45.05' outflow='6.97'/> 136 | <Item date='13:08' inflow='29.54' outflow='109.75'/> 137 | <Item date='13:09' inflow='36.37' outflow='55.93'/> 138 | <Item date='13:10' inflow='52.54' outflow='535.19'/> 139 | <Item date='13:11' inflow='32.56' outflow='595.23'/> 140 | <Item date='13:12' inflow='27.11' outflow='65.64'/> 141 | <Item date='13:13' inflow='18.87' outflow='47.93'/> 142 | <Item date='13:14' inflow='30.87' outflow='5.88'/> 143 | <Item date='13:15' inflow='25.56' outflow='35.52'/> 144 | <Item date='13:16' inflow='33.19' outflow='28.48'/> 145 | <Item date='13:17' inflow='13.08' outflow='24.15'/> 146 | <Item date='13:18' inflow='35.22' outflow='15.46'/> 147 | <Item date='13:19' inflow='41.79' outflow='89.29'/> 148 | <Item date='13:20' inflow='49.52' outflow='177.26'/> 149 | <Item date='13:21' inflow='143.65' outflow='26.46'/> 150 | <Item date='13:22' inflow='33.13' outflow='12.59'/> 151 | <Item date='13:23' inflow='22.24' outflow='235.31'/> 152 | <Item date='13:24' inflow='360.57' outflow='0.12'/> 153 | <Item date='13:25' inflow='190.70' outflow='0.00'/> 154 | <Item date='13:26' inflow='99.38' outflow='149.49'/> 155 | <Item date='13:27' inflow='254.65' outflow='73.61'/> 156 | <Item date='13:28' inflow='164.44' outflow='30.57'/> 157 | <Item date='13:29' inflow='51.55' outflow='13.52'/> 158 | <Item date='13:30' inflow='30.01' outflow='32.77'/> 159 | <Item date='13:31' inflow='62.57' outflow='120.17'/> 160 | <Item date='13:32' inflow='26.58' outflow='28.52'/> 161 | <Item date='13:33' inflow='27.06' outflow='0.00'/> 162 | <Item date='13:34' inflow='30.95' outflow='2.35'/> 163 | <Item date='13:35' inflow='30.59' outflow='11.88'/> 164 | <Item date='13:36' inflow='21.17' outflow='316.80'/> 165 | <Item date='13:37' inflow='30.84' outflow='0.00'/> 166 | <Item date='13:38' inflow='54.10' outflow='0.00'/> 167 | <Item date='13:39' inflow='111.81' outflow='8.47'/> 168 | <Item date='13:40' inflow='30.46' outflow='4.35'/> 169 | <Item date='13:41' inflow='0.00' outflow='0.00'/> 170 | <Item date='13:42' inflow='0.00' outflow='0.00'/> 171 | <Item date='13:43' inflow='0.00' outflow='0.00'/> 172 | </Item> 173 | <Item> 174 | <Title name='招商银行' type='column' unit='' close='11.70'/> 175 | <Item date='1' price='11.64' /> 176 | <Item date='2' price='11.66' /> 177 | <Item date='3' price='11.63' /> 178 | <Item date='4' price='11.62' /> 179 | <Item date='5' price='11.65' /> 180 | <Item date='6' price='11.64' /> 181 | <Item date='7' price='11.63' /> 182 | <Item date='8' price='11.62' /> 183 | <Item date='9' price='11.64' /> 184 | <Item date='10' price='11.64' /> 185 | <Item date='11' price='11.68' /> 186 | <Item date='12' price='11.71' /> 187 | <Item date='13' price='11.68' /> 188 | <Item date='14' price='11.71' /> 189 | <Item date='15' price='11.71' /> 190 | <Item date='16' price='11.73' /> 191 | <Item date='17' price='11.74' /> 192 | <Item date='18' price='11.75' /> 193 | <Item date='19' price='11.73' /> 194 | <Item date='20' price='11.71' /> 195 | <Item date='21' price='11.73' /> 196 | <Item date='22' price='11.72' /> 197 | <Item date='23' price='11.73' /> 198 | <Item date='24' price='11.72' /> 199 | <Item date='25' price='11.73' /> 200 | <Item date='26' price='11.73' /> 201 | <Item date='27' price='11.72' /> 202 | <Item date='28' price='11.72' /> 203 | <Item date='29' price='11.70' /> 204 | <Item date='30' price='11.69' /> 205 | <Item date='31' price='11.69' /> 206 | <Item date='32' price='11.69' /> 207 | <Item date='33' price='11.70' /> 208 | <Item date='34' price='11.69' /> 209 | <Item date='35' price='11.70' /> 210 | <Item date='36' price='11.72' /> 211 | <Item date='37' price='11.74' /> 212 | <Item date='38' price='11.74' /> 213 | <Item date='39' price='11.74' /> 214 | <Item date='40' price='11.74' /> 215 | <Item date='41' price='11.71' /> 216 | <Item date='42' price='11.72' /> 217 | <Item date='43' price='11.72' /> 218 | <Item date='44' price='11.72' /> 219 | <Item date='45' price='11.72' /> 220 | <Item date='46' price='11.72' /> 221 | <Item date='47' price='11.70' /> 222 | <Item date='48' price='11.69' /> 223 | <Item date='49' price='11.70' /> 224 | <Item date='50' price='11.70' /> 225 | <Item date='51' price='11.71' /> 226 | <Item date='52' price='11.70' /> 227 | <Item date='53' price='11.72' /> 228 | <Item date='54' price='11.71' /> 229 | <Item date='55' price='11.71' /> 230 | <Item date='56' price='11.70' /> 231 | <Item date='57' price='11.68' /> 232 | <Item date='58' price='11.67' /> 233 | <Item date='59' price='11.66' /> 234 | <Item date='60' price='11.66' /> 235 | <Item date='61' price='11.66' /> 236 | <Item date='62' price='11.66' /> 237 | <Item date='63' price='11.67' /> 238 | <Item date='64' price='11.66' /> 239 | <Item date='65' price='11.66' /> 240 | <Item date='66' price='11.66' /> 241 | <Item date='67' price='11.67' /> 242 | <Item date='68' price='11.67' /> 243 | <Item date='69' price='11.67' /> 244 | <Item date='70' price='11.68' /> 245 | <Item date='71' price='11.71' /> 246 | <Item date='72' price='11.72' /> 247 | <Item date='73' price='11.73' /> 248 | <Item date='74' price='11.73' /> 249 | <Item date='75' price='11.70' /> 250 | <Item date='76' price='11.72' /> 251 | <Item date='77' price='11.70' /> 252 | <Item date='78' price='11.70' /> 253 | <Item date='79' price='11.70' /> 254 | <Item date='80' price='11.70' /> 255 | <Item date='81' price='11.71' /> 256 | <Item date='82' price='11.71' /> 257 | <Item date='83' price='11.72' /> 258 | <Item date='84' price='11.72' /> 259 | <Item date='85' price='11.72' /> 260 | <Item date='86' price='11.76' /> 261 | <Item date='87' price='11.76' /> 262 | <Item date='88' price='11.78' /> 263 | <Item date='89' price='11.77' /> 264 | <Item date='90' price='11.76' /> 265 | <Item date='91' price='11.77' /> 266 | <Item date='92' price='11.75' /> 267 | <Item date='93' price='11.75' /> 268 | <Item date='94' price='11.75' /> 269 | <Item date='95' price='11.76' /> 270 | <Item date='96' price='11.76' /> 271 | <Item date='97' price='11.77' /> 272 | <Item date='98' price='11.77' /> 273 | <Item date='99' price='11.77' /> 274 | <Item date='100' price='11.77' /> 275 | <Item date='101' price='11.77' /> 276 | <Item date='102' price='11.78' /> 277 | <Item date='103' price='11.83' /> 278 | <Item date='104' price='11.82' /> 279 | <Item date='105' price='11.82' /> 280 | <Item date='106' price='11.80' /> 281 | <Item date='107' price='11.78' /> 282 | <Item date='108' price='11.79' /> 283 | <Item date='109' price='11.79' /> 284 | <Item date='110' price='11.80' /> 285 | <Item date='111' price='11.79' /> 286 | <Item date='112' price='11.80' /> 287 | <Item date='113' price='11.80' /> 288 | <Item date='114' price='11.79' /> 289 | <Item date='115' price='11.82' /> 290 | <Item date='116' price='11.82' /> 291 | <Item date='117' price='11.85' /> 292 | <Item date='118' price='11.85' /> 293 | <Item date='119' price='11.84' /> 294 | <Item date='120' price='11.83' /> 295 | <Item date='121' price='11.83' /> 296 | <Item date='122' price='11.83' /> 297 | <Item date='123' price='11.80' /> 298 | <Item date='124' price='11.80' /> 299 | <Item date='125' price='11.80' /> 300 | <Item date='126' price='11.81' /> 301 | <Item date='127' price='11.82' /> 302 | <Item date='128' price='11.82' /> 303 | <Item date='129' price='11.80' /> 304 | <Item date='130' price='11.79' /> 305 | <Item date='131' price='11.80' /> 306 | <Item date='132' price='11.80' /> 307 | <Item date='133' price='11.79' /> 308 | <Item date='134' price='11.78' /> 309 | <Item date='135' price='11.78' /> 310 | <Item date='136' price='11.78' /> 311 | <Item date='137' price='11.78' /> 312 | <Item date='138' price='11.77' /> 313 | <Item date='139' price='11.78' /> 314 | <Item date='140' price='11.78' /> 315 | <Item date='141' price='11.75' /> 316 | <Item date='142' price='11.77' /> 317 | <Item date='143' price='11.77' /> 318 | <Item date='144' price='11.75' /> 319 | <Item date='145' price='11.75' /> 320 | <Item date='146' price='11.75' /> 321 | <Item date='147' price='11.74' /> 322 | <Item date='148' price='11.75' /> 323 | <Item date='149' price='11.77' /> 324 | <Item date='150' price='11.77' /> 325 | <Item date='151' price='11.77' /> 326 | <Item date='152' price='11.77' /> 327 | <Item date='153' price='11.76' /> 328 | <Item date='154' price='11.77' /> 329 | <Item date='155' price='11.77' /> 330 | <Item date='156' price='11.76' /> 331 | <Item date='157' price='11.77' /> 332 | <Item date='158' price='11.77' /> 333 | <Item date='159' price='11.76' /> 334 | <Item date='160' price='11.76' /> 335 | <Item date='161' price='11.75' /> 336 | <Item date='162' price='11.76' /> 337 | <Item date='163' price='11.77' /> 338 | <Item date='164' price='11.76' /> 339 | <Item date='165' price='11.76' /> 340 | <Item date='166' price='11.76' /> 341 | <Item date='167' price='11.76' /> 342 | </Item> 343 | </Data> -------------------------------------------------------------------------------- /docs/big-min.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/docs/big-min.JPG -------------------------------------------------------------------------------- /docs/dailyTradeAnalysis.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/docs/dailyTradeAnalysis.JPG -------------------------------------------------------------------------------- /docs/dealAmountAnalysis.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/docs/dealAmountAnalysis.JPG -------------------------------------------------------------------------------- /docs/k-controller.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/docs/k-controller.JPG -------------------------------------------------------------------------------- /docs/k-touch.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/docs/k-touch.JPG -------------------------------------------------------------------------------- /docs/mini-min.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/docs/mini-min.JPG -------------------------------------------------------------------------------- /docs/moneyFlow.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/docs/moneyFlow.JPG -------------------------------------------------------------------------------- /docs/pie.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/docs/pie.JPG -------------------------------------------------------------------------------- /funds-index.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/funds-index.htm -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/index.html -------------------------------------------------------------------------------- /k-data.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/k-data.js -------------------------------------------------------------------------------- /k-painter.v1.1.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/k-painter.v1.1.htm -------------------------------------------------------------------------------- /k-painter.v1.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/k-painter.v1.htm -------------------------------------------------------------------------------- /kline-controller.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/kline-controller.htm -------------------------------------------------------------------------------- /libs/absPainter.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/absPainter.js -------------------------------------------------------------------------------- /libs/ajax.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/ajax.js -------------------------------------------------------------------------------- /libs/axis-x.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/axis-x.js -------------------------------------------------------------------------------- /libs/axis-y.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/axis-y.js -------------------------------------------------------------------------------- /libs/chartEventHelper.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/chartEventHelper.js -------------------------------------------------------------------------------- /libs/chartEventHelper.kl.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/chartEventHelper.kl.js -------------------------------------------------------------------------------- /libs/controller.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/controller.js -------------------------------------------------------------------------------- /libs/cookie.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/cookie.js -------------------------------------------------------------------------------- /libs/crossLines.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/crossLines.js -------------------------------------------------------------------------------- /libs/ie/canvas.text.js: -------------------------------------------------------------------------------- 1 | /* $Id: canvas.text.js 50 2010-07-28 15:37:49Z fabien.menager $ */ 2 | 3 | /** 4 | * @projectDescription An cross-browser implementation of the HTML5 <canvas> text methods 5 | * @author Fabien M�nager 6 | * @version $Revision: 50 $ 7 | * @license MIT License <http://www.opensource.org/licenses/mit-license.php> 8 | */ 9 | 10 | /** 11 | * Known issues: 12 | * - The 'light' font weight is not supported, neither is the 'oblique' font style. 13 | * - Optimize the different hacks (for Opera9) 14 | */ 15 | 16 | window.Canvas = window.Canvas || {}; 17 | window.Canvas.Text = { 18 | // http://mondaybynoon.com/2007/04/02/linux-font-equivalents-to-popular-web-typefaces/ 19 | equivalentFaces: { 20 | // Web popular fonts 21 | 'arial': ['liberation sans', 'nimbus sans l', 'freesans', 'optimer', 'dejavu sans'], 22 | 'times new roman': ['liberation serif', 'helvetiker', 'linux libertine', 'freeserif'], 23 | 'courier new': ['dejavu sans mono', 'liberation mono', 'nimbus mono l', 'freemono'], 24 | 'georgia': ['nimbus roman no9 l', 'helvetiker'], 25 | 'helvetica': ['nimbus sans l', 'helvetiker', 'freesans'], 26 | 'tahoma': ['dejavu sans', 'optimer', 'bitstream vera sans'], 27 | 'verdana': ['dejavu sans', 'optimer', 'bitstream vera sans'] 28 | }, 29 | genericFaces: { 30 | 'serif': ['times new roman', 'georgia', 'garamond', 'bodoni', 'minion web', 'itc stone serif', 'bitstream cyberbit'], 31 | 'sans-serif': ['arial', 'verdana', 'trebuchet', 'tahoma', 'helvetica', 'itc avant garde gothic', 'univers', 'futura', 32 | 'gill sans', 'akzidenz grotesk', 'attika', 'typiko new era', 'itc stone sans', 'monotype gill sans 571'], 33 | 'monospace': ['courier', 'courier new', 'prestige', 'everson mono'], 34 | 'cursive': ['caflisch script', 'adobe poetica', 'sanvito', 'ex ponto', 'snell roundhand', 'zapf-chancery'], 35 | 'fantasy': ['alpha geometrique', 'critter', 'cottonwood', 'fb reactor', 'studz'] 36 | }, 37 | faces: {}, 38 | scaling: 0.962, 39 | _styleCache: {} 40 | }; 41 | 42 | /** The implementation of the text functions */ 43 | (function(){ 44 | var isOpera9 = (window.opera && /Opera\/9/.test(navigator.userAgent)), // It seems to be faster when the hacked methods are used. But there are artifacts with Opera 10. 45 | proto = window.CanvasRenderingContext2D ? window.CanvasRenderingContext2D.prototype : document.createElement('canvas').getContext('2d').__proto__, 46 | ctxt = window.Canvas.Text; 47 | 48 | // Global options 49 | ctxt.options = { 50 | fallbackCharacter: ' ', // The character that will be drawn when not present in the font face file 51 | dontUseMoz: false, // Don't use the builtin Firefox 3.0 functions (mozDrawText, mozPathText and mozMeasureText) 52 | reimplement: false, // Don't use the builtin official functions present in Chrome 2, Safari 4, and Firefox 3.1+ 53 | debug: false, // Debug mode, not used yet 54 | autoload: false // Specify the directory containing the face files or false 55 | }; 56 | 57 | var scripts = document.getElementsByTagName("script"), 58 | parts = scripts[scripts.length-1].src.split('?'); 59 | 60 | ctxt.basePath = parts[0].substr(0, parts[0].lastIndexOf("/")+1); 61 | 62 | if (parts[1]) { 63 | var options = parts[1].split('&'); 64 | for (var j = options.length-1; j >= 0; --j) { 65 | var pair = options[j].split('='); 66 | ctxt.options[pair[0]] = pair[1]; 67 | } 68 | } 69 | 70 | // What is the browser's implementation ? 71 | var moz = !ctxt.options.dontUseMoz && proto.mozDrawText && !proto.fillText; 72 | 73 | // If the text functions are already here or if on the iPhone (fillText exists) : nothing to do ! 74 | if (proto.fillText && !ctxt.options.reimplement && !/iphone/i.test(navigator.userAgent)) { 75 | // This property is needed, when including the font face files 76 | return window._typeface_js = {loadFace: function(){}}; 77 | } 78 | 79 | function getCSSWeightEquivalent(weight){ 80 | switch(String(weight)) { 81 | case 'bolder': 82 | case 'bold': 83 | case '900': 84 | case '800': 85 | case '700': return 'bold'; 86 | case '600': 87 | case '500': 88 | case '400': 89 | default: 90 | case 'normal': return 'normal'; 91 | //default: return 'light'; 92 | } 93 | } 94 | 95 | function getElementStyle(e){ 96 | if (document.defaultView && document.defaultView.getComputedStyle) { 97 | return document.defaultView.getComputedStyle(e, null); 98 | } 99 | return e.currentStyle || e.style; 100 | } 101 | 102 | function getXHR(){ 103 | if (!ctxt.xhr) { 104 | var methods = [ 105 | function(){return new XMLHttpRequest()}, 106 | function(){return new ActiveXObject('Msxml2.XMLHTTP')}, 107 | function(){return new ActiveXObject('Microsoft.XMLHTTP')} 108 | ]; 109 | for (var i = 0; i < methods.length; i++) { 110 | try { 111 | ctxt.xhr = methods[i](); 112 | break; 113 | } 114 | catch (e) {} 115 | } 116 | } 117 | return ctxt.xhr; 118 | } 119 | 120 | function arrayContains(a, v){ 121 | var i, l = a.length; 122 | for (i = l-1; i >= 0; --i) if (a[i] === v) return true; 123 | return false; 124 | } 125 | 126 | ctxt.lookupFamily = function(family){ 127 | var faces = this.faces, face, i, f, list, 128 | equiv = this.equivalentFaces, 129 | generic = this.genericFaces; 130 | 131 | if (faces[family]) return faces[family]; 132 | 133 | if (generic[family]) { 134 | for (i = 0; i < generic[family].length; i++) { 135 | if (f = this.lookupFamily(generic[family][i])) return f; 136 | } 137 | } 138 | 139 | if (!(list = equiv[family])) return false; 140 | 141 | for (i = 0; i < list.length; i++) 142 | if (face = faces[list[i]]) return face; 143 | return false; 144 | } 145 | 146 | ctxt.getFace = function(family, weight, style){ 147 | var face = this.lookupFamily(family); 148 | if (!face) return false; 149 | 150 | if (face && 151 | face[weight] && 152 | face[weight][style]) return face[weight][style]; 153 | 154 | if (!this.options.autoload) return false; 155 | 156 | var faceName = (family.replace(/[ -]/g, '_')+'-'+weight+'-'+style), 157 | xhr = this.xhr, 158 | url = this.basePath+this.options.autoload+'/'+faceName+'.js'; 159 | 160 | xhr = getXHR(); 161 | xhr.open("get", url, false); 162 | xhr.send(null); 163 | if(xhr.status == 200) { 164 | eval(xhr.responseText); 165 | return this.faces[family][weight][style]; 166 | } 167 | else throw 'Unable to load the font ['+family+' '+weight+' '+style+']'; 168 | return false; 169 | }; 170 | 171 | ctxt.loadFace = function(data){ 172 | var family = data.familyName.toLowerCase(); 173 | 174 | this.faces[family] = this.faces[family] || {}; 175 | 176 | if (data.strokeFont) { 177 | this.faces[family].normal = this.faces[family].normal || {}; 178 | this.faces[family].normal.normal = data; 179 | this.faces[family].normal.italic = data; 180 | 181 | this.faces[family].bold = this.faces[family].normal || {}; 182 | this.faces[family].bold.normal = data; 183 | this.faces[family].bold.italic = data; 184 | } 185 | else { 186 | this.faces[family][data.cssFontWeight] = this.faces[family][data.cssFontWeight] || {}; 187 | this.faces[family][data.cssFontWeight][data.cssFontStyle] = data; 188 | } 189 | return data; 190 | }; 191 | 192 | // To use the typeface.js face files 193 | window._typeface_js = {faces: ctxt.faces, loadFace: ctxt.loadFace}; 194 | 195 | ctxt.getFaceFromStyle = function(style){ 196 | var weight = getCSSWeightEquivalent(style.weight), 197 | families = style.family, i, face; 198 | 199 | for (i = 0; i < families.length; i++) { 200 | // The iPhone adds "-webkit-" at the beginning 201 | if (face = this.getFace(families[i].toLowerCase().replace(/^-webkit-/, ""), weight, style.style)) { 202 | return face; 203 | } 204 | } 205 | return false; 206 | }; 207 | 208 | // Default values 209 | // Firefox 3.5 throws an error when redefining these properties 210 | try { 211 | proto.font = "10px sans-serif"; 212 | proto.textAlign = "start"; 213 | proto.textBaseline = "alphabetic"; 214 | } 215 | catch(e){} 216 | 217 | proto.parseStyle = function(styleText){ 218 | if (ctxt._styleCache[styleText]) return this.getComputedStyle(ctxt._styleCache[styleText]); 219 | 220 | var style = {}, computedStyle, families; 221 | 222 | if (!this._elt) { 223 | this._elt = document.createElement('span'); 224 | this.canvas.appendChild(this._elt); 225 | } 226 | 227 | // Default style 228 | this.canvas.font = '10px sans-serif'; 229 | this._elt.style.font = styleText; 230 | 231 | computedStyle = getElementStyle(this._elt); 232 | style.size = computedStyle.fontSize; 233 | style.weight = getCSSWeightEquivalent(computedStyle.fontWeight); 234 | style.style = computedStyle.fontStyle; 235 | 236 | families = computedStyle.fontFamily.split(','); 237 | for(i = 0; i < families.length; i++) { 238 | families[i] = families[i].replace(/^["'\s]*/, '').replace(/["'\s]*$/, ''); 239 | } 240 | style.family = families; 241 | return this.getComputedStyle(ctxt._styleCache[styleText] = style); 242 | }; 243 | 244 | proto.buildStyle = function (style){ 245 | return style.style+' '+style.weight+' '+style.size+'px "'+style.family+'"'; 246 | }; 247 | 248 | proto.renderText = function(text, style){ 249 | var face = ctxt.getFaceFromStyle(style), 250 | scale = (style.size / face.resolution) * 0.75, 251 | offset = 0, i, 252 | chars = String(text).split(''), 253 | length = chars.length; 254 | 255 | if (!isOpera9) { 256 | this.scale(scale, -scale); 257 | this.lineWidth /= scale; 258 | } 259 | 260 | for (i = 0; i < length; i++) { 261 | offset += this.renderGlyph(chars[i], face, scale, offset); 262 | } 263 | }; 264 | 265 | if (isOpera9) { 266 | proto.renderGlyph = function(c, face, scale, offset){ 267 | var i, cpx, cpy, outline, action, length, 268 | glyph = face.glyphs[c] || face.glyphs[ctxt.options.fallbackCharacter]; 269 | 270 | if (!glyph) return; 271 | 272 | if (glyph.o) { 273 | outline = glyph._cachedOutline || (glyph._cachedOutline = glyph.o.split(' ')); 274 | length = outline.length; 275 | for (i = 0; i < length; ) { 276 | action = outline[i++]; 277 | 278 | switch(action) { 279 | case 'm': 280 | this.moveTo(outline[i++]*scale+offset, outline[i++]*-scale); 281 | break; 282 | case 'l': 283 | this.lineTo(outline[i++]*scale+offset, outline[i++]*-scale); 284 | break; 285 | case 'q': 286 | cpx = outline[i++]*scale+offset; 287 | cpy = outline[i++]*-scale; 288 | this.quadraticCurveTo(outline[i++]*scale+offset, outline[i++]*-scale, cpx, cpy); 289 | break; 290 | case 'b': 291 | cpx = outline[i++]*scale+offset; 292 | cpy = outline[i++]*-scale; 293 | this.bezierCurveTo(outline[i++]*scale+offset, outline[i++]*-scale, outline[i++]*scale+offset, outline[i++]*-scale, cpx, cpy); 294 | break; 295 | } 296 | } 297 | } 298 | return glyph.ha*scale; 299 | }; 300 | } 301 | else { 302 | proto.renderGlyph = function(c, face){ 303 | var i, cpx, cpy, outline, action, length, 304 | glyph = face.glyphs[c] || face.glyphs[ctxt.options.fallbackCharacter]; 305 | 306 | if (!glyph) return; 307 | 308 | if (glyph.o) { 309 | outline = glyph._cachedOutline || (glyph._cachedOutline = glyph.o.split(' ')); 310 | length = outline.length; 311 | for (i = 0; i < length; ) { 312 | action = outline[i++]; 313 | 314 | switch(action) { 315 | case 'm': 316 | this.moveTo(outline[i++], outline[i++]); 317 | break; 318 | case 'l': 319 | this.lineTo(outline[i++], outline[i++]); 320 | break; 321 | case 'q': 322 | cpx = outline[i++]; 323 | cpy = outline[i++]; 324 | this.quadraticCurveTo(outline[i++], outline[i++], cpx, cpy); 325 | break; 326 | case 'b': 327 | cpx = outline[i++]; 328 | cpy = outline[i++]; 329 | this.bezierCurveTo(outline[i++], outline[i++], outline[i++], outline[i++], cpx, cpy); 330 | break; 331 | } 332 | } 333 | } 334 | if (glyph.ha) this.translate(glyph.ha, 0); 335 | }; 336 | } 337 | 338 | proto.getTextExtents = function(text, style){ 339 | var width = 0, height = 0, ha = 0, 340 | face = ctxt.getFaceFromStyle(style), 341 | i, length = text.length, glyph; 342 | 343 | for (i = 0; i < length; i++) { 344 | glyph = face.glyphs[text.charAt(i)] || face.glyphs[ctxt.options.fallbackCharacter]; 345 | width += Math.max(glyph.ha, glyph.x_max); 346 | ha += glyph.ha; 347 | } 348 | 349 | return { 350 | width: width, 351 | height: face.lineHeight, 352 | ha: ha 353 | }; 354 | }; 355 | 356 | proto.getComputedStyle = function(style){ 357 | var p, canvasStyle = getElementStyle(this.canvas), 358 | computedStyle = {}, 359 | s = style.size, 360 | canvasFontSize = parseFloat(canvasStyle.fontSize), 361 | fontSize = parseFloat(s); 362 | 363 | for (p in style) { 364 | computedStyle[p] = style[p]; 365 | } 366 | 367 | // Compute the size 368 | if (typeof s === 'number' || s.indexOf('px') != -1) 369 | computedStyle.size = fontSize; 370 | else if (s.indexOf('em') != -1) 371 | computedStyle.size = canvasFontSize * fontSize; 372 | else if (s.indexOf('%') != -1) 373 | computedStyle.size = (canvasFontSize / 100) * fontSize; 374 | else if (s.indexOf('pt') != -1) 375 | computedStyle.size = fontSize / 0.75; 376 | else 377 | computedStyle.size = canvasFontSize; 378 | 379 | return computedStyle; 380 | }; 381 | 382 | proto.getTextOffset = function(text, style, face){ 383 | var canvasStyle = getElementStyle(this.canvas), 384 | metrics = this.measureText(text), 385 | scale = (style.size / face.resolution) * 0.75, 386 | offset = {x: 0, y: 0, metrics: metrics, scale: scale}; 387 | 388 | switch (this.textAlign) { 389 | default: 390 | case null: 391 | case 'left': break; 392 | case 'center': offset.x = -metrics.width/2; break; 393 | case 'right': offset.x = -metrics.width; break; 394 | case 'start': offset.x = (canvasStyle.direction == 'rtl') ? -metrics.width : 0; break; 395 | case 'end': offset.x = (canvasStyle.direction == 'ltr') ? -metrics.width : 0; break; 396 | } 397 | 398 | switch (this.textBaseline) { 399 | case 'alphabetic': break; 400 | default: 401 | case null: 402 | case 'ideographic': 403 | case 'bottom': offset.y = face.descender; break; 404 | case 'hanging': 405 | case 'top': offset.y = face.ascender; break; 406 | case 'middle': offset.y = (face.ascender + face.descender) / 2; break; 407 | } 408 | offset.y *= scale; 409 | return offset; 410 | }; 411 | 412 | proto.drawText = function(text, x, y, maxWidth, stroke){ 413 | var style = this.parseStyle(this.font), 414 | face = ctxt.getFaceFromStyle(style), 415 | offset = this.getTextOffset(text, style, face); 416 | 417 | this.save(); 418 | this.translate(x + offset.x, y + offset.y); 419 | if (face.strokeFont && !stroke) { 420 | this.strokeStyle = this.fillStyle; 421 | } 422 | this.lineCap = "round"; 423 | this.beginPath(); 424 | 425 | if (moz) { 426 | this.mozTextStyle = this.buildStyle(style); 427 | this[stroke ? 'mozPathText' : 'mozDrawText'](text); 428 | } 429 | else { 430 | this.scale(ctxt.scaling, ctxt.scaling); 431 | this.renderText(text, style); 432 | if (face.strokeFont) { 433 | this.lineWidth = 2 + style.size * (style.weight == 'bold' ? 0.08 : 0.015) / 2; 434 | } 435 | } 436 | 437 | this[(stroke || (face.strokeFont && !moz)) ? 'stroke' : 'fill'](); 438 | 439 | this.closePath(); 440 | this.restore(); 441 | 442 | if (ctxt.options.debug) { 443 | var left = Math.floor(offset.x + x) + 0.5, 444 | top = Math.floor(y)+0.5; 445 | 446 | this.save(); 447 | this.strokeStyle = '#F00'; 448 | this.lineWidth = 0.5; 449 | this.beginPath(); 450 | 451 | // Text baseline 452 | this.moveTo(left + offset.metrics.width, top); 453 | this.lineTo(left, top); 454 | 455 | // Text align 456 | this.moveTo(left - offset.x, top + offset.y); 457 | this.lineTo(left - offset.x, top + offset.y - style.size); 458 | 459 | this.stroke(); 460 | this.closePath(); 461 | this.restore(); 462 | } 463 | }; 464 | 465 | proto.fillText = function(text, x, y, maxWidth){ 466 | this.drawText(text, x, y, maxWidth, false); 467 | }; 468 | 469 | proto.strokeText = function(text, x, y, maxWidth){ 470 | this.drawText(text, x, y, maxWidth, true); 471 | }; 472 | 473 | proto.measureText = function(text){ 474 | var style = this.parseStyle(this.font), 475 | dim = {width: 0}; 476 | 477 | if (moz) { 478 | this.mozTextStyle = this.buildStyle(style); 479 | dim.width = this.mozMeasureText(text); 480 | } 481 | else { 482 | var face = ctxt.getFaceFromStyle(style), 483 | scale = (style.size / face.resolution) * 0.75; 484 | 485 | dim.width = this.getTextExtents(text, style).ha * scale * ctxt.scaling; 486 | } 487 | 488 | return dim; 489 | }; 490 | })(); -------------------------------------------------------------------------------- /libs/ie/excanvas.compiled.js: -------------------------------------------------------------------------------- 1 | // Copyright 2006 Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | document.createElement("canvas").getContext||(function(){var s=Math,j=s.round,F=s.sin,G=s.cos,V=s.abs,W=s.sqrt,k=10,v=k/2;function X(){return this.context_||(this.context_=new H(this))}var L=Array.prototype.slice;function Y(b,a){var c=L.call(arguments,2);return function(){return b.apply(a,c.concat(L.call(arguments)))}}var M={init:function(b){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var a=b||document;a.createElement("canvas");a.attachEvent("onreadystatechange",Y(this.init_,this,a))}},init_:function(b){b.namespaces.g_vml_|| 15 | b.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML");b.namespaces.g_o_||b.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML");if(!b.styleSheets.ex_canvas_){var a=b.createStyleSheet();a.owningElement.id="ex_canvas_";a.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\:*{behavior:url(#default#VML)}g_o_\\:*{behavior:url(#default#VML)}"}var c=b.getElementsByTagName("canvas"),d=0;for(;d<c.length;d++)this.initElement(c[d])}, 16 | initElement:function(b){if(!b.getContext){b.getContext=X;b.innerHTML="";b.attachEvent("onpropertychange",Z);b.attachEvent("onresize",$);var a=b.attributes;if(a.width&&a.width.specified)b.style.width=a.width.nodeValue+"px";else b.width=b.clientWidth;if(a.height&&a.height.specified)b.style.height=a.height.nodeValue+"px";else b.height=b.clientHeight}return b}};function Z(b){var a=b.srcElement;switch(b.propertyName){case "width":a.style.width=a.attributes.width.nodeValue+"px";a.getContext().clearRect(); 17 | break;case "height":a.style.height=a.attributes.height.nodeValue+"px";a.getContext().clearRect();break}}function $(b){var a=b.srcElement;if(a.firstChild){a.firstChild.style.width=a.clientWidth+"px";a.firstChild.style.height=a.clientHeight+"px"}}M.init();var N=[],B=0;for(;B<16;B++){var C=0;for(;C<16;C++)N[B*16+C]=B.toString(16)+C.toString(16)}function I(){return[[1,0,0],[0,1,0],[0,0,1]]}function y(b,a){var c=I(),d=0;for(;d<3;d++){var f=0;for(;f<3;f++){var h=0,g=0;for(;g<3;g++)h+=b[d][g]*a[g][f];c[d][f]= 18 | h}}return c}function O(b,a){a.fillStyle=b.fillStyle;a.lineCap=b.lineCap;a.lineJoin=b.lineJoin;a.lineWidth=b.lineWidth;a.miterLimit=b.miterLimit;a.shadowBlur=b.shadowBlur;a.shadowColor=b.shadowColor;a.shadowOffsetX=b.shadowOffsetX;a.shadowOffsetY=b.shadowOffsetY;a.strokeStyle=b.strokeStyle;a.globalAlpha=b.globalAlpha;a.arcScaleX_=b.arcScaleX_;a.arcScaleY_=b.arcScaleY_;a.lineScale_=b.lineScale_}function P(b){var a,c=1;b=String(b);if(b.substring(0,3)=="rgb"){var d=b.indexOf("(",3),f=b.indexOf(")",d+ 19 | 1),h=b.substring(d+1,f).split(",");a="#";var g=0;for(;g<3;g++)a+=N[Number(h[g])];if(h.length==4&&b.substr(3,1)=="a")c=h[3]}else a=b;return{color:a,alpha:c}}function aa(b){switch(b){case "butt":return"flat";case "round":return"round";case "square":default:return"square"}}function H(b){this.m_=I();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.fillStyle=this.strokeStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=k*1;this.globalAlpha=1;this.canvas=b; 20 | var a=b.ownerDocument.createElement("div");a.style.width=b.clientWidth+"px";a.style.height=b.clientHeight+"px";a.style.overflow="hidden";a.style.position="absolute";b.appendChild(a);this.element_=a;this.lineScale_=this.arcScaleY_=this.arcScaleX_=1}var i=H.prototype;i.clearRect=function(){this.element_.innerHTML=""};i.beginPath=function(){this.currentPath_=[]};i.moveTo=function(b,a){var c=this.getCoords_(b,a);this.currentPath_.push({type:"moveTo",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y}; 21 | i.lineTo=function(b,a){var c=this.getCoords_(b,a);this.currentPath_.push({type:"lineTo",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};i.bezierCurveTo=function(b,a,c,d,f,h){var g=this.getCoords_(f,h),l=this.getCoords_(b,a),e=this.getCoords_(c,d);Q(this,l,e,g)};function Q(b,a,c,d){b.currentPath_.push({type:"bezierCurveTo",cp1x:a.x,cp1y:a.y,cp2x:c.x,cp2y:c.y,x:d.x,y:d.y});b.currentX_=d.x;b.currentY_=d.y}i.quadraticCurveTo=function(b,a,c,d){var f=this.getCoords_(b,a),h=this.getCoords_(c,d),g={x:this.currentX_+ 22 | 0.6666666666666666*(f.x-this.currentX_),y:this.currentY_+0.6666666666666666*(f.y-this.currentY_)};Q(this,g,{x:g.x+(h.x-this.currentX_)/3,y:g.y+(h.y-this.currentY_)/3},h)};i.arc=function(b,a,c,d,f,h){c*=k;var g=h?"at":"wa",l=b+G(d)*c-v,e=a+F(d)*c-v,m=b+G(f)*c-v,r=a+F(f)*c-v;if(l==m&&!h)l+=0.125;var n=this.getCoords_(b,a),o=this.getCoords_(l,e),q=this.getCoords_(m,r);this.currentPath_.push({type:g,x:n.x,y:n.y,radius:c,xStart:o.x,yStart:o.y,xEnd:q.x,yEnd:q.y})};i.rect=function(b,a,c,d){this.moveTo(b, 23 | a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath()};i.strokeRect=function(b,a,c,d){var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.stroke();this.currentPath_=f};i.fillRect=function(b,a,c,d){var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.fill();this.currentPath_=f};i.createLinearGradient=function(b, 24 | a,c,d){var f=new D("gradient");f.x0_=b;f.y0_=a;f.x1_=c;f.y1_=d;return f};i.createRadialGradient=function(b,a,c,d,f,h){var g=new D("gradientradial");g.x0_=b;g.y0_=a;g.r0_=c;g.x1_=d;g.y1_=f;g.r1_=h;return g};i.drawImage=function(b){var a,c,d,f,h,g,l,e,m=b.runtimeStyle.width,r=b.runtimeStyle.height;b.runtimeStyle.width="auto";b.runtimeStyle.height="auto";var n=b.width,o=b.height;b.runtimeStyle.width=m;b.runtimeStyle.height=r;if(arguments.length==3){a=arguments[1];c=arguments[2];h=g=0;l=d=n;e=f=o}else if(arguments.length== 25 | 5){a=arguments[1];c=arguments[2];d=arguments[3];f=arguments[4];h=g=0;l=n;e=o}else if(arguments.length==9){h=arguments[1];g=arguments[2];l=arguments[3];e=arguments[4];a=arguments[5];c=arguments[6];d=arguments[7];f=arguments[8]}else throw Error("Invalid number of arguments");var q=this.getCoords_(a,c),t=[];t.push(" <g_vml_:group",' coordsize="',k*10,",",k*10,'"',' coordorigin="0,0"',' style="width:',10,"px;height:",10,"px;position:absolute;");if(this.m_[0][0]!=1||this.m_[0][1]){var E=[];E.push("M11=", 26 | this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",j(q.x/k),",","Dy=",j(q.y/k),"");var p=q,z=this.getCoords_(a+d,c),w=this.getCoords_(a,c+f),x=this.getCoords_(a+d,c+f);p.x=s.max(p.x,z.x,w.x,x.x);p.y=s.max(p.y,z.y,w.y,x.y);t.push("padding:0 ",j(p.x/k),"px ",j(p.y/k),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",E.join(""),", sizingmethod='clip');")}else t.push("top:",j(q.y/k),"px;left:",j(q.x/k),"px;");t.push(' ">','<g_vml_:image src="',b.src, 27 | '"',' style="width:',k*d,"px;"," height:",k*f,'px;"',' cropleft="',h/n,'"',' croptop="',g/o,'"',' cropright="',(n-h-l)/n,'"',' cropbottom="',(o-g-e)/o,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("BeforeEnd",t.join(""))};i.stroke=function(b){var a=[],c=P(b?this.fillStyle:this.strokeStyle),d=c.color,f=c.alpha*this.globalAlpha;a.push("<g_vml_:shape",' filled="',!!b,'"',' style="position:absolute;width:',10,"px;height:",10,'px;"',' coordorigin="0 0" coordsize="',k*10," ",k*10,'"',' stroked="', 28 | !b,'"',' path="');var h={x:null,y:null},g={x:null,y:null},l=0;for(;l<this.currentPath_.length;l++){var e=this.currentPath_[l];switch(e.type){case "moveTo":a.push(" m ",j(e.x),",",j(e.y));break;case "lineTo":a.push(" l ",j(e.x),",",j(e.y));break;case "close":a.push(" x ");e=null;break;case "bezierCurveTo":a.push(" c ",j(e.cp1x),",",j(e.cp1y),",",j(e.cp2x),",",j(e.cp2y),",",j(e.x),",",j(e.y));break;case "at":case "wa":a.push(" ",e.type," ",j(e.x-this.arcScaleX_*e.radius),",",j(e.y-this.arcScaleY_*e.radius), 29 | " ",j(e.x+this.arcScaleX_*e.radius),",",j(e.y+this.arcScaleY_*e.radius)," ",j(e.xStart),",",j(e.yStart)," ",j(e.xEnd),",",j(e.yEnd));break}if(e){if(h.x==null||e.x<h.x)h.x=e.x;if(g.x==null||e.x>g.x)g.x=e.x;if(h.y==null||e.y<h.y)h.y=e.y;if(g.y==null||e.y>g.y)g.y=e.y}}a.push(' ">');if(b)if(typeof this.fillStyle=="object"){var m=this.fillStyle,r=0,n={x:0,y:0},o=0,q=1;if(m.type_=="gradient"){var t=m.x1_/this.arcScaleX_,E=m.y1_/this.arcScaleY_,p=this.getCoords_(m.x0_/this.arcScaleX_,m.y0_/this.arcScaleY_), 30 | z=this.getCoords_(t,E);r=Math.atan2(z.x-p.x,z.y-p.y)*180/Math.PI;if(r<0)r+=360;if(r<1.0E-6)r=0}else{var p=this.getCoords_(m.x0_,m.y0_),w=g.x-h.x,x=g.y-h.y;n={x:(p.x-h.x)/w,y:(p.y-h.y)/x};w/=this.arcScaleX_*k;x/=this.arcScaleY_*k;var R=s.max(w,x);o=2*m.r0_/R;q=2*m.r1_/R-o}var u=m.colors_;u.sort(function(ba,ca){return ba.offset-ca.offset});var J=u.length,da=u[0].color,ea=u[J-1].color,fa=u[0].alpha*this.globalAlpha,ga=u[J-1].alpha*this.globalAlpha,S=[],l=0;for(;l<J;l++){var T=u[l];S.push(T.offset*q+ 31 | o+" "+T.color)}a.push('<g_vml_:fill type="',m.type_,'"',' method="none" focus="100%"',' color="',da,'"',' color2="',ea,'"',' colors="',S.join(","),'"',' opacity="',ga,'"',' g_o_:opacity2="',fa,'"',' angle="',r,'"',' focusposition="',n.x,",",n.y,'" />')}else a.push('<g_vml_:fill color="',d,'" opacity="',f,'" />');else{var K=this.lineScale_*this.lineWidth;if(K<1)f*=K;a.push("<g_vml_:stroke",' opacity="',f,'"',' joinstyle="',this.lineJoin,'"',' miterlimit="',this.miterLimit,'"',' endcap="',aa(this.lineCap), 32 | '"',' weight="',K,'px"',' color="',d,'" />')}a.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",a.join(""))};i.fill=function(){this.stroke(true)};i.closePath=function(){this.currentPath_.push({type:"close"})};i.getCoords_=function(b,a){var c=this.m_;return{x:k*(b*c[0][0]+a*c[1][0]+c[2][0])-v,y:k*(b*c[0][1]+a*c[1][1]+c[2][1])-v}};i.save=function(){var b={};O(this,b);this.aStack_.push(b);this.mStack_.push(this.m_);this.m_=y(I(),this.m_)};i.restore=function(){O(this.aStack_.pop(), 33 | this);this.m_=this.mStack_.pop()};function ha(b){var a=0;for(;a<3;a++){var c=0;for(;c<2;c++)if(!isFinite(b[a][c])||isNaN(b[a][c]))return false}return true}function A(b,a,c){if(!!ha(a)){b.m_=a;if(c)b.lineScale_=W(V(a[0][0]*a[1][1]-a[0][1]*a[1][0]))}}i.translate=function(b,a){A(this,y([[1,0,0],[0,1,0],[b,a,1]],this.m_),false)};i.rotate=function(b){var a=G(b),c=F(b);A(this,y([[a,c,0],[-c,a,0],[0,0,1]],this.m_),false)};i.scale=function(b,a){this.arcScaleX_*=b;this.arcScaleY_*=a;A(this,y([[b,0,0],[0,a, 34 | 0],[0,0,1]],this.m_),true)};i.transform=function(b,a,c,d,f,h){A(this,y([[b,a,0],[c,d,0],[f,h,1]],this.m_),true)};i.setTransform=function(b,a,c,d,f,h){A(this,[[b,a,0],[c,d,0],[f,h,1]],true)};i.clip=function(){};i.arcTo=function(){};i.createPattern=function(){return new U};function D(b){this.type_=b;this.r1_=this.y1_=this.x1_=this.r0_=this.y0_=this.x0_=0;this.colors_=[]}D.prototype.addColorStop=function(b,a){a=P(a);this.colors_.push({offset:b,color:a.color,alpha:a.alpha})};function U(){}G_vmlCanvasManager= 35 | M;CanvasRenderingContext2D=H;CanvasGradient=D;CanvasPattern=U})(); 36 | -------------------------------------------------------------------------------- /libs/ie/excanvas.js: -------------------------------------------------------------------------------- 1 | // Copyright 2006 Google Inc. 2 | // 3 | // Licensed under the Apache License, Version 2.0 (the "License"); 4 | // you may not use this file except in compliance with the License. 5 | // You may obtain a copy of the License at 6 | // 7 | // http://www.apache.org/licenses/LICENSE-2.0 8 | // 9 | // Unless required by applicable law or agreed to in writing, software 10 | // distributed under the License is distributed on an "AS IS" BASIS, 11 | // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | // See the License for the specific language governing permissions and 13 | // limitations under the License. 14 | 15 | 16 | // Known Issues: 17 | // 18 | // * Patterns are not implemented. 19 | // * Radial gradient are not implemented. The VML version of these look very 20 | // different from the canvas one. 21 | // * Clipping paths are not implemented. 22 | // * Coordsize. The width and height attribute have higher priority than the 23 | // width and height style values which isn't correct. 24 | // * Painting mode isn't implemented. 25 | // * Canvas width/height should is using content-box by default. IE in 26 | // Quirks mode will draw the canvas using border-box. Either change your 27 | // doctype to HTML5 28 | // (http://www.whatwg.org/specs/web-apps/current-work/#the-doctype) 29 | // or use Box Sizing Behavior from WebFX 30 | // (http://webfx.eae.net/dhtml/boxsizing/boxsizing.html) 31 | // * Non uniform scaling does not correctly scale strokes. 32 | // * Optimize. There is always room for speed improvements. 33 | 34 | // Only add this code if we do not already have a canvas implementation 35 | if (!document.createElement('canvas').getContext) { 36 | 37 | (function () { 38 | 39 | // alias some functions to make (compiled) code shorter 40 | var m = Math; 41 | var mr = m.round; 42 | var ms = m.sin; 43 | var mc = m.cos; 44 | var abs = m.abs; 45 | var sqrt = m.sqrt; 46 | 47 | // this is used for sub pixel precision 48 | var Z = 10; 49 | var Z2 = Z / 2; 50 | 51 | /** 52 | * This funtion is assigned to the <canvas> elements as element.getContext(). 53 | * @this {HTMLElement} 54 | * @return {CanvasRenderingContext2D_} 55 | */ 56 | function getContext() { 57 | return this.context_ || 58 | (this.context_ = new CanvasRenderingContext2D_(this)); 59 | } 60 | 61 | var slice = Array.prototype.slice; 62 | 63 | /** 64 | * Binds a function to an object. The returned function will always use the 65 | * passed in {@code obj} as {@code this}. 66 | * 67 | * Example: 68 | * 69 | * g = bind(f, obj, a, b) 70 | * g(c, d) // will do f.call(obj, a, b, c, d) 71 | * 72 | * @param {Function} f The function to bind the object to 73 | * @param {Object} obj The object that should act as this when the function 74 | * is called 75 | * @param {*} var_args Rest arguments that will be used as the initial 76 | * arguments when the function is called 77 | * @return {Function} A new function that has bound this 78 | */ 79 | function bind(f, obj, var_args) { 80 | var a = slice.call(arguments, 2); 81 | return function () { 82 | return f.apply(obj, a.concat(slice.call(arguments))); 83 | }; 84 | } 85 | 86 | var G_vmlCanvasManager_ = { 87 | init: function (opt_doc) { 88 | if (/MSIE/.test(navigator.userAgent) && !window.opera) { 89 | var doc = opt_doc || document; 90 | // Create a dummy element so that IE will allow canvas elements to be 91 | // recognized. 92 | doc.createElement('canvas'); 93 | doc.attachEvent('onreadystatechange', bind(this.init_, this, doc)); 94 | } 95 | }, 96 | 97 | init_: function (doc) { 98 | // create xmlns 99 | if (!doc.namespaces['g_vml_']) { 100 | doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml', 101 | '#default#VML'); 102 | 103 | } 104 | if (!doc.namespaces['g_o_']) { 105 | doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office', 106 | '#default#VML'); 107 | } 108 | 109 | // Setup default CSS. Only add one style sheet per document 110 | if (!doc.styleSheets['ex_canvas_']) { 111 | var ss = doc.createStyleSheet(); 112 | ss.owningElement.id = 'ex_canvas_'; 113 | ss.cssText = 'canvas{display:inline-block;overflow:hidden;' + 114 | // default size is 300x150 in Gecko and Opera 115 | 'text-align:left;width:300px;height:150px}' + 116 | 'g_vml_\\:*{behavior:url(#default#VML)}' + 117 | 'g_o_\\:*{behavior:url(#default#VML)}'; 118 | 119 | } 120 | 121 | // find all canvas elements 122 | var els = doc.getElementsByTagName('canvas'); 123 | for (var i = 0; i < els.length; i++) { 124 | this.initElement(els[i]); 125 | } 126 | }, 127 | 128 | /** 129 | * Public initializes a canvas element so that it can be used as canvas 130 | * element from now on. This is called automatically before the page is 131 | * loaded but if you are creating elements using createElement you need to 132 | * make sure this is called on the element. 133 | * @param {HTMLElement} el The canvas element to initialize. 134 | * @return {HTMLElement} the element that was created. 135 | */ 136 | initElement: function (el) { 137 | if (!el.getContext) { 138 | 139 | el.getContext = getContext; 140 | 141 | // Remove fallback content. There is no way to hide text nodes so we 142 | // just remove all childNodes. We could hide all elements and remove 143 | // text nodes but who really cares about the fallback content. 144 | el.innerHTML = ''; 145 | 146 | // do not use inline function because that will leak memory 147 | el.attachEvent('onpropertychange', onPropertyChange); 148 | el.attachEvent('onresize', onResize); 149 | 150 | var attrs = el.attributes; 151 | if (attrs.width && attrs.width.specified) { 152 | // TODO: use runtimeStyle and coordsize 153 | // el.getContext().setWidth_(attrs.width.nodeValue); 154 | el.style.width = attrs.width.nodeValue + 'px'; 155 | } else { 156 | el.width = el.clientWidth; 157 | } 158 | if (attrs.height && attrs.height.specified) { 159 | // TODO: use runtimeStyle and coordsize 160 | // el.getContext().setHeight_(attrs.height.nodeValue); 161 | el.style.height = attrs.height.nodeValue + 'px'; 162 | } else { 163 | el.height = el.clientHeight; 164 | } 165 | //el.getContext().setCoordsize_() 166 | } 167 | return el; 168 | } 169 | }; 170 | 171 | function onPropertyChange(e) { 172 | var el = e.srcElement; 173 | 174 | switch (e.propertyName) { 175 | case 'width': 176 | el.style.width = el.attributes.width.nodeValue + 'px'; 177 | el.getContext().clearRect(); 178 | break; 179 | case 'height': 180 | el.style.height = el.attributes.height.nodeValue + 'px'; 181 | el.getContext().clearRect(); 182 | break; 183 | } 184 | } 185 | 186 | function onResize(e) { 187 | var el = e.srcElement; 188 | if (el.firstChild) { 189 | el.firstChild.style.width = el.clientWidth + 'px'; 190 | el.firstChild.style.height = el.clientHeight + 'px'; 191 | } 192 | } 193 | 194 | G_vmlCanvasManager_.init(); 195 | 196 | // precompute "00" to "FF" 197 | var dec2hex = []; 198 | for (var i = 0; i < 16; i++) { 199 | for (var j = 0; j < 16; j++) { 200 | dec2hex[i * 16 + j] = i.toString(16) + j.toString(16); 201 | } 202 | } 203 | 204 | function createMatrixIdentity() { 205 | return [ 206 | [1, 0, 0], 207 | [0, 1, 0], 208 | [0, 0, 1] 209 | ]; 210 | } 211 | 212 | function matrixMultiply(m1, m2) { 213 | var result = createMatrixIdentity(); 214 | 215 | for (var x = 0; x < 3; x++) { 216 | for (var y = 0; y < 3; y++) { 217 | var sum = 0; 218 | 219 | for (var z = 0; z < 3; z++) { 220 | sum += m1[x][z] * m2[z][y]; 221 | } 222 | 223 | result[x][y] = sum; 224 | } 225 | } 226 | return result; 227 | } 228 | 229 | function copyState(o1, o2) { 230 | o2.fillStyle = o1.fillStyle; 231 | o2.lineCap = o1.lineCap; 232 | o2.lineJoin = o1.lineJoin; 233 | o2.lineWidth = o1.lineWidth; 234 | o2.miterLimit = o1.miterLimit; 235 | o2.shadowBlur = o1.shadowBlur; 236 | o2.shadowColor = o1.shadowColor; 237 | o2.shadowOffsetX = o1.shadowOffsetX; 238 | o2.shadowOffsetY = o1.shadowOffsetY; 239 | o2.strokeStyle = o1.strokeStyle; 240 | o2.globalAlpha = o1.globalAlpha; 241 | o2.arcScaleX_ = o1.arcScaleX_; 242 | o2.arcScaleY_ = o1.arcScaleY_; 243 | o2.lineScale_ = o1.lineScale_; 244 | } 245 | 246 | function processStyle(styleString) { 247 | var str, alpha = 1; 248 | 249 | styleString = String(styleString); 250 | if (styleString.substring(0, 3) == 'rgb') { 251 | var start = styleString.indexOf('(', 3); 252 | var end = styleString.indexOf(')', start + 1); 253 | var guts = styleString.substring(start + 1, end).split(','); 254 | 255 | str = '#'; 256 | for (var i = 0; i < 3; i++) { 257 | str += dec2hex[Number(guts[i])]; 258 | } 259 | 260 | if (guts.length == 4 && styleString.substr(3, 1) == 'a') { 261 | alpha = guts[3]; 262 | } 263 | } else { 264 | str = styleString; 265 | } 266 | 267 | return { color: str, alpha: alpha }; 268 | } 269 | 270 | function processLineCap(lineCap) { 271 | switch (lineCap) { 272 | case 'butt': 273 | return 'flat'; 274 | case 'round': 275 | return 'round'; 276 | case 'square': 277 | default: 278 | return 'square'; 279 | } 280 | } 281 | 282 | /** 283 | * This class implements CanvasRenderingContext2D interface as described by 284 | * the WHATWG. 285 | * @param {HTMLElement} surfaceElement The element that the 2D context should 286 | * be associated with 287 | */ 288 | function CanvasRenderingContext2D_(surfaceElement) { 289 | this.m_ = createMatrixIdentity(); 290 | 291 | this.mStack_ = []; 292 | this.aStack_ = []; 293 | this.currentPath_ = []; 294 | 295 | // Canvas context properties 296 | this.strokeStyle = '#000'; 297 | this.fillStyle = '#000'; 298 | 299 | this.lineWidth = 1; 300 | this.lineJoin = 'miter'; 301 | this.lineCap = 'butt'; 302 | this.miterLimit = Z * 1; 303 | this.globalAlpha = 1; 304 | this.canvas = surfaceElement; 305 | 306 | var el = surfaceElement.ownerDocument.createElement('div'); 307 | el.style.width = surfaceElement.clientWidth + 'px'; 308 | el.style.height = surfaceElement.clientHeight + 'px'; 309 | el.style.overflow = 'hidden'; 310 | el.style.position = 'absolute'; 311 | surfaceElement.appendChild(el); 312 | 313 | this.element_ = el; 314 | this.arcScaleX_ = 1; 315 | this.arcScaleY_ = 1; 316 | this.lineScale_ = 1; 317 | } 318 | 319 | var contextPrototype = CanvasRenderingContext2D_.prototype; 320 | contextPrototype.clearRect = function () { 321 | this.element_.innerHTML = ''; 322 | }; 323 | 324 | contextPrototype.beginPath = function () { 325 | // TODO: Branch current matrix so that save/restore has no effect 326 | // as per safari docs. 327 | this.currentPath_ = []; 328 | }; 329 | 330 | contextPrototype.moveTo = function (aX, aY) { 331 | var p = this.getCoords_(aX, aY); 332 | this.currentPath_.push({ type: 'moveTo', x: p.x, y: p.y }); 333 | this.currentX_ = p.x; 334 | this.currentY_ = p.y; 335 | }; 336 | 337 | contextPrototype.lineTo = function (aX, aY) { 338 | var p = this.getCoords_(aX, aY); 339 | this.currentPath_.push({ type: 'lineTo', x: p.x, y: p.y }); 340 | 341 | this.currentX_ = p.x; 342 | this.currentY_ = p.y; 343 | }; 344 | 345 | contextPrototype.bezierCurveTo = function (aCP1x, aCP1y, 346 | aCP2x, aCP2y, 347 | aX, aY) { 348 | var p = this.getCoords_(aX, aY); 349 | var cp1 = this.getCoords_(aCP1x, aCP1y); 350 | var cp2 = this.getCoords_(aCP2x, aCP2y); 351 | bezierCurveTo(this, cp1, cp2, p); 352 | }; 353 | 354 | // Helper function that takes the already fixed cordinates. 355 | function bezierCurveTo(self, cp1, cp2, p) { 356 | self.currentPath_.push({ 357 | type: 'bezierCurveTo', 358 | cp1x: cp1.x, 359 | cp1y: cp1.y, 360 | cp2x: cp2.x, 361 | cp2y: cp2.y, 362 | x: p.x, 363 | y: p.y 364 | }); 365 | self.currentX_ = p.x; 366 | self.currentY_ = p.y; 367 | } 368 | 369 | contextPrototype.quadraticCurveTo = function (aCPx, aCPy, aX, aY) { 370 | // the following is lifted almost directly from 371 | // http://developer.mozilla.org/en/docs/Canvas_tutorial:Drawing_shapes 372 | 373 | var cp = this.getCoords_(aCPx, aCPy); 374 | var p = this.getCoords_(aX, aY); 375 | 376 | var cp1 = { 377 | x: this.currentX_ + 2.0 / 3.0 * (cp.x - this.currentX_), 378 | y: this.currentY_ + 2.0 / 3.0 * (cp.y - this.currentY_) 379 | }; 380 | var cp2 = { 381 | x: cp1.x + (p.x - this.currentX_) / 3.0, 382 | y: cp1.y + (p.y - this.currentY_) / 3.0 383 | }; 384 | 385 | bezierCurveTo(this, cp1, cp2, p); 386 | }; 387 | 388 | contextPrototype.arc = function (aX, aY, aRadius, 389 | aStartAngle, aEndAngle, aClockwise) { 390 | aRadius *= Z; 391 | var arcType = aClockwise ? 'at' : 'wa'; 392 | 393 | var xStart = aX + mc(aStartAngle) * aRadius - Z2; 394 | var yStart = aY + ms(aStartAngle) * aRadius - Z2; 395 | 396 | var xEnd = aX + mc(aEndAngle) * aRadius - Z2; 397 | var yEnd = aY + ms(aEndAngle) * aRadius - Z2; 398 | 399 | // IE won't render arches drawn counter clockwise if xStart == xEnd. 400 | if (xStart == xEnd && !aClockwise) { 401 | xStart += 0.125; // Offset xStart by 1/80 of a pixel. Use something 402 | // that can be represented in binary 403 | } 404 | 405 | var p = this.getCoords_(aX, aY); 406 | var pStart = this.getCoords_(xStart, yStart); 407 | var pEnd = this.getCoords_(xEnd, yEnd); 408 | 409 | this.currentPath_.push({ type: arcType, 410 | x: p.x, 411 | y: p.y, 412 | radius: aRadius, 413 | xStart: pStart.x, 414 | yStart: pStart.y, 415 | xEnd: pEnd.x, 416 | yEnd: pEnd.y 417 | }); 418 | 419 | }; 420 | 421 | contextPrototype.rect = function (aX, aY, aWidth, aHeight) { 422 | this.moveTo(aX, aY); 423 | this.lineTo(aX + aWidth, aY); 424 | this.lineTo(aX + aWidth, aY + aHeight); 425 | this.lineTo(aX, aY + aHeight); 426 | this.closePath(); 427 | }; 428 | 429 | contextPrototype.strokeRect = function (aX, aY, aWidth, aHeight) { 430 | var oldPath = this.currentPath_; 431 | this.beginPath(); 432 | 433 | this.moveTo(aX, aY); 434 | this.lineTo(aX + aWidth, aY); 435 | this.lineTo(aX + aWidth, aY + aHeight); 436 | this.lineTo(aX, aY + aHeight); 437 | this.closePath(); 438 | this.stroke(); 439 | 440 | this.currentPath_ = oldPath; 441 | }; 442 | 443 | contextPrototype.fillRect = function (aX, aY, aWidth, aHeight) { 444 | var oldPath = this.currentPath_; 445 | this.beginPath(); 446 | 447 | this.moveTo(aX, aY); 448 | this.lineTo(aX + aWidth, aY); 449 | this.lineTo(aX + aWidth, aY + aHeight); 450 | this.lineTo(aX, aY + aHeight); 451 | this.closePath(); 452 | this.fill(); 453 | 454 | this.currentPath_ = oldPath; 455 | }; 456 | 457 | contextPrototype.createLinearGradient = function (aX0, aY0, aX1, aY1) { 458 | var gradient = new CanvasGradient_('gradient'); 459 | gradient.x0_ = aX0; 460 | gradient.y0_ = aY0; 461 | gradient.x1_ = aX1; 462 | gradient.y1_ = aY1; 463 | return gradient; 464 | }; 465 | 466 | contextPrototype.createRadialGradient = function (aX0, aY0, aR0, 467 | aX1, aY1, aR1) { 468 | var gradient = new CanvasGradient_('gradientradial'); 469 | gradient.x0_ = aX0; 470 | gradient.y0_ = aY0; 471 | gradient.r0_ = aR0; 472 | gradient.x1_ = aX1; 473 | gradient.y1_ = aY1; 474 | gradient.r1_ = aR1; 475 | return gradient; 476 | }; 477 | 478 | contextPrototype.drawImage = function (image, var_args) { 479 | var dx, dy, dw, dh, sx, sy, sw, sh; 480 | 481 | // to find the original width we overide the width and height 482 | var oldRuntimeWidth = image.runtimeStyle.width; 483 | var oldRuntimeHeight = image.runtimeStyle.height; 484 | image.runtimeStyle.width = 'auto'; 485 | image.runtimeStyle.height = 'auto'; 486 | 487 | // get the original size 488 | var w = image.width; 489 | var h = image.height; 490 | 491 | // and remove overides 492 | image.runtimeStyle.width = oldRuntimeWidth; 493 | image.runtimeStyle.height = oldRuntimeHeight; 494 | 495 | if (arguments.length == 3) { 496 | dx = arguments[1]; 497 | dy = arguments[2]; 498 | sx = sy = 0; 499 | sw = dw = w; 500 | sh = dh = h; 501 | } else if (arguments.length == 5) { 502 | dx = arguments[1]; 503 | dy = arguments[2]; 504 | dw = arguments[3]; 505 | dh = arguments[4]; 506 | sx = sy = 0; 507 | sw = w; 508 | sh = h; 509 | } else if (arguments.length == 9) { 510 | sx = arguments[1]; 511 | sy = arguments[2]; 512 | sw = arguments[3]; 513 | sh = arguments[4]; 514 | dx = arguments[5]; 515 | dy = arguments[6]; 516 | dw = arguments[7]; 517 | dh = arguments[8]; 518 | } else { 519 | throw Error('Invalid number of arguments'); 520 | } 521 | 522 | var d = this.getCoords_(dx, dy); 523 | 524 | var w2 = sw / 2; 525 | var h2 = sh / 2; 526 | 527 | var vmlStr = []; 528 | 529 | var W = 10; 530 | var H = 10; 531 | 532 | // For some reason that I've now forgotten, using divs didn't work 533 | vmlStr.push(' <g_vml_:group', 534 | ' coordsize="', Z * W, ',', Z * H, '"', 535 | ' coordorigin="0,0"', 536 | ' style="width:', W, 'px;height:', H, 'px;position:absolute;'); 537 | 538 | // If filters are necessary (rotation exists), create them 539 | // filters are bog-slow, so only create them if abbsolutely necessary 540 | // The following check doesn't account for skews (which don't exist 541 | // in the canvas spec (yet) anyway. 542 | 543 | if (this.m_[0][0] != 1 || this.m_[0][1]) { 544 | var filter = []; 545 | 546 | // Note the 12/21 reversal 547 | filter.push('M11=', this.m_[0][0], ',', 548 | 'M12=', this.m_[1][0], ',', 549 | 'M21=', this.m_[0][1], ',', 550 | 'M22=', this.m_[1][1], ',', 551 | 'Dx=', mr(d.x / Z), ',', 552 | 'Dy=', mr(d.y / Z), ''); 553 | 554 | // Bounding box calculation (need to minimize displayed area so that 555 | // filters don't waste time on unused pixels. 556 | var max = d; 557 | var c2 = this.getCoords_(dx + dw, dy); 558 | var c3 = this.getCoords_(dx, dy + dh); 559 | var c4 = this.getCoords_(dx + dw, dy + dh); 560 | 561 | max.x = m.max(max.x, c2.x, c3.x, c4.x); 562 | max.y = m.max(max.y, c2.y, c3.y, c4.y); 563 | 564 | vmlStr.push('padding:0 ', mr(max.x / Z), 'px ', mr(max.y / Z), 565 | 'px 0;filter:progid:DXImageTransform.Microsoft.Matrix(', 566 | filter.join(''), ", sizingmethod='clip');") 567 | } else { 568 | vmlStr.push('top:', mr(d.y / Z), 'px;left:', mr(d.x / Z), 'px;'); 569 | } 570 | 571 | vmlStr.push(' ">', 572 | '<g_vml_:image src="', image.src, '"', 573 | ' style="width:', Z * dw, 'px;', 574 | ' height:', Z * dh, 'px;"', 575 | ' cropleft="', sx / w, '"', 576 | ' croptop="', sy / h, '"', 577 | ' cropright="', (w - sx - sw) / w, '"', 578 | ' cropbottom="', (h - sy - sh) / h, '"', 579 | ' />', 580 | '</g_vml_:group>'); 581 | 582 | this.element_.insertAdjacentHTML('BeforeEnd', 583 | vmlStr.join('')); 584 | }; 585 | 586 | contextPrototype.stroke = function (aFill) { 587 | var lineStr = []; 588 | var lineOpen = false; 589 | var a = processStyle(aFill ? this.fillStyle : this.strokeStyle); 590 | var color = a.color; 591 | var opacity = a.alpha * this.globalAlpha; 592 | 593 | var W = 10; 594 | var H = 10; 595 | 596 | lineStr.push('<g_vml_:shape', 597 | ' filled="', !!aFill, '"', 598 | ' style="position:absolute;width:', W, 'px;height:', H, 'px;"', 599 | ' coordorigin="0 0" coordsize="', Z * W, ' ', Z * H, '"', 600 | ' stroked="', !aFill, '"', 601 | ' path="'); 602 | 603 | var newSeq = false; 604 | var min = { x: null, y: null }; 605 | var max = { x: null, y: null }; 606 | 607 | for (var i = 0; i < this.currentPath_.length; i++) { 608 | var p = this.currentPath_[i]; 609 | var c; 610 | 611 | switch (p.type) { 612 | case 'moveTo': 613 | c = p; 614 | lineStr.push(' m ', mr(p.x), ',', mr(p.y)); 615 | break; 616 | case 'lineTo': 617 | lineStr.push(' l ', mr(p.x), ',', mr(p.y)); 618 | break; 619 | case 'close': 620 | lineStr.push(' x '); 621 | p = null; 622 | break; 623 | case 'bezierCurveTo': 624 | lineStr.push(' c ', 625 | mr(p.cp1x), ',', mr(p.cp1y), ',', 626 | mr(p.cp2x), ',', mr(p.cp2y), ',', 627 | mr(p.x), ',', mr(p.y)); 628 | break; 629 | case 'at': 630 | case 'wa': 631 | lineStr.push(' ', p.type, ' ', 632 | mr(p.x - this.arcScaleX_ * p.radius), ',', 633 | mr(p.y - this.arcScaleY_ * p.radius), ' ', 634 | mr(p.x + this.arcScaleX_ * p.radius), ',', 635 | mr(p.y + this.arcScaleY_ * p.radius), ' ', 636 | mr(p.xStart), ',', mr(p.yStart), ' ', 637 | mr(p.xEnd), ',', mr(p.yEnd)); 638 | break; 639 | } 640 | 641 | 642 | // TODO: Following is broken for curves due to 643 | // move to proper paths. 644 | 645 | // Figure out dimensions so we can do gradient fills 646 | // properly 647 | if (p) { 648 | if (min.x == null || p.x < min.x) { 649 | min.x = p.x; 650 | } 651 | if (max.x == null || p.x > max.x) { 652 | max.x = p.x; 653 | } 654 | if (min.y == null || p.y < min.y) { 655 | min.y = p.y; 656 | } 657 | if (max.y == null || p.y > max.y) { 658 | max.y = p.y; 659 | } 660 | } 661 | } 662 | lineStr.push(' ">'); 663 | 664 | if (!aFill) { 665 | var lineWidth = this.lineScale_ * this.lineWidth; 666 | 667 | // VML cannot correctly render a line if the width is less than 1px. 668 | // In that case, we dilute the color to make the line look thinner. 669 | if (lineWidth < 1) { 670 | opacity *= lineWidth; 671 | } 672 | 673 | lineStr.push( 674 | '<g_vml_:stroke', 675 | ' opacity="', opacity, '"', 676 | ' joinstyle="', this.lineJoin, '"', 677 | ' miterlimit="', this.miterLimit, '"', 678 | ' endcap="', processLineCap(this.lineCap), '"', 679 | ' weight="', lineWidth, 'px"', 680 | ' color="', color, '" />' 681 | ); 682 | } else if (typeof this.fillStyle == 'object') { 683 | var fillStyle = this.fillStyle; 684 | var angle = 0; 685 | var focus = { x: 0, y: 0 }; 686 | 687 | // additional offset 688 | var shift = 0; 689 | // scale factor for offset 690 | var expansion = 1; 691 | 692 | if (fillStyle.type_ == 'gradient') { 693 | var x0 = fillStyle.x0_ / this.arcScaleX_; 694 | var y0 = fillStyle.y0_ / this.arcScaleY_; 695 | var x1 = fillStyle.x1_ / this.arcScaleX_; 696 | var y1 = fillStyle.y1_ / this.arcScaleY_; 697 | var p0 = this.getCoords_(x0, y0); 698 | var p1 = this.getCoords_(x1, y1); 699 | var dx = p1.x - p0.x; 700 | var dy = p1.y - p0.y; 701 | angle = Math.atan2(dx, dy) * 180 / Math.PI; 702 | 703 | // The angle should be a non-negative number. 704 | if (angle < 0) { 705 | angle += 360; 706 | } 707 | 708 | // Very small angles produce an unexpected result because they are 709 | // converted to a scientific notation string. 710 | if (angle < 1e-6) { 711 | angle = 0; 712 | } 713 | } else { 714 | var p0 = this.getCoords_(fillStyle.x0_, fillStyle.y0_); 715 | var width = max.x - min.x; 716 | var height = max.y - min.y; 717 | focus = { 718 | x: (p0.x - min.x) / width, 719 | y: (p0.y - min.y) / height 720 | }; 721 | 722 | width /= this.arcScaleX_ * Z; 723 | height /= this.arcScaleY_ * Z; 724 | var dimension = m.max(width, height); 725 | shift = 2 * fillStyle.r0_ / dimension; 726 | expansion = 2 * fillStyle.r1_ / dimension - shift; 727 | } 728 | 729 | // We need to sort the color stops in ascending order by offset, 730 | // otherwise IE won't interpret it correctly. 731 | var stops = fillStyle.colors_; 732 | stops.sort(function (cs1, cs2) { 733 | return cs1.offset - cs2.offset; 734 | }); 735 | 736 | var length = stops.length; 737 | var color1 = stops[0].color; 738 | var color2 = stops[length - 1].color; 739 | var opacity1 = stops[0].alpha * this.globalAlpha; 740 | var opacity2 = stops[length - 1].alpha * this.globalAlpha; 741 | 742 | var colors = []; 743 | for (var i = 0; i < length; i++) { 744 | var stop = stops[i]; 745 | colors.push(stop.offset * expansion + shift + ' ' + stop.color); 746 | } 747 | 748 | // When colors attribute is used, the meanings of opacity and o:opacity2 749 | // are reversed. 750 | lineStr.push('<g_vml_:fill type="', fillStyle.type_, '"', 751 | ' method="none" focus="100%"', 752 | ' color="', color1, '"', 753 | ' color2="', color2, '"', 754 | ' colors="', colors.join(','), '"', 755 | ' opacity="', opacity2, '"', 756 | ' g_o_:opacity2="', opacity1, '"', 757 | ' angle="', angle, '"', 758 | ' focusposition="', focus.x, ',', focus.y, '" />'); 759 | } else { 760 | lineStr.push('<g_vml_:fill color="', color, '" opacity="', opacity, 761 | '" />'); 762 | } 763 | 764 | lineStr.push('</g_vml_:shape>'); 765 | 766 | this.element_.insertAdjacentHTML('beforeEnd', lineStr.join('')); 767 | }; 768 | 769 | contextPrototype.fill = function () { 770 | this.stroke(true); 771 | } 772 | 773 | contextPrototype.closePath = function () { 774 | this.currentPath_.push({ type: 'close' }); 775 | }; 776 | 777 | /** 778 | * @private 779 | */ 780 | contextPrototype.getCoords_ = function (aX, aY) { 781 | var m = this.m_; 782 | return { 783 | x: Z * (aX * m[0][0] + aY * m[1][0] + m[2][0]) - Z2, 784 | y: Z * (aX * m[0][1] + aY * m[1][1] + m[2][1]) - Z2 785 | } 786 | }; 787 | 788 | contextPrototype.save = function () { 789 | var o = {}; 790 | copyState(this, o); 791 | this.aStack_.push(o); 792 | this.mStack_.push(this.m_); 793 | this.m_ = matrixMultiply(createMatrixIdentity(), this.m_); 794 | }; 795 | 796 | contextPrototype.restore = function () { 797 | copyState(this.aStack_.pop(), this); 798 | this.m_ = this.mStack_.pop(); 799 | }; 800 | 801 | function matrixIsFinite(m) { 802 | for (var j = 0; j < 3; j++) { 803 | for (var k = 0; k < 2; k++) { 804 | if (!isFinite(m[j][k]) || isNaN(m[j][k])) { 805 | return false; 806 | } 807 | } 808 | } 809 | return true; 810 | } 811 | 812 | function setM(ctx, m, updateLineScale) { 813 | if (!matrixIsFinite(m)) { 814 | return; 815 | } 816 | ctx.m_ = m; 817 | 818 | if (updateLineScale) { 819 | // Get the line scale. 820 | // Determinant of this.m_ means how much the area is enlarged by the 821 | // transformation. So its square root can be used as a scale factor 822 | // for width. 823 | var det = m[0][0] * m[1][1] - m[0][1] * m[1][0]; 824 | ctx.lineScale_ = sqrt(abs(det)); 825 | } 826 | } 827 | 828 | contextPrototype.translate = function (aX, aY) { 829 | var m1 = [ 830 | [1, 0, 0], 831 | [0, 1, 0], 832 | [aX, aY, 1] 833 | ]; 834 | 835 | setM(this, matrixMultiply(m1, this.m_), false); 836 | }; 837 | 838 | contextPrototype.rotate = function (aRot) { 839 | var c = mc(aRot); 840 | var s = ms(aRot); 841 | 842 | var m1 = [ 843 | [c, s, 0], 844 | [-s, c, 0], 845 | [0, 0, 1] 846 | ]; 847 | 848 | setM(this, matrixMultiply(m1, this.m_), false); 849 | }; 850 | 851 | contextPrototype.scale = function (aX, aY) { 852 | this.arcScaleX_ *= aX; 853 | this.arcScaleY_ *= aY; 854 | var m1 = [ 855 | [aX, 0, 0], 856 | [0, aY, 0], 857 | [0, 0, 1] 858 | ]; 859 | 860 | setM(this, matrixMultiply(m1, this.m_), true); 861 | }; 862 | 863 | contextPrototype.transform = function (m11, m12, m21, m22, dx, dy) { 864 | var m1 = [ 865 | [m11, m12, 0], 866 | [m21, m22, 0], 867 | [dx, dy, 1] 868 | ]; 869 | 870 | setM(this, matrixMultiply(m1, this.m_), true); 871 | }; 872 | 873 | contextPrototype.setTransform = function (m11, m12, m21, m22, dx, dy) { 874 | var m = [ 875 | [m11, m12, 0], 876 | [m21, m22, 0], 877 | [dx, dy, 1] 878 | ]; 879 | 880 | setM(this, m, true); 881 | }; 882 | 883 | /******** STUBS ********/ 884 | contextPrototype.clip = function () { 885 | // TODO: Implement 886 | }; 887 | 888 | contextPrototype.arcTo = function () { 889 | // TODO: Implement 890 | }; 891 | 892 | contextPrototype.createPattern = function () { 893 | return new CanvasPattern_; 894 | }; 895 | 896 | // Gradient / Pattern Stubs 897 | function CanvasGradient_(aType) { 898 | this.type_ = aType; 899 | this.x0_ = 0; 900 | this.y0_ = 0; 901 | this.r0_ = 0; 902 | this.x1_ = 0; 903 | this.y1_ = 0; 904 | this.r1_ = 0; 905 | this.colors_ = []; 906 | } 907 | 908 | CanvasGradient_.prototype.addColorStop = function (aOffset, aColor) { 909 | aColor = processStyle(aColor); 910 | this.colors_.push({ offset: aOffset, 911 | color: aColor.color, 912 | alpha: aColor.alpha 913 | }); 914 | }; 915 | 916 | function CanvasPattern_() { } 917 | 918 | // set up externs 919 | G_vmlCanvasManager = G_vmlCanvasManager_; 920 | CanvasRenderingContext2D = CanvasRenderingContext2D_; 921 | CanvasGradient = CanvasGradient_; 922 | CanvasPattern = CanvasPattern_; 923 | 924 | })(); 925 | 926 | } // if 927 | -------------------------------------------------------------------------------- /libs/linepainter.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/linepainter.js -------------------------------------------------------------------------------- /libs/loading.compressed.js: -------------------------------------------------------------------------------- 1 | eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('o C(a,b){6.z=a;m(b){6.9=b.9||12;6.w=b.w||4;6.n=b.n||\'A\';6.p=b.p||\'E\'}T{6.9=12;6.S=4;6.n=\'A\';6.p=\'E\'}}C.Q={N:o(){8 f=6.z;m(!f.u)H;m(f.v)H;f.v=6;8 g=f.u(\'K\');8 h=6.9;8 j=[{l:0,9:1.5},{l:3/h,9:2},{l:7/h,9:2.5},{l:12/h,9:3}];8 k=6;f.r=L(o(){g.I(0,0,f.s,f.t);8 a=k.w;8 b={x:f.s/2-h,y:f.t/2-h};g.B();g.14=a;g.W=k.n;g.D(b.x,b.y,h,0,q.F*2);g.G();g.O();P(8 i=0;i<j.R;i++){8 c=j[i].J||j[i].l;8 d={x:b.x-(h)*q.U(c),y:b.y-(h)*q.V(c)};8 e=j[i].9;g.B();g.X=k.p;g.D(d.x,d.y,e,0,q.F*2);g.G();g.Y();j[i].J=c+4/h}},Z)},10:o(){8 a=6.z;a.v=11;m(a.r){13.M(a.r)}8 b=a.u(\'K\');m(b)b.I(0,0,a.s,a.t)}};',62,67,'||||||this||var|radius||||||||||||angle|if|circleColor|function|dotColor|Math|loadingInterval|width|height|getContext|__loading|circleLineWidth|||canvas|lightgray|beginPath|loading|arc|gray|PI|closePath|return|clearRect|currentAngle|2d|setInterval|clearInterval|show|stroke|for|prototype|length|circelLineWidth|else|cos|sin|strokeStyle|fillStyle|fill|50|hide|false||window|lineWidth'.split('|'),0,{})) -------------------------------------------------------------------------------- /libs/loading.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/loading.js -------------------------------------------------------------------------------- /libs/painter.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/painter.js -------------------------------------------------------------------------------- /libs/tip.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/tip.js -------------------------------------------------------------------------------- /libs/util.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/util.js -------------------------------------------------------------------------------- /libs/volumePainter.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/volumePainter.js -------------------------------------------------------------------------------- /libs/xmlparser.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/libs/xmlparser.js -------------------------------------------------------------------------------- /loading.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/loading.html -------------------------------------------------------------------------------- /loading2.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/loading2.html -------------------------------------------------------------------------------- /mins-data.js: -------------------------------------------------------------------------------- 1 | 2 | function getQuote() { 3 | return { 4 | quote: { 5 | time: 20111214150106, 6 | open: 2241.390, 7 | preClose: 2248.590, 8 | highest: 2256.740, 9 | lowest: 2224.730, 10 | price: 2228.530, 11 | volume: 4407982200, 12 | amount: 38621178573 13 | }, 14 | mins: [ 15 | {price:2239.45,volume:49499299,amount:459279327}, 16 | {price:2240.16,volume:21086600,amount:193157609}, 17 | {price:2241.1,volume:22370800,amount:207656862}, 18 | {price:2241.97,volume:21646700,amount:193507747}, 19 | {price:2242.95,volume:22682700,amount:203299131}, 20 | {price:2242.81,volume:25547300,amount:218396170}, 21 | {price:2243.14,volume:24564800,amount:220459721}, 22 | {price:2243.08,volume:22122700,amount:196288126}, 23 | {price:2241.87,volume:23533300,amount:207678556}, 24 | {price:2239.06,volume:32014900,amount:265634554}, 25 | {price:2238.57,volume:31017300,amount:266743056}, 26 | {price:2235.06,volume:31903700,amount:277213709}, 27 | {price:2233.43,volume:36266500,amount:320255527}, 28 | {price:2236.33,volume:39771700,amount:334614835}, 29 | {price:2234.8,volume:28582500,amount:241354077}, 30 | {price:2235.34,volume:21745500,amount:201076511}, 31 | {price:2234.94,volume:24339900,amount:209233570}, 32 | {price:2234.05,volume:21952600,amount:190127264}, 33 | {price:2235.19,volume:22726900,amount:213564081}, 34 | {price:2236.09,volume:24139700,amount:227840751}, 35 | {price:2236.75,volume:23949600,amount:231286965}, 36 | {price:2238.46,volume:22926600,amount:209123277}, 37 | {price:2239.44,volume:22275400,amount:202923751}, 38 | {price:2240.2,volume:23942400,amount:218582411}, 39 | {price:2241.77,volume:24905200,amount:221771773}, 40 | {price:2242.1,volume:22586900,amount:224344017}, 41 | {price:2242.19,volume:22215300,amount:201001848}, 42 | {price:2242.34,volume:22987300,amount:203167113}, 43 | {price:2244.19,volume:25280300,amount:221740999}, 44 | {price:2245.41,volume:25969900,amount:226784180}, 45 | {price:2247.32,volume:37120200,amount:296446809}, 46 | {price:2250.76,volume:42695400,amount:354374766}, 47 | {price:2254.34,volume:35534500,amount:300375526}, 48 | {price:2256.4,volume:40732700,amount:340382227}, 49 | {price:2254.38,volume:43071000,amount:362598462}, 50 | {price:2254.25,volume:31940000,amount:279932050}, 51 | {price:2253.16,volume:24180700,amount:208511993}, 52 | {price:2251.47,volume:23016100,amount:193931982}, 53 | {price:2250.55,volume:20031700,amount:176927563}, 54 | {price:2250.45,volume:17969000,amount:156709442}, 55 | {price:2249.28,volume:20551900,amount:178519544}, 56 | {price:2249.89,volume:18833400,amount:159525094}, 57 | {price:2249.22,volume:17934900,amount:147997195}, 58 | {price:2249.31,volume:16365900,amount:143454382}, 59 | {price:2248.5,volume:16543800,amount:134204959}, 60 | {price:2247.6,volume:19172400,amount:164417998}, 61 | {price:2246.84,volume:16110300,amount:143350678}, 62 | {price:2245.99,volume:14795500,amount:132170943}, 63 | {price:2245.58,volume:15158400,amount:139557565}, 64 | {price:2244.66,volume:16489600,amount:146512049}, 65 | {price:2246.5,volume:19027700,amount:164487638}, 66 | {price:2247.35,volume:14142200,amount:131035258}, 67 | {price:2246.49,volume:14193600,amount:132757678}, 68 | {price:2247.29,volume:13382900,amount:127890404}, 69 | {price:2247.47,volume:12525600,amount:113128824}, 70 | {price:2248.81,volume:15826900,amount:136583873}, 71 | {price:2249.02,volume:14720000,amount:124320313}, 72 | {price:2249.67,volume:15372300,amount:143763357}, 73 | {price:2249.61,volume:13936700,amount:125668431}, 74 | {price:2248.93,volume:14329500,amount:133528075}, 75 | {price:2248.38,volume:15373900,amount:135669972}, 76 | {price:2248.73,volume:13203200,amount:121851669}, 77 | {price:2247.38,volume:12368500,amount:115608922}, 78 | {price:2246.39,volume:11572200,amount:103349627}, 79 | {price:2247.07,volume:11410800,amount:101520806}, 80 | {price:2246.26,volume:10726700,amount:94182217}, 81 | {price:2246.38,volume:9752400,amount:94288913}, 82 | {price:2245.83,volume:10443500,amount:93924753}, 83 | {price:2245.66,volume:10288600,amount:88654671}, 84 | {price:2245.44,volume:10450600,amount:90015861}, 85 | {price:2244.32,volume:12763900,amount:110206040}, 86 | {price:2243.91,volume:13521800,amount:117570150}, 87 | {price:2243.24,volume:13765200,amount:114588267}, 88 | {price:2242.44,volume:14591200,amount:126261547}, 89 | {price:2243.2,volume:14784600,amount:122211322}, 90 | {price:2242.56,volume:16176900,amount:149950223}, 91 | {price:2243.22,volume:13022000,amount:119482612}, 92 | {price:2243.11,volume:10285300,amount:101555779}, 93 | {price:2242.55,volume:10310200,amount:94457518}, 94 | {price:2242.29,volume:10185300,amount:95705771}, 95 | {price:2242.75,volume:18811400,amount:161614777}, 96 | {price:2243.01,volume:12929100,amount:110761318}, 97 | {price:2243.88,volume:9774300,amount:91445498}, 98 | {price:2242.98,volume:14310700,amount:122494628}, 99 | {price:2242.76,volume:12360800,amount:115618880}, 100 | {price:2242.61,volume:10171400,amount:89063319}, 101 | {price:2242.79,volume:13346500,amount:121482113}, 102 | {price:2240.73,volume:11990400,amount:105855851}, 103 | {price:2242.17,volume:15332100,amount:131710442}, 104 | {price:2240.98,volume:12089000,amount:106561217}, 105 | {price:2240.47,volume:12125500,amount:103112139}, 106 | {price:2241.51,volume:14053800,amount:120777558}, 107 | {price:2240.35,volume:10075200,amount:89732647}, 108 | {price:2239.79,volume:10930600,amount:93619834}, 109 | {price:2239.25,volume:11443000,amount:100677263}, 110 | {price:2239.88,volume:11739100,amount:101921637}, 111 | {price:2240.53,volume:10333000,amount:87254566}, 112 | {price:2241.48,volume:10372200,amount:90780220}, 113 | {price:2239.57,volume:10289600,amount:92390573}, 114 | {price:2240.55,volume:9350400,amount:87391256}, 115 | {price:2243.55,volume:17084400,amount:147765061}, 116 | {price:2243.44,volume:14793800,amount:133791635}, 117 | {price:2244,volume:12910700,amount:110631231}, 118 | {price:2244.67,volume:9555000,amount:86011090}, 119 | {price:2244.66,volume:10085300,amount:90309418}, 120 | {price:2244.39,volume:8565000,amount:82034418}, 121 | {price:2244.14,volume:8558500,amount:77875362}, 122 | {price:2244.31,volume:7652500,amount:74961473}, 123 | {price:2243.78,volume:8682300,amount:89381089}, 124 | {price:2242.67,volume:10902600,amount:104704571}, 125 | {price:2242.1,volume:10576300,amount:95523280}, 126 | {price:2242.63,volume:8409200,amount:76085180}, 127 | {price:2245.47,volume:19247200,amount:164992251}, 128 | {price:2244.94,volume:13133700,amount:119610414}, 129 | {price:2245.73,volume:9911800,amount:97441860}, 130 | {price:2244.26,volume:8662300,amount:81418400}, 131 | {price:2244.3,volume:8829500,amount:79584294}, 132 | {price:2245.16,volume:6806300,amount:60608516}, 133 | {price:2244.19,volume:7309300,amount:68503714}, 134 | {price:2245.44,volume:8222100,amount:75767172}, 135 | {price:2245.51,volume:26471000,amount:223978022}, 136 | {price:2245.77,volume:8226300,amount:65785074}, 137 | {price:2245.31,volume:7127700,amount:64563553}, 138 | {price:2245.09,volume:7654100,amount:59429169}, 139 | {price:2245.79,volume:6823200,amount:62739188}, 140 | {price:2245.46,volume:6924600,amount:60372944}, 141 | {price:2246.02,volume:7521300,amount:66794807}, 142 | {price:2246.41,volume:7995800,amount:69168998}, 143 | {price:2245.24,volume:8979700,amount:76626288}, 144 | {price:2245.11,volume:8680700,amount:77579753}, 145 | {price:2244.77,volume:7950300,amount:76976838}, 146 | {price:2244.97,volume:8844100,amount:78945670}, 147 | {price:2244.99,volume:8011900,amount:70660301}, 148 | {price:2244.3,volume:8259100,amount:75499011}, 149 | {price:2243.57,volume:9983800,amount:89633594}, 150 | {price:2243.77,volume:10281500,amount:94715037}, 151 | {price:2243.18,volume:10673200,amount:96550276}, 152 | {price:2243.44,volume:9409300,amount:82699487}, 153 | {price:2242.34,volume:10223600,amount:93585122}, 154 | {price:2241.66,volume:11193400,amount:99220457}, 155 | {price:2241.65,volume:9139600,amount:84137204}, 156 | {price:2240.85,volume:9980000,amount:84380378}, 157 | {price:2240.94,volume:10099100,amount:90056826}, 158 | {price:2241.51,volume:10944200,amount:99533955}, 159 | {price:2240.8,volume:11674200,amount:101703436}, 160 | {price:2240.4,volume:13342100,amount:121641345}, 161 | {price:2240.2,volume:11097800,amount:104027166}, 162 | {price:2240.04,volume:11264800,amount:107331128}, 163 | {price:2239.58,volume:14549300,amount:134712674}, 164 | {price:2239.07,volume:14183000,amount:124075646}, 165 | {price:2239.76,volume:15221400,amount:133566400}, 166 | {price:2239.92,volume:14577800,amount:128047419}, 167 | {price:2240.06,volume:12932100,amount:110542568}, 168 | {price:2239.3,volume:10369200,amount:98020822}, 169 | {price:2239.9,volume:10108200,amount:92458168}, 170 | {price:2241.54,volume:11690400,amount:100037002}, 171 | {price:2240.04,volume:12133100,amount:100130188}, 172 | {price:2239.55,volume:11633500,amount:105402769}, 173 | {price:2239.23,volume:12414000,amount:109747478}, 174 | {price:2237.82,volume:14538000,amount:132305838}, 175 | {price:2237.93,volume:20192300,amount:186854520}, 176 | {price:2238.17,volume:21404800,amount:189442626}, 177 | {price:2236.29,volume:17691800,amount:161230966}, 178 | {price:2235.8,volume:19118800,amount:170903043}, 179 | {price:2236.9,volume:19044700,amount:162573418}, 180 | {price:2235.68,volume:16731200,amount:143303340}, 181 | {price:2236.72,volume:17841700,amount:154495767}, 182 | {price:2239.35,volume:17184100,amount:147562327}, 183 | {price:2237.88,volume:14731300,amount:122226618}, 184 | {price:2238.4,volume:14848100,amount:112325530}, 185 | {price:2239.04,volume:14214000,amount:124244821}, 186 | {price:2239.07,volume:12969500,amount:114686986}, 187 | {price:2239.7,volume:11661200,amount:105313852}, 188 | {price:2241.4,volume:15218900,amount:129303749}, 189 | {price:2240.63,volume:19252400,amount:164620014}, 190 | {price:2241.37,volume:13609400,amount:112923623}, 191 | {price:2241.58,volume:11762600,amount:100706693}, 192 | {price:2240.8,volume:11156200,amount:109652195}, 193 | {price:2240.65,volume:15319100,amount:124309577}, 194 | {price:2242.45,volume:13717700,amount:118998307}, 195 | {price:2241.14,volume:14667600,amount:126457361}, 196 | {price:2241.08,volume:13885700,amount:122841133}, 197 | {price:2240.57,volume:12615800,amount:111605323}, 198 | {price:2240.37,volume:11277200,amount:109344088}, 199 | {price:2240.6,volume:10732100,amount:102315166}, 200 | {price:2239.54,volume:13623000,amount:118584914}, 201 | {price:2239.43,volume:17335500,amount:147578670}, 202 | {price:2238.24,volume:17564000,amount:142169222}, 203 | {price:2239.91,volume:17305500,amount:156411437}, 204 | {price:2239.65,volume:20720600,amount:171246793}, 205 | {price:2237.18,volume:15780600,amount:131442744}, 206 | {price:2237.64,volume:17693700,amount:158504031}, 207 | {price:2238.84,volume:19170200,amount:165964544}, 208 | {price:2239.65,volume:20309400,amount:180003905}, 209 | {price:2239.49,volume:14720400,amount:143847203}, 210 | {price:2240.26,volume:12076100,amount:106974625}, 211 | {price:2239.86,volume:12640300,amount:100941981}, 212 | {price:2238.24,volume:14215600,amount:135399970}, 213 | {price:2237.7,volume:15035200,amount:125358834}, 214 | {price:2237.96,volume:14474200,amount:120855215}, 215 | {price:2238.34,volume:21040900,amount:170223762}, 216 | {price:2237.74,volume:16592300,amount:142736502}, 217 | {price:2237.65,volume:14357400,amount:118426879}, 218 | {price:2237.63,volume:16359600,amount:148677898}, 219 | {price:2236.72,volume:16790000,amount:145985275}, 220 | {price:2235.66,volume:22870600,amount:215363319}, 221 | {price:2236.47,volume:30674600,amount:272856101}, 222 | {price:2234.48,volume:26792500,amount:234568884}, 223 | {price:2236.01,volume:27161700,amount:246010545}, 224 | {price:2235.96,volume:30440500,amount:261967435}, 225 | {price:2234.01,volume:21209200,amount:182332421}, 226 | {price:2234.95,volume:23611400,amount:203027022}, 227 | {price:2233.36,volume:25651100,amount:230795031}, 228 | {price:2231.67,volume:32884600,amount:274371204}, 229 | {price:2232.14,volume:34345700,amount:293088246}, 230 | {price:2230.47,volume:28150900,amount:237826598}, 231 | {price:2229.48,volume:33435300,amount:281780435}, 232 | {price:2228.18,volume:32115800,amount:270597127}, 233 | {price:2227.37,volume:34016200,amount:298449160}, 234 | {price:2226.63,volume:32879600,amount:287098535}, 235 | {price:2227.92,volume:31935000,amount:273889775}, 236 | {price:2226.75,volume:31719200,amount:262822168}, 237 | {price:2226.82,volume:28956900,amount:260947202}, 238 | {price:2227.91,volume:27458500,amount:233531198}, 239 | {price:2226.32,volume:25481600,amount:233021077}, 240 | {price:2226.33,volume:33335600,amount:281114331}, 241 | {price:2225.73,volume:32913400,amount:279565331}, 242 | {price:2225.36,volume:35968200,amount:280113764}, 243 | {price:2225.1,volume:30636600,amount:277320634}, 244 | {price:2227.29,volume:34848100,amount:301633022}, 245 | {price:2226.46,volume:40585100,amount:326025313}, 246 | {price:2227.44,volume:34796700,amount:293401367}, 247 | {price:2225.29,volume:32050700,amount:274202063}, 248 | {price:2226.3,volume:32570000,amount:277656040}, 249 | {price:2226.64,volume:36212900,amount:312423249}, 250 | {price:2227.14,volume:35987800,amount:310123424}, 251 | {price:2227.26,volume:38598100,amount:326954041}, 252 | {price:2227.82,volume:37651400,amount:321678667}, 253 | {price:2227.89,volume:49544600,amount:422608198}, 254 | {price:2229.21,volume:56921900,amount:499025558}, 255 | {price:2228.53,volume:4809300,amount:42537241} 256 | 257 | ] 258 | }; 259 | } -------------------------------------------------------------------------------- /mins-painter-min.html: -------------------------------------------------------------------------------- 1 | <!doctype html> 2 | <html> 3 | <head> 4 | <meta http-equiv="content-type" content="text/html;charset=GBK" /> 5 | <title>html 5 minutes chart painter 6 | 7 | 8 | 9 | 10 | 11 | 12 | 411 | 412 | 521 | 526 | 527 | 528 | 529 |
530 | 531 |

532 | 你的浏览器不支持html5哟

533 |
534 | 541 |
542 | 543 | 546 |

返回列表页

547 |
548 | Author:yukaizhao http://www.cnblogs.com/yukaizhao/ http://weibo.com/yukaizhao/
549 | 参与项目或技术交流:yukaizhao@gmail.com
550 |     
551 | 552 | 553 | -------------------------------------------------------------------------------- /mins-painter-v3.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | html 5 minutes chart painter 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 20 |

21 | 你的浏览器不支持html5哟

22 |
23 |
24 | 33 | 34 | 392 | 393 | 396 |

返回列表页

397 |
398 | Author:yukaizhao http://www.cnblogs.com/yukaizhao/ http://weibo.com/yukaizhao/
399 | 参与项目或技术交流:yukaizhao@gmail.com
400 |     
401 | 402 | 403 | -------------------------------------------------------------------------------- /moneyFlow.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/moneyFlow.html -------------------------------------------------------------------------------- /moneyFlow.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | <Item> <Title name='60日内机构资金增减仓比例' type='column'/> <Item date='2012-01-04 15:01' rate='-3.87'/> </Item> </Data> -------------------------------------------------------------------------------- /openfundnetvalue-muchdata.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <DataSet> 3 | <fundcode>050021</fundcode> 4 | <fundname>博时基本面200ETF联接</fundname> 5 | <Data> 6 | <fld_enddate>2012-01-18</fld_enddate> 7 | <fld_unitnetvalue>0.7364</fld_unitnetvalue> 8 | <fld_netvalue>0.7364</fld_netvalue> 9 | <fld_newprice>2266.380</fld_newprice> 10 | </Data> 11 | <Data> 12 | <fld_enddate>2012-01-17</fld_enddate> 13 | <fld_unitnetvalue>0.7473</fld_unitnetvalue> 14 | <fld_netvalue>0.7473</fld_netvalue> 15 | <fld_newprice>2298.380</fld_newprice> 16 | </Data> 17 | <Data> 18 | <fld_enddate>2012-01-16</fld_enddate> 19 | <fld_unitnetvalue>0.7134</fld_unitnetvalue> 20 | <fld_netvalue>0.7134</fld_netvalue> 21 | <fld_newprice>2206.190</fld_newprice> 22 | </Data> 23 | <Data> 24 | <fld_enddate>2012-01-13</fld_enddate> 25 | <fld_unitnetvalue>0.7272</fld_unitnetvalue> 26 | <fld_netvalue>0.7272</fld_netvalue> 27 | <fld_newprice>2244.580</fld_newprice> 28 | </Data> 29 | <Data> 30 | <fld_enddate>2012-01-12</fld_enddate> 31 | <fld_unitnetvalue>0.7448</fld_unitnetvalue> 32 | <fld_netvalue>0.7448</fld_netvalue> 33 | <fld_newprice>2275.010</fld_newprice> 34 | </Data> 35 | <Data> 36 | <fld_enddate>2012-01-11</fld_enddate> 37 | <fld_unitnetvalue>0.7466</fld_unitnetvalue> 38 | <fld_netvalue>0.7466</fld_netvalue> 39 | <fld_newprice>2276.050</fld_newprice> 40 | </Data> 41 | <Data> 42 | <fld_enddate>2012-01-10</fld_enddate> 43 | <fld_unitnetvalue>0.7494</fld_unitnetvalue> 44 | <fld_netvalue>0.7494</fld_netvalue> 45 | <fld_newprice>2285.740</fld_newprice> 46 | </Data> 47 | <Data> 48 | <fld_enddate>2012-01-09</fld_enddate> 49 | <fld_unitnetvalue>0.7246</fld_unitnetvalue> 50 | <fld_netvalue>0.7246</fld_netvalue> 51 | <fld_newprice>2225.890</fld_newprice> 52 | </Data> 53 | <Data> 54 | <fld_enddate>2012-01-06</fld_enddate> 55 | <fld_unitnetvalue>0.7005</fld_unitnetvalue> 56 | <fld_netvalue>0.7005</fld_netvalue> 57 | <fld_newprice>2163.400</fld_newprice> 58 | </Data> 59 | <Data> 60 | <fld_enddate>2012-01-05</fld_enddate> 61 | <fld_unitnetvalue>0.6971</fld_unitnetvalue> 62 | <fld_netvalue>0.6971</fld_netvalue> 63 | <fld_newprice>2148.450</fld_newprice> 64 | </Data> 65 | <Data> 66 | <fld_enddate>2012-01-04</fld_enddate> 67 | <fld_unitnetvalue>0.7089</fld_unitnetvalue> 68 | <fld_netvalue>0.7089</fld_netvalue> 69 | <fld_newprice>2169.390</fld_newprice> 70 | </Data> 71 | <Data> 72 | <fld_enddate>2011-12-30</fld_enddate> 73 | <fld_unitnetvalue>0.7237</fld_unitnetvalue> 74 | <fld_netvalue>0.7237</fld_netvalue> 75 | <fld_newprice>2199.420</fld_newprice> 76 | </Data> 77 | <Data> 78 | <fld_enddate>2011-12-29</fld_enddate> 79 | <fld_unitnetvalue>0.7135</fld_unitnetvalue> 80 | <fld_netvalue>0.7135</fld_netvalue> 81 | <fld_newprice>2173.560</fld_newprice> 82 | </Data> 83 | <Data> 84 | <fld_enddate>2011-12-28</fld_enddate> 85 | <fld_unitnetvalue>0.7133</fld_unitnetvalue> 86 | <fld_netvalue>0.7133</fld_netvalue> 87 | <fld_newprice>2170.010</fld_newprice> 88 | </Data> 89 | <Data> 90 | <fld_enddate>2011-12-27</fld_enddate> 91 | <fld_unitnetvalue>0.7139</fld_unitnetvalue> 92 | <fld_netvalue>0.7139</fld_netvalue> 93 | <fld_newprice>2166.210</fld_newprice> 94 | </Data> 95 | <Data> 96 | <fld_enddate>2011-12-26</fld_enddate> 97 | <fld_unitnetvalue>0.7269</fld_unitnetvalue> 98 | <fld_netvalue>0.7269</fld_netvalue> 99 | <fld_newprice>2190.110</fld_newprice> 100 | </Data> 101 | <Data> 102 | <fld_enddate>2011-12-23</fld_enddate> 103 | <fld_unitnetvalue>0.7308</fld_unitnetvalue> 104 | <fld_netvalue>0.7308</fld_netvalue> 105 | <fld_newprice>2204.780</fld_newprice> 106 | </Data> 107 | <Data> 108 | <fld_enddate>2011-12-22</fld_enddate> 109 | <fld_unitnetvalue>0.7242</fld_unitnetvalue> 110 | <fld_netvalue>0.7242</fld_netvalue> 111 | <fld_newprice>2186.300</fld_newprice> 112 | </Data> 113 | <Data> 114 | <fld_enddate>2011-12-21</fld_enddate> 115 | <fld_unitnetvalue>0.7274</fld_unitnetvalue> 116 | <fld_netvalue>0.7274</fld_netvalue> 117 | <fld_newprice>2191.150</fld_newprice> 118 | </Data> 119 | <Data> 120 | <fld_enddate>2011-12-20</fld_enddate> 121 | <fld_unitnetvalue>0.7398</fld_unitnetvalue> 122 | <fld_netvalue>0.7398</fld_netvalue> 123 | <fld_newprice>2215.930</fld_newprice> 124 | </Data> 125 | <Data> 126 | <fld_enddate>2011-12-19</fld_enddate> 127 | <fld_unitnetvalue>0.7412</fld_unitnetvalue> 128 | <fld_netvalue>0.7412</fld_netvalue> 129 | <fld_newprice>2218.240</fld_newprice> 130 | </Data> 131 | <Data> 132 | <fld_enddate>2011-12-16</fld_enddate> 133 | <fld_unitnetvalue>0.7421</fld_unitnetvalue> 134 | <fld_netvalue>0.7421</fld_netvalue> 135 | <fld_newprice>2224.840</fld_newprice> 136 | </Data> 137 | <Data> 138 | <fld_enddate>2011-12-15</fld_enddate> 139 | <fld_unitnetvalue>0.7260</fld_unitnetvalue> 140 | <fld_netvalue>0.7260</fld_netvalue> 141 | <fld_newprice>2180.900</fld_newprice> 142 | </Data> 143 | <Data> 144 | <fld_enddate>2011-12-14</fld_enddate> 145 | <fld_unitnetvalue>0.7418</fld_unitnetvalue> 146 | <fld_netvalue>0.7418</fld_netvalue> 147 | <fld_newprice>2228.520</fld_newprice> 148 | </Data> 149 | <Data> 150 | <fld_enddate>2011-12-13</fld_enddate> 151 | <fld_unitnetvalue>0.7506</fld_unitnetvalue> 152 | <fld_netvalue>0.7506</fld_netvalue> 153 | <fld_newprice>2248.590</fld_newprice> 154 | </Data> 155 | <Data> 156 | <fld_enddate>2011-12-12</fld_enddate> 157 | <fld_unitnetvalue>0.7679</fld_unitnetvalue> 158 | <fld_netvalue>0.7679</fld_netvalue> 159 | <fld_newprice>2291.550</fld_newprice> 160 | </Data> 161 | <Data> 162 | <fld_enddate>2011-12-09</fld_enddate> 163 | <fld_unitnetvalue>0.7774</fld_unitnetvalue> 164 | <fld_netvalue>0.7774</fld_netvalue> 165 | <fld_newprice>2315.270</fld_newprice> 166 | </Data> 167 | <Data> 168 | <fld_enddate>2011-12-08</fld_enddate> 169 | <fld_unitnetvalue>0.7843</fld_unitnetvalue> 170 | <fld_netvalue>0.7843</fld_netvalue> 171 | <fld_newprice>2329.820</fld_newprice> 172 | </Data> 173 | <Data> 174 | <fld_enddate>2011-12-07</fld_enddate> 175 | <fld_unitnetvalue>0.7849</fld_unitnetvalue> 176 | <fld_netvalue>0.7849</fld_netvalue> 177 | <fld_newprice>2332.730</fld_newprice> 178 | </Data> 179 | <Data> 180 | <fld_enddate>2011-12-06</fld_enddate> 181 | <fld_unitnetvalue>0.7839</fld_unitnetvalue> 182 | <fld_netvalue>0.7839</fld_netvalue> 183 | <fld_newprice>2325.910</fld_newprice> 184 | </Data> 185 | <Data> 186 | <fld_enddate>2011-12-05</fld_enddate> 187 | <fld_unitnetvalue>0.7837</fld_unitnetvalue> 188 | <fld_netvalue>0.7837</fld_netvalue> 189 | <fld_newprice>2333.230</fld_newprice> 190 | </Data> 191 | <Data> 192 | <fld_enddate>2011-12-02</fld_enddate> 193 | <fld_unitnetvalue>0.7997</fld_unitnetvalue> 194 | <fld_netvalue>0.7997</fld_netvalue> 195 | <fld_newprice>2360.660</fld_newprice> 196 | </Data> 197 | <Data> 198 | <fld_enddate>2011-12-01</fld_enddate> 199 | <fld_unitnetvalue>0.8103</fld_unitnetvalue> 200 | <fld_netvalue>0.8103</fld_netvalue> 201 | <fld_newprice>2386.860</fld_newprice> 202 | </Data> 203 | <Data> 204 | <fld_enddate>2011-11-30</fld_enddate> 205 | <fld_unitnetvalue>0.7942</fld_unitnetvalue> 206 | <fld_netvalue>0.7942</fld_netvalue> 207 | <fld_newprice>2333.410</fld_newprice> 208 | </Data> 209 | <Data> 210 | <fld_enddate>2011-11-29</fld_enddate> 211 | <fld_unitnetvalue>0.8236</fld_unitnetvalue> 212 | <fld_netvalue>0.8236</fld_netvalue> 213 | <fld_newprice>2412.390</fld_newprice> 214 | </Data> 215 | <Data> 216 | <fld_enddate>2011-11-28</fld_enddate> 217 | <fld_unitnetvalue>0.8133</fld_unitnetvalue> 218 | <fld_netvalue>0.8133</fld_netvalue> 219 | <fld_newprice>2383.030</fld_newprice> 220 | </Data> 221 | <Data> 222 | <fld_enddate>2011-11-25</fld_enddate> 223 | <fld_unitnetvalue>0.8133</fld_unitnetvalue> 224 | <fld_netvalue>0.8133</fld_netvalue> 225 | <fld_newprice>2380.220</fld_newprice> 226 | </Data> 227 | <Data> 228 | <fld_enddate>2011-11-24</fld_enddate> 229 | <fld_unitnetvalue>0.8214</fld_unitnetvalue> 230 | <fld_netvalue>0.8214</fld_netvalue> 231 | <fld_newprice>2397.550</fld_newprice> 232 | </Data> 233 | <Data> 234 | <fld_enddate>2011-11-23</fld_enddate> 235 | <fld_unitnetvalue>0.8212</fld_unitnetvalue> 236 | <fld_netvalue>0.8212</fld_netvalue> 237 | <fld_newprice>2395.070</fld_newprice> 238 | </Data> 239 | <Data> 240 | <fld_enddate>2011-11-22</fld_enddate> 241 | <fld_unitnetvalue>0.8270</fld_unitnetvalue> 242 | <fld_netvalue>0.8270</fld_netvalue> 243 | <fld_newprice>2412.630</fld_newprice> 244 | </Data> 245 | <Data> 246 | <fld_enddate>2011-11-21</fld_enddate> 247 | <fld_unitnetvalue>0.8283</fld_unitnetvalue> 248 | <fld_netvalue>0.8283</fld_netvalue> 249 | <fld_newprice>2415.130</fld_newprice> 250 | </Data> 251 | <Data> 252 | <fld_enddate>2011-11-18</fld_enddate> 253 | <fld_unitnetvalue>0.8268</fld_unitnetvalue> 254 | <fld_netvalue>0.8268</fld_netvalue> 255 | <fld_newprice>2416.560</fld_newprice> 256 | </Data> 257 | <Data> 258 | <fld_enddate>2011-11-17</fld_enddate> 259 | <fld_unitnetvalue>0.8483</fld_unitnetvalue> 260 | <fld_netvalue>0.8483</fld_netvalue> 261 | <fld_newprice>2463.050</fld_newprice> 262 | </Data> 263 | <Data> 264 | <fld_enddate>2011-11-16</fld_enddate> 265 | <fld_unitnetvalue>0.8500</fld_unitnetvalue> 266 | <fld_netvalue>0.8500</fld_netvalue> 267 | <fld_newprice>2466.960</fld_newprice> 268 | </Data> 269 | <Data> 270 | <fld_enddate>2011-11-15</fld_enddate> 271 | <fld_unitnetvalue>0.8705</fld_unitnetvalue> 272 | <fld_netvalue>0.8705</fld_netvalue> 273 | <fld_newprice>2529.760</fld_newprice> 274 | </Data> 275 | <Data> 276 | <fld_enddate>2011-11-14</fld_enddate> 277 | <fld_unitnetvalue>0.8702</fld_unitnetvalue> 278 | <fld_netvalue>0.8702</fld_netvalue> 279 | <fld_newprice>2528.710</fld_newprice> 280 | </Data> 281 | <Data> 282 | <fld_enddate>2011-11-11</fld_enddate> 283 | <fld_unitnetvalue>0.8534</fld_unitnetvalue> 284 | <fld_netvalue>0.8534</fld_netvalue> 285 | <fld_newprice>2481.080</fld_newprice> 286 | </Data> 287 | <Data> 288 | <fld_enddate>2011-11-10</fld_enddate> 289 | <fld_unitnetvalue>0.8558</fld_unitnetvalue> 290 | <fld_netvalue>0.8558</fld_netvalue> 291 | <fld_newprice>2479.540</fld_newprice> 292 | </Data> 293 | <Data> 294 | <fld_enddate>2011-11-09</fld_enddate> 295 | <fld_unitnetvalue>0.8670</fld_unitnetvalue> 296 | <fld_netvalue>0.8670</fld_netvalue> 297 | <fld_newprice>2524.920</fld_newprice> 298 | </Data> 299 | <Data> 300 | <fld_enddate>2011-11-08</fld_enddate> 301 | <fld_unitnetvalue>0.8600</fld_unitnetvalue> 302 | <fld_netvalue>0.8600</fld_netvalue> 303 | <fld_newprice>2503.840</fld_newprice> 304 | </Data> 305 | <Data> 306 | <fld_enddate>2011-11-07</fld_enddate> 307 | <fld_unitnetvalue>0.8648</fld_unitnetvalue> 308 | <fld_netvalue>0.8648</fld_netvalue> 309 | <fld_newprice>2509.800</fld_newprice> 310 | </Data> 311 | <Data> 312 | <fld_enddate>2011-11-04</fld_enddate> 313 | <fld_unitnetvalue>0.8715</fld_unitnetvalue> 314 | <fld_netvalue>0.8715</fld_netvalue> 315 | <fld_newprice>2528.290</fld_newprice> 316 | </Data> 317 | <Data> 318 | <fld_enddate>2011-11-03</fld_enddate> 319 | <fld_unitnetvalue>0.8661</fld_unitnetvalue> 320 | <fld_netvalue>0.8661</fld_netvalue> 321 | <fld_newprice>2508.090</fld_newprice> 322 | </Data> 323 | <Data> 324 | <fld_enddate>2011-11-02</fld_enddate> 325 | <fld_unitnetvalue>0.8624</fld_unitnetvalue> 326 | <fld_netvalue>0.8624</fld_netvalue> 327 | <fld_newprice>2504.110</fld_newprice> 328 | </Data> 329 | <Data> 330 | <fld_enddate>2011-11-01</fld_enddate> 331 | <fld_unitnetvalue>0.8521</fld_unitnetvalue> 332 | <fld_netvalue>0.8521</fld_netvalue> 333 | <fld_newprice>2470.020</fld_newprice> 334 | </Data> 335 | <Data> 336 | <fld_enddate>2011-10-31</fld_enddate> 337 | <fld_unitnetvalue>0.8542</fld_unitnetvalue> 338 | <fld_netvalue>0.8542</fld_netvalue> 339 | <fld_newprice>2468.250</fld_newprice> 340 | </Data> 341 | <Data> 342 | <fld_enddate>2011-10-28</fld_enddate> 343 | <fld_unitnetvalue>0.8570</fld_unitnetvalue> 344 | <fld_netvalue>0.8570</fld_netvalue> 345 | <fld_newprice>2473.410</fld_newprice> 346 | </Data> 347 | <Data> 348 | <fld_enddate>2011-10-27</fld_enddate> 349 | <fld_unitnetvalue>0.8401</fld_unitnetvalue> 350 | <fld_netvalue>0.8401</fld_netvalue> 351 | <fld_newprice>2435.610</fld_newprice> 352 | </Data> 353 | <Data> 354 | <fld_enddate>2011-10-26</fld_enddate> 355 | <fld_unitnetvalue>0.8393</fld_unitnetvalue> 356 | <fld_netvalue>0.8393</fld_netvalue> 357 | <fld_newprice>2427.480</fld_newprice> 358 | </Data> 359 | <Data> 360 | <fld_enddate>2011-10-25</fld_enddate> 361 | <fld_unitnetvalue>0.8316</fld_unitnetvalue> 362 | <fld_netvalue>0.8316</fld_netvalue> 363 | <fld_newprice>2409.670</fld_newprice> 364 | </Data> 365 | <Data> 366 | <fld_enddate>2011-10-24</fld_enddate> 367 | <fld_unitnetvalue>0.8132</fld_unitnetvalue> 368 | <fld_netvalue>0.8132</fld_netvalue> 369 | <fld_newprice>2370.330</fld_newprice> 370 | </Data> 371 | <Data> 372 | <fld_enddate>2011-10-21</fld_enddate> 373 | <fld_unitnetvalue>0.7959</fld_unitnetvalue> 374 | <fld_netvalue>0.7959</fld_netvalue> 375 | <fld_newprice>2317.280</fld_newprice> 376 | </Data> 377 | <Data> 378 | <fld_enddate>2011-10-20</fld_enddate> 379 | <fld_unitnetvalue>0.8048</fld_unitnetvalue> 380 | <fld_netvalue>0.8048</fld_netvalue> 381 | <fld_newprice>2331.370</fld_newprice> 382 | </Data> 383 | <Data> 384 | <fld_enddate>2011-10-19</fld_enddate> 385 | <fld_unitnetvalue>0.8257</fld_unitnetvalue> 386 | <fld_netvalue>0.8257</fld_netvalue> 387 | <fld_newprice>2377.510</fld_newprice> 388 | </Data> 389 | <Data> 390 | <fld_enddate>2011-10-18</fld_enddate> 391 | <fld_unitnetvalue>0.8321</fld_unitnetvalue> 392 | <fld_netvalue>0.8321</fld_netvalue> 393 | <fld_newprice>2383.490</fld_newprice> 394 | </Data> 395 | <Data> 396 | <fld_enddate>2011-10-17</fld_enddate> 397 | <fld_unitnetvalue>0.8560</fld_unitnetvalue> 398 | <fld_netvalue>0.8560</fld_netvalue> 399 | <fld_newprice>2440.400</fld_newprice> 400 | </Data> 401 | <Data> 402 | <fld_enddate>2011-10-14</fld_enddate> 403 | <fld_unitnetvalue>0.8546</fld_unitnetvalue> 404 | <fld_netvalue>0.8546</fld_netvalue> 405 | <fld_newprice>2431.380</fld_newprice> 406 | </Data> 407 | <Data> 408 | <fld_enddate>2011-10-13</fld_enddate> 409 | <fld_unitnetvalue>0.8585</fld_unitnetvalue> 410 | <fld_netvalue>0.8585</fld_netvalue> 411 | <fld_newprice>2438.790</fld_newprice> 412 | </Data> 413 | <Data> 414 | <fld_enddate>2011-10-12</fld_enddate> 415 | <fld_unitnetvalue>0.8515</fld_unitnetvalue> 416 | <fld_netvalue>0.8515</fld_netvalue> 417 | <fld_newprice>2420.000</fld_newprice> 418 | </Data> 419 | <Data> 420 | <fld_enddate>2011-10-11</fld_enddate> 421 | <fld_unitnetvalue>0.8243</fld_unitnetvalue> 422 | <fld_netvalue>0.8243</fld_netvalue> 423 | <fld_newprice>2348.520</fld_newprice> 424 | </Data> 425 | <Data> 426 | <fld_enddate>2011-10-10</fld_enddate> 427 | <fld_unitnetvalue>0.8273</fld_unitnetvalue> 428 | <fld_netvalue>0.8273</fld_netvalue> 429 | <fld_newprice>2344.790</fld_newprice> 430 | </Data> 431 | <Data> 432 | <fld_enddate>2011-09-30</fld_enddate> 433 | <fld_unitnetvalue>0.8339</fld_unitnetvalue> 434 | <fld_netvalue>0.8339</fld_netvalue> 435 | <fld_newprice>2359.220</fld_newprice> 436 | </Data> 437 | <Data> 438 | <fld_enddate>2011-09-29</fld_enddate> 439 | <fld_unitnetvalue>0.8346</fld_unitnetvalue> 440 | <fld_netvalue>0.8346</fld_netvalue> 441 | <fld_newprice>2365.340</fld_newprice> 442 | </Data> 443 | <Data> 444 | <fld_enddate>2011-09-28</fld_enddate> 445 | <fld_unitnetvalue>0.8449</fld_unitnetvalue> 446 | <fld_netvalue>0.8449</fld_netvalue> 447 | <fld_newprice>2392.060</fld_newprice> 448 | </Data> 449 | <Data> 450 | <fld_enddate>2011-09-27</fld_enddate> 451 | <fld_unitnetvalue>0.8539</fld_unitnetvalue> 452 | <fld_netvalue>0.8539</fld_netvalue> 453 | <fld_newprice>2415.050</fld_newprice> 454 | </Data> 455 | <Data> 456 | <fld_enddate>2011-09-26</fld_enddate> 457 | <fld_unitnetvalue>0.8464</fld_unitnetvalue> 458 | <fld_netvalue>0.8464</fld_netvalue> 459 | <fld_newprice>2393.180</fld_newprice> 460 | </Data> 461 | <Data> 462 | <fld_enddate>2011-09-23</fld_enddate> 463 | <fld_unitnetvalue>0.8605</fld_unitnetvalue> 464 | <fld_netvalue>0.8605</fld_netvalue> 465 | <fld_newprice>2433.160</fld_newprice> 466 | </Data> 467 | <Data> 468 | <fld_enddate>2011-09-22</fld_enddate> 469 | <fld_unitnetvalue>0.8670</fld_unitnetvalue> 470 | <fld_netvalue>0.8670</fld_netvalue> 471 | <fld_newprice>2443.060</fld_newprice> 472 | </Data> 473 | <Data> 474 | <fld_enddate>2011-09-21</fld_enddate> 475 | <fld_unitnetvalue>0.8915</fld_unitnetvalue> 476 | <fld_netvalue>0.8915</fld_netvalue> 477 | <fld_newprice>2512.960</fld_newprice> 478 | </Data> 479 | <Data> 480 | <fld_enddate>2011-09-20</fld_enddate> 481 | <fld_unitnetvalue>0.8677</fld_unitnetvalue> 482 | <fld_netvalue>0.8677</fld_netvalue> 483 | <fld_newprice>2447.760</fld_newprice> 484 | </Data> 485 | <Data> 486 | <fld_enddate>2011-09-19</fld_enddate> 487 | <fld_unitnetvalue>0.8655</fld_unitnetvalue> 488 | <fld_netvalue>0.8655</fld_netvalue> 489 | <fld_newprice>2437.800</fld_newprice> 490 | </Data> 491 | <Data> 492 | <fld_enddate>2011-09-16</fld_enddate> 493 | <fld_unitnetvalue>0.8833</fld_unitnetvalue> 494 | <fld_netvalue>0.8833</fld_netvalue> 495 | <fld_newprice>2482.340</fld_newprice> 496 | </Data> 497 | <Data> 498 | <fld_enddate>2011-09-15</fld_enddate> 499 | <fld_unitnetvalue>0.8827</fld_unitnetvalue> 500 | <fld_netvalue>0.8827</fld_netvalue> 501 | <fld_newprice>2479.050</fld_newprice> 502 | </Data> 503 | <Data> 504 | <fld_enddate>2011-09-14</fld_enddate> 505 | <fld_unitnetvalue>0.8830</fld_unitnetvalue> 506 | <fld_netvalue>0.8830</fld_netvalue> 507 | <fld_newprice>2484.830</fld_newprice> 508 | </Data> 509 | <Data> 510 | <fld_enddate>2011-09-13</fld_enddate> 511 | <fld_unitnetvalue>0.8769</fld_unitnetvalue> 512 | <fld_netvalue>0.8769</fld_netvalue> 513 | <fld_newprice>2471.300</fld_newprice> 514 | </Data> 515 | <Data> 516 | <fld_enddate>2011-09-09</fld_enddate> 517 | <fld_unitnetvalue>0.8858</fld_unitnetvalue> 518 | <fld_netvalue>0.8858</fld_netvalue> 519 | <fld_newprice>2497.750</fld_newprice> 520 | </Data> 521 | <Data> 522 | <fld_enddate>2011-09-08</fld_enddate> 523 | <fld_unitnetvalue>0.8888</fld_unitnetvalue> 524 | <fld_netvalue>0.8888</fld_netvalue> 525 | <fld_newprice>2498.940</fld_newprice> 526 | </Data> 527 | <Data> 528 | <fld_enddate>2011-09-07</fld_enddate> 529 | <fld_unitnetvalue>0.8967</fld_unitnetvalue> 530 | <fld_netvalue>0.8967</fld_netvalue> 531 | <fld_newprice>2516.090</fld_newprice> 532 | </Data> 533 | <Data> 534 | <fld_enddate>2011-09-06</fld_enddate> 535 | <fld_unitnetvalue>0.8781</fld_unitnetvalue> 536 | <fld_netvalue>0.8781</fld_netvalue> 537 | <fld_newprice>2470.520</fld_newprice> 538 | </Data> 539 | <Data> 540 | <fld_enddate>2011-09-05</fld_enddate> 541 | <fld_unitnetvalue>0.8871</fld_unitnetvalue> 542 | <fld_netvalue>0.8871</fld_netvalue> 543 | <fld_newprice>2478.740</fld_newprice> 544 | </Data> 545 | <Data> 546 | <fld_enddate>2011-09-02</fld_enddate> 547 | <fld_unitnetvalue>0.9067</fld_unitnetvalue> 548 | <fld_netvalue>0.9067</fld_netvalue> 549 | <fld_newprice>2528.280</fld_newprice> 550 | </Data> 551 | <Data> 552 | <fld_enddate>2011-09-01</fld_enddate> 553 | <fld_unitnetvalue>0.9149</fld_unitnetvalue> 554 | <fld_netvalue>0.9149</fld_netvalue> 555 | <fld_newprice>2556.040</fld_newprice> 556 | </Data> 557 | <Data> 558 | <fld_enddate>2011-08-31</fld_enddate> 559 | <fld_unitnetvalue>0.9192</fld_unitnetvalue> 560 | <fld_netvalue>0.9192</fld_netvalue> 561 | <fld_newprice>2567.340</fld_newprice> 562 | </Data> 563 | <Data> 564 | <fld_enddate>2011-08-30</fld_enddate> 565 | <fld_unitnetvalue>0.9196</fld_unitnetvalue> 566 | <fld_netvalue>0.9196</fld_netvalue> 567 | <fld_newprice>2566.590</fld_newprice> 568 | </Data> 569 | <Data> 570 | <fld_enddate>2011-08-29</fld_enddate> 571 | <fld_unitnetvalue>0.9239</fld_unitnetvalue> 572 | <fld_netvalue>0.9239</fld_netvalue> 573 | <fld_newprice>2576.410</fld_newprice> 574 | </Data> 575 | <Data> 576 | <fld_enddate>2011-08-26</fld_enddate> 577 | <fld_unitnetvalue>0.9376</fld_unitnetvalue> 578 | <fld_netvalue>0.9376</fld_netvalue> 579 | <fld_newprice>2612.190</fld_newprice> 580 | </Data> 581 | <Data> 582 | <fld_enddate>2011-08-25</fld_enddate> 583 | <fld_unitnetvalue>0.9387</fld_unitnetvalue> 584 | <fld_netvalue>0.9387</fld_netvalue> 585 | <fld_newprice>2615.260</fld_newprice> 586 | </Data> 587 | <Data> 588 | <fld_enddate>2011-08-24</fld_enddate> 589 | <fld_unitnetvalue>0.9138</fld_unitnetvalue> 590 | <fld_netvalue>0.9138</fld_netvalue> 591 | <fld_newprice>2541.090</fld_newprice> 592 | </Data> 593 | <Data> 594 | <fld_enddate>2011-08-23</fld_enddate> 595 | <fld_unitnetvalue>0.9163</fld_unitnetvalue> 596 | <fld_netvalue>0.9163</fld_netvalue> 597 | <fld_newprice>2554.020</fld_newprice> 598 | </Data> 599 | <Data> 600 | <fld_enddate>2011-08-22</fld_enddate> 601 | <fld_unitnetvalue>0.9033</fld_unitnetvalue> 602 | <fld_netvalue>0.9033</fld_netvalue> 603 | <fld_newprice>2515.860</fld_newprice> 604 | </Data> 605 | <Data> 606 | <fld_enddate>2011-08-19</fld_enddate> 607 | <fld_unitnetvalue>0.9107</fld_unitnetvalue> 608 | <fld_netvalue>0.9107</fld_netvalue> 609 | <fld_newprice>2534.360</fld_newprice> 610 | </Data> 611 | <Data> 612 | <fld_enddate>2011-08-18</fld_enddate> 613 | <fld_unitnetvalue>0.9197</fld_unitnetvalue> 614 | <fld_netvalue>0.9197</fld_netvalue> 615 | <fld_newprice>2559.470</fld_newprice> 616 | </Data> 617 | <Data> 618 | <fld_enddate>2011-08-17</fld_enddate> 619 | <fld_unitnetvalue>0.9354</fld_unitnetvalue> 620 | <fld_netvalue>0.9354</fld_netvalue> 621 | <fld_newprice>2601.260</fld_newprice> 622 | </Data> 623 | <Data> 624 | <fld_enddate>2011-08-16</fld_enddate> 625 | <fld_unitnetvalue>0.9399</fld_unitnetvalue> 626 | <fld_netvalue>0.9399</fld_netvalue> 627 | <fld_newprice>2608.170</fld_newprice> 628 | </Data> 629 | <Data> 630 | <fld_enddate>2011-08-15</fld_enddate> 631 | <fld_unitnetvalue>0.9470</fld_unitnetvalue> 632 | <fld_netvalue>0.9470</fld_netvalue> 633 | <fld_newprice>2626.770</fld_newprice> 634 | </Data> 635 | <Data> 636 | <fld_enddate>2011-08-12</fld_enddate> 637 | <fld_unitnetvalue>0.9351</fld_unitnetvalue> 638 | <fld_netvalue>0.9351</fld_netvalue> 639 | <fld_newprice>2593.170</fld_newprice> 640 | </Data> 641 | <Data> 642 | <fld_enddate>2011-08-11</fld_enddate> 643 | <fld_unitnetvalue>0.9287</fld_unitnetvalue> 644 | <fld_netvalue>0.9287</fld_netvalue> 645 | <fld_newprice>2581.510</fld_newprice> 646 | </Data> 647 | <Data> 648 | <fld_enddate>2011-08-10</fld_enddate> 649 | <fld_unitnetvalue>0.9170</fld_unitnetvalue> 650 | <fld_netvalue>0.9170</fld_netvalue> 651 | <fld_newprice>2549.180</fld_newprice> 652 | </Data> 653 | <Data> 654 | <fld_enddate>2011-08-09</fld_enddate> 655 | <fld_unitnetvalue>0.9076</fld_unitnetvalue> 656 | <fld_netvalue>0.9076</fld_netvalue> 657 | <fld_newprice>2526.070</fld_newprice> 658 | </Data> 659 | <Data> 660 | <fld_enddate>2011-08-08</fld_enddate> 661 | <fld_unitnetvalue>0.9090</fld_unitnetvalue> 662 | <fld_netvalue>0.9090</fld_netvalue> 663 | <fld_newprice>2535.690</fld_newprice> 664 | </Data> 665 | <Data> 666 | <fld_enddate>2011-08-05</fld_enddate> 667 | <fld_unitnetvalue>0.9483</fld_unitnetvalue> 668 | <fld_netvalue>0.9483</fld_netvalue> 669 | <fld_newprice>2626.420</fld_newprice> 670 | </Data> 671 | <Data> 672 | <fld_enddate>2011-08-04</fld_enddate> 673 | <fld_unitnetvalue>0.9677</fld_unitnetvalue> 674 | <fld_netvalue>0.9677</fld_netvalue> 675 | <fld_newprice>2684.040</fld_newprice> 676 | </Data> 677 | <Data> 678 | <fld_enddate>2011-08-03</fld_enddate> 679 | <fld_unitnetvalue>0.9669</fld_unitnetvalue> 680 | <fld_netvalue>0.9669</fld_netvalue> 681 | <fld_newprice>2678.490</fld_newprice> 682 | </Data> 683 | <Data> 684 | <fld_enddate>2011-08-02</fld_enddate> 685 | <fld_unitnetvalue>0.9666</fld_unitnetvalue> 686 | <fld_netvalue>0.9666</fld_netvalue> 687 | <fld_newprice>2679.260</fld_newprice> 688 | </Data> 689 | <Data> 690 | <fld_enddate>2011-08-01</fld_enddate> 691 | <fld_unitnetvalue>0.9722</fld_unitnetvalue> 692 | <fld_netvalue>0.9722</fld_netvalue> 693 | <fld_newprice>2703.780</fld_newprice> 694 | </Data> 695 | <Data> 696 | <fld_enddate>2011-07-29</fld_enddate> 697 | <fld_unitnetvalue>0.9692</fld_unitnetvalue> 698 | <fld_netvalue>0.9692</fld_netvalue> 699 | <fld_newprice>2701.730</fld_newprice> 700 | </Data> 701 | <Data> 702 | <fld_enddate>2011-07-28</fld_enddate> 703 | <fld_unitnetvalue>0.9753</fld_unitnetvalue> 704 | <fld_netvalue>0.9753</fld_netvalue> 705 | <fld_newprice>2708.780</fld_newprice> 706 | </Data> 707 | <Data> 708 | <fld_enddate>2011-07-27</fld_enddate> 709 | <fld_unitnetvalue>0.9792</fld_unitnetvalue> 710 | <fld_netvalue>0.9792</fld_netvalue> 711 | <fld_newprice>2723.490</fld_newprice> 712 | </Data> 713 | <Data> 714 | <fld_enddate>2011-07-26</fld_enddate> 715 | <fld_unitnetvalue>0.9695</fld_unitnetvalue> 716 | <fld_netvalue>0.9695</fld_netvalue> 717 | <fld_newprice>2703.030</fld_newprice> 718 | </Data> 719 | <Data> 720 | <fld_enddate>2011-07-25</fld_enddate> 721 | <fld_unitnetvalue>0.9655</fld_unitnetvalue> 722 | <fld_netvalue>0.9655</fld_netvalue> 723 | <fld_newprice>2688.750</fld_newprice> 724 | </Data> 725 | <Data> 726 | <fld_enddate>2011-07-22</fld_enddate> 727 | <fld_unitnetvalue>0.9983</fld_unitnetvalue> 728 | <fld_netvalue>0.9983</fld_netvalue> 729 | <fld_newprice>2770.790</fld_newprice> 730 | </Data> 731 | <Data> 732 | <fld_enddate>2011-07-21</fld_enddate> 733 | <fld_unitnetvalue>0.9947</fld_unitnetvalue> 734 | <fld_netvalue>0.9947</fld_netvalue> 735 | <fld_newprice>2765.890</fld_newprice> 736 | </Data> 737 | <Data> 738 | <fld_enddate>2011-07-20</fld_enddate> 739 | <fld_unitnetvalue>1.0047</fld_unitnetvalue> 740 | <fld_netvalue>1.0047</fld_netvalue> 741 | <fld_newprice>2794.200</fld_newprice> 742 | </Data> 743 | <Data> 744 | <fld_enddate>2011-07-19</fld_enddate> 745 | <fld_unitnetvalue>1.0050</fld_unitnetvalue> 746 | <fld_netvalue>1.0050</fld_netvalue> 747 | <fld_newprice>2796.980</fld_newprice> 748 | </Data> 749 | <Data> 750 | <fld_enddate>2011-07-18</fld_enddate> 751 | <fld_unitnetvalue>1.0146</fld_unitnetvalue> 752 | <fld_netvalue>1.0146</fld_netvalue> 753 | <fld_newprice>2816.690</fld_newprice> 754 | </Data> 755 | <Data> 756 | <fld_enddate>2011-07-15</fld_enddate> 757 | <fld_unitnetvalue>1.0177</fld_unitnetvalue> 758 | <fld_netvalue>1.0177</fld_netvalue> 759 | <fld_newprice>2820.170</fld_newprice> 760 | </Data> 761 | <Data> 762 | <fld_enddate>2011-07-14</fld_enddate> 763 | <fld_unitnetvalue>1.0152</fld_unitnetvalue> 764 | <fld_netvalue>1.0152</fld_netvalue> 765 | <fld_newprice>2810.440</fld_newprice> 766 | </Data> 767 | <Data> 768 | <fld_enddate>2011-07-13</fld_enddate> 769 | <fld_unitnetvalue>1.0120</fld_unitnetvalue> 770 | <fld_netvalue>1.0120</fld_netvalue> 771 | <fld_newprice>2795.480</fld_newprice> 772 | </Data> 773 | <Data> 774 | <fld_enddate>2011-07-12</fld_enddate> 775 | <fld_unitnetvalue>0.9985</fld_unitnetvalue> 776 | <fld_netvalue>0.9985</fld_netvalue> 777 | <fld_newprice>2754.580</fld_newprice> 778 | </Data> 779 | <Data> 780 | <fld_enddate>2011-07-08</fld_enddate> 781 | <fld_unitnetvalue>1.0015</fld_unitnetvalue> 782 | <fld_netvalue>1.0015</fld_netvalue> 783 | <fld_newprice>2797.770</fld_newprice> 784 | </Data> 785 | <Data> 786 | <fld_enddate>2011-07-04</fld_enddate> 787 | <fld_unitnetvalue>1.0018</fld_unitnetvalue> 788 | <fld_netvalue>1.0018</fld_netvalue> 789 | <fld_newprice>2812.820</fld_newprice> 790 | </Data> 791 | <Data> 792 | <fld_enddate>2011-07-01</fld_enddate> 793 | <fld_unitnetvalue>1.0016</fld_unitnetvalue> 794 | <fld_netvalue>1.0016</fld_netvalue> 795 | <fld_newprice>2759.360</fld_newprice> 796 | </Data> 797 | <Data> 798 | <fld_enddate>2011-06-30</fld_enddate> 799 | <fld_unitnetvalue>1.0014</fld_unitnetvalue> 800 | <fld_netvalue>1.0014</fld_netvalue> 801 | <fld_newprice>2762.080</fld_newprice> 802 | </Data> 803 | <Data> 804 | <fld_enddate>2011-06-24</fld_enddate> 805 | <fld_unitnetvalue>1.0008</fld_unitnetvalue> 806 | <fld_netvalue>1.0008</fld_netvalue> 807 | <fld_newprice>2746.210</fld_newprice> 808 | </Data> 809 | <Data> 810 | <fld_enddate>2011-06-17</fld_enddate> 811 | <fld_unitnetvalue>1.0002</fld_unitnetvalue> 812 | <fld_netvalue>1.0002</fld_netvalue> 813 | <fld_newprice>2642.820</fld_newprice> 814 | </Data> 815 | <Data> 816 | <fld_enddate>2011-06-10</fld_enddate> 817 | <fld_unitnetvalue>1.0000</fld_unitnetvalue> 818 | <fld_netvalue>1.0000</fld_netvalue> 819 | <fld_newprice>2705.140</fld_newprice> 820 | </Data> 821 | </DataSet> 822 | -------------------------------------------------------------------------------- /openfundnetvalue.xml: -------------------------------------------------------------------------------- 1 | <?xml version="1.0" encoding="utf-8"?> 2 | <DataSet> 3 | <fundcode>160808</fundcode> 4 | <fundname>长盛同瑞中证200</fundname> 5 | <Data> 6 | <fld_enddate>2012-01-30</fld_enddate> 7 | <fld_unitnetvalue>1.0190</fld_unitnetvalue> 8 | <fld_netvalue>1.0210</fld_netvalue> 9 | <fld_newprice>2285.040</fld_newprice> 10 | </Data> 11 | <Data> 12 | 13 | <fld_enddate>2012-01-20</fld_enddate> 14 | <fld_unitnetvalue>1.0330</fld_unitnetvalue> 15 | <fld_netvalue>1.0350</fld_netvalue> 16 | <fld_newprice>2319.120</fld_newprice> 17 | </Data> 18 | <Data> 19 | <fld_enddate>2012-01-19</fld_enddate> 20 | <fld_unitnetvalue>1.0200</fld_unitnetvalue> 21 | <fld_netvalue>1.0220</fld_netvalue> 22 | <fld_newprice>2296.070</fld_newprice> 23 | 24 | </Data> 25 | <Data> 26 | <fld_enddate>2012-01-18</fld_enddate> 27 | <fld_unitnetvalue>1.0050</fld_unitnetvalue> 28 | <fld_netvalue>1.0070</fld_netvalue> 29 | <fld_newprice>2266.380</fld_newprice> 30 | </Data> 31 | <Data> 32 | <fld_enddate>2012-01-17</fld_enddate> 33 | <fld_unitnetvalue>1.0200</fld_unitnetvalue> 34 | <fld_netvalue>1.0220</fld_netvalue> 35 | 36 | <fld_newprice>2298.380</fld_newprice> 37 | </Data> 38 | <Data> 39 | <fld_enddate>2012-01-16</fld_enddate> 40 | <fld_unitnetvalue>1.0000</fld_unitnetvalue> 41 | <fld_netvalue>1.0020</fld_netvalue> 42 | <fld_newprice>2206.190</fld_newprice> 43 | </Data> 44 | <Data> 45 | <fld_enddate>2012-01-13</fld_enddate> 46 | <fld_unitnetvalue>1.0020</fld_unitnetvalue> 47 | 48 | <fld_netvalue>1.0040</fld_netvalue> 49 | <fld_newprice>2244.580</fld_newprice> 50 | </Data> 51 | <Data> 52 | <fld_enddate>2012-01-12</fld_enddate> 53 | <fld_unitnetvalue>1.0010</fld_unitnetvalue> 54 | <fld_netvalue>1.0030</fld_netvalue> 55 | <fld_newprice>2275.010</fld_newprice> 56 | </Data> 57 | <Data> 58 | <fld_enddate>2012-01-11</fld_enddate> 59 | 60 | <fld_unitnetvalue>1.0010</fld_unitnetvalue> 61 | <fld_netvalue>1.0030</fld_netvalue> 62 | <fld_newprice>2276.050</fld_newprice> 63 | </Data> 64 | <Data> 65 | <fld_enddate>2012-01-06</fld_enddate> 66 | <fld_unitnetvalue>1.0000</fld_unitnetvalue> 67 | <fld_netvalue>1.0020</fld_netvalue> 68 | <fld_newprice>2163.400</fld_newprice> 69 | </Data> 70 | 71 | <Data> 72 | <fld_enddate>2011-12-30</fld_enddate> 73 | <fld_unitnetvalue>1.0020</fld_unitnetvalue> 74 | <fld_netvalue>1.0020</fld_netvalue> 75 | <fld_newprice>2199.420</fld_newprice> 76 | </Data> 77 | <Data> 78 | <fld_enddate>2011-12-23</fld_enddate> 79 | <fld_unitnetvalue>1.0010</fld_unitnetvalue> 80 | <fld_netvalue>1.0010</fld_netvalue> 81 | 82 | <fld_newprice>2204.780</fld_newprice> 83 | </Data> 84 | <Data> 85 | <fld_enddate>2011-12-16</fld_enddate> 86 | <fld_unitnetvalue>1.0010</fld_unitnetvalue> 87 | <fld_netvalue>1.0010</fld_netvalue> 88 | <fld_newprice>2224.840</fld_newprice> 89 | </Data> 90 | <Data> 91 | <fld_enddate>2011-12-09</fld_enddate> 92 | <fld_unitnetvalue>1.0000</fld_unitnetvalue> 93 | 94 | <fld_netvalue>1.0000</fld_netvalue> 95 | <fld_newprice>2315.270</fld_newprice> 96 | </Data> 97 | <Data> 98 | <fld_enddate>2011-12-06</fld_enddate> 99 | <fld_unitnetvalue>1.0000</fld_unitnetvalue> 100 | <fld_netvalue>1.0000</fld_netvalue> 101 | <fld_newprice>2325.910</fld_newprice> 102 | </Data> 103 | </DataSet> 104 | -------------------------------------------------------------------------------- /orentationchange.htm: -------------------------------------------------------------------------------- 1 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 | <html xmlns="http://www.w3.org/1999/xhtml"> 3 | <head> 4 | <meta http-equiv="Content-Type" content="text/html; charset=GBK" /> 5 | <title>How to build an iPhone website 6 | 7 | 8 | 9 | 10 | 11 | 14 | 62 | 63 | 64 | 65 | 66 | 67 |
68 |

Engage Interactive

69 |
70 |

You are now holding your phone to the left

71 |
72 |
73 |

You are now holding your phone to the right

74 |
75 |
76 |

You are now holding your phone upright

77 |
78 |
79 |

This doesn't work yet, but there is a chance apple will enable it at some point, so I've put it in anyway. You would be holding your phone upside down if it did work.

80 |
81 |
82 | 83 | 84 | -------------------------------------------------------------------------------- /painter.compressed.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/painter.compressed.js -------------------------------------------------------------------------------- /painter.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/painter.html -------------------------------------------------------------------------------- /pie.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/pie.html -------------------------------------------------------------------------------- /supportTouch.html: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | test touch 6 | 7 | 8 | 9 |

test touch

10 | 11 |

12 | 48 |

49 | 50 |

51 | ('ontouchstart' in window) is 52 | 55 |

56 | 57 | 67 | 68 | 69 |

70 | testTouchWithCreateEvent is 71 | 72 |

73 | 74 |

75 | 'createTouch' in document is 76 | 79 | 不可用,在windows下用chrom浏览器也会返回true 80 | ;IE9返回false 81 | ;firefox返回false 82 | ;opera返回false 83 |

84 | 85 |

86 | (typeof Touch == "object") is 87 | 90 | 91 | 92 |

93 | 94 | 95 | -------------------------------------------------------------------------------- /touches.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fpemud/html54stock/f937db0b3030d6d43ca5da6ff1f71ffbddd96342/touches.htm --------------------------------------------------------------------------------