这里先把Anthem相关的脚本贴出来,以后我们要经常用到

  1// IE 5.01 Patch [ 1498764 ]
  2function utf8(wide) {
  3  var c, s;
  4  var enc = "";
  5  var i = 0;
  6  while(i<wide.length) {
  7    c= wide.charCodeAt(i++);
  8    // handle UTF-16 surrogates
  9    if (c>=0xDC00 && c<0xE000continue;
 10    if (c>=0xD800 && c<0xDC00{
 11      if (i>=wide.length) continue;
 12      s= wide.charCodeAt(i++);
 13      if (s<0xDC00 || c>=0xDE00continue;
 14      c= ((c-0xD800)<<10)+(s-0xDC00)+0x10000;
 15    }

 16    // output value
 17    if (c<0x80) enc += String.fromCharCode(c);
 18    else if (c<0x800) enc += String.fromCharCode(0xC0+(c>>6),0x80+(c&0x3F));
 19    else if (c<0x10000) enc += String.fromCharCode(0xE0+(c>>12),0x80+(c>>6&0x3F),0x80+(c&0x3F));
 20    else enc += String.fromCharCode(0xF0+(c>>18),0x80+(c>>12&0x3F),0x80+(c>>6&0x3F),0x80+(c&0x3F));
 21  }

 22  return enc;
 23}

 24
 25var hexchars = "0123456789ABCDEF";
 26
 27function toHex(n) {
 28  return hexchars.charAt(n>>4)+hexchars.charAt(n & 0xF);
 29}

 30
 31var okURIchars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-";
 32
 33function encodeURIComponentNew(s) {
 34  var s = utf8(s);
 35  var c;
 36  var enc = "";
 37  for (var i= 0; i<s.length; i++{
 38    if (okURIchars.indexOf(s.charAt(i))==-1)
 39      enc += "%"+toHex(s.charCodeAt(i));
 40    else
 41      enc += s.charAt(i);
 42  }

 43  return enc;
 44}

 45
 46function Anthem_Encode(s){
 47 if (typeof encodeURIComponent == "function"{
 48  // Use JavaScript built-in function
 49  // IE 5.5+ and Netscape 6+ and Mozilla
 50  return encodeURIComponent(s);
 51 }
 else {
 52  // Need to mimic the JavaScript version
 53  // Netscape 4 and IE 4 and IE 5.0
 54  return encodeURIComponentNew(s);
 55 }

 56}

 57
 58function Anthem_AddEvent(obj, evType, fn, useCapture) {
 59 if (obj.addEventListener) {
 60  obj.addEventListener(evType, fn, useCapture);
 61  return true;
 62 }
 else if (obj.attachEvent) {
 63  var r = obj.attachEvent("on" + evType, fn);
 64  return r;
 65 }
 else {
 66  alert("Anthem_AddEvent could not add event!");
 67 }

 68}

 69
 70function Anthem_GetXMLHttpRequest() {
 71 if (window.XMLHttpRequest) {
 72  return new XMLHttpRequest();
 73 }
 else {
 74  if (window.Anthem_XMLHttpRequestProgID) {
 75   return new ActiveXObject(window.Anthem_XMLHttpRequestProgID);
 76  }
 else {
 77   var progIDs = ["Msxml2.XMLHTTP.5.0""Msxml2.XMLHTTP.4.0""MSXML2.XMLHTTP.3.0""MSXML2.XMLHTTP""Microsoft.XMLHTTP"];
 78   for (var i = 0; i < progIDs.length; ++i) {
 79    var progID = progIDs[i];
 80    try {
 81     var x = new ActiveXObject(progID);
 82     window.Anthem_XMLHttpRequestProgID = progID;
 83     return x;
 84    }
 catch (e) {
 85    }

 86   }

 87  }

 88 }

 89 return null;
 90}

 91
 92function Anthem_CallBack(url, target, id, method, args, clientCallBack, clientCallBackArg, includeControlValuesWithCallBack, updatePageAfterCallBack) {
 93 if (window.Anthem_PreCallBack) {
 94  var preCallBackResult = Anthem_PreCallBack();
 95  if (!(typeof preCallBackResult == "undefined" || preCallBackResult)) {
 96   if (window.Anthem_CallBackCancelled) {
 97    Anthem_CallBackCancelled();
 98   }

 99   return null;
100  }

101 }

102 var x = Anthem_GetXMLHttpRequest();
103 var result = null;
104 if (!x) {
105  result = "value"null"error""NOXMLHTTP" };
106  Anthem_DebugError(result.error);
107  if (window.Anthem_Error) {
108   Anthem_Error(result);
109  }

110  if (clientCallBack) {
111   clientCallBack(result, clientCallBackArg);
112  }

113  return result;
114 }

115 x.open("POST", url ? url : Anthem_DefaultURL, clientCallBack ? true : false);
116 x.setRequestHeader("Content-Type""application/x-www-form-urlencoded; charset=utf-8");
117 x.setRequestHeader("Accept-Encoding""gzip, deflate");
118 if (clientCallBack) {
119  x.onreadystatechange = function() {
120   if (x.readyState != 4{
121    return;
122   }

123   Anthem_DebugResponseText(x.responseText);
124   result = Anthem_GetResult(x);
125   if (result.error) {
126    Anthem_DebugError(result.error);
127    if (window.Anthem_Error) {
128     Anthem_Error(result);
129    }

130   }

131   if (updatePageAfterCallBack) {
132    Anthem_UpdatePage(result);
133   }

134   Anthem_EvalClientSideScript(result);
135   clientCallBack(result, clientCallBackArg);
136   x = null;
137   if (window.Anthem_PostCallBack) {
138    Anthem_PostCallBack();
139   }

140  }

141 }

142    var encodedData = "";
143    if (target == "Page"{
144        encodedData += "&Anthem_PageMethod=" + method;
145    }
 else if (target == "MasterPage"{
146        encodedData += "&Anthem_MasterPageMethod=" + method;
147    }
 else if (target == "Control"{
148        encodedData += "&Anthem_ControlID=" + id.split(":").join("_");
149        encodedData += "&Anthem_ControlMethod=" + method;
150    }

151 if (args) {
152  for (var argsIndex = 0; argsIndex < args.length; ++argsIndex) {
153   if (args[argsIndex] instanceof Array) {
154    for (var i = 0; i < args[argsIndex].length; ++i) {
155     encodedData += "&Anthem_CallBackArgument" + argsIndex + "=" + Anthem_Encode(args[argsIndex][i]);
156    }

157   }
 else {
158    encodedData += "&Anthem_CallBackArgument" + argsIndex + "=" + Anthem_Encode(args[argsIndex]);
159   }

160  }

161 }

162 if (updatePageAfterCallBack) {
163  encodedData += "&Anthem_UpdatePage=true";
164 }

165 if (includeControlValuesWithCallBack) {
166  var form = document.getElementById(Anthem_FormID);
167  if (form != null{
168   for (var elementIndex = 0; elementIndex < form.length; ++elementIndex) {
169    var element = form.elements[elementIndex];
170    if (element.name) {
171     var elementValue = null;
172     if (element.nodeName.toUpperCase() == "INPUT"{
173      var inputType = element.getAttribute("type").toUpperCase();
174      if (inputType == "TEXT" || inputType == "PASSWORD" || inputType == "HIDDEN"{
175       elementValue = element.value;
176      }
 else if (inputType == "CHECKBOX" || inputType == "RADIO"{
177       if (element.checked{
178        elementValue = element.value;
179       }

180      }

181     }
 else if (element.nodeName.toUpperCase() == "SELECT"{
182      if (element.multiple) {
183       elementValue = [];
184       for (var i = 0; i < element.length; ++i) {
185        if (element.options[i].selected) {
186         elementValue.push(element.options[i].value);
187        }

188       }

189      }
 else if (element.length == 0{
190          elementValue = null;
191      }
 else {
192       elementValue = element.value;
193      }

194     }
 else if (element.nodeName.toUpperCase() == "TEXTAREA"{
195      elementValue = element.value;
196     }

197     if (elementValue instanceof Array) {
198      for (var i = 0; i < elementValue.length; ++i) {
199       encodedData += "&" + element.name + "=" + Anthem_Encode(elementValue[i]);
200      }

201     }
 else if (elementValue != null{
202      encodedData += "&" + element.name + "=" + Anthem_Encode(elementValue);
203     }

204    }

205   }

206   // ASP.NET 1.1 won't fire any events if neither of the following
207   // two parameters are not in the request so make sure they're
208   // always in the request.
209   if (typeof form.__VIEWSTATE == "undefined"{
210    encodedData += "&__VIEWSTATE=";
211   }

212   if (typeof form.__EVENTTARGET == "undefined"{
213    encodedData += "&__EVENTTARGET=";
214   }

215  }

216 }

217 Anthem_DebugRequestText(encodedData.split("&").join("\n&"));
218 x.send(encodedData);
219 if (!clientCallBack) {
220  Anthem_DebugResponseText(x.responseText);
221  result = Anthem_GetResult(x);
222  if (result.error) {
223   Anthem_DebugError(result.error);
224   if (window.Anthem_Error) {
225    Anthem_Error(result);
226   }

227  }

228  if (updatePageAfterCallBack) {
229   Anthem_UpdatePage(result);
230  }

231  Anthem_EvalClientSideScript(result);
232  if (window.Anthem_PostCallBack) {
233   Anthem_PostCallBack();
234  }

235 }

236 return result;
237}

238
239function Anthem_GetResult(x) {
240 var result = "value"null"error"null };
241 var responseText = x.responseText;
242 try {
243  result = eval("(" + responseText + ")");
244 }
 catch (e) {
245  if (responseText.length == 0{
246   result.error = "NORESPONSE";
247  }
 else {
248   result.error = "BADRESPONSE";
249   result.responseText = responseText;
250  }

251 }

252 return result;
253}

254
255function Anthem_SetHiddenInputValue(form, name, value) {
256    var input = null;
257    if (form[name]) {
258        input = form[name];
259    }
 else {
260        input = document.createElement("input");
261        input.setAttribute("name", name);
262        input.setAttribute("type""hidden");
263    }

264    input.setAttribute("value", value);
265    var parentElement = input.parentElement ? input.parentElement : input.parentNode;
266    if (parentElement == null{
267        form.appendChild(input);
268        form[name] = input;
269    }

270}

271
272function Anthem_RemoveHiddenInput(form, name) {
273    var input = form[name];
274    var parentElement = input.parentElement ? input.parentElement : input.parentNode;
275    if (input && parentElement == form) {
276        form[name] = null;
277        form.removeChild(input);
278    }

279}

280
281function Anthem_FireEvent(eventTarget, eventArgument, clientCallBack, clientCallBackArg, includeControlValuesWithCallBack, updatePageAfterCallBack) {
282 var form = document.getElementById(Anthem_FormID);
283 Anthem_SetHiddenInputValue(form, "__EVENTTARGET", eventTarget);
284 Anthem_SetHiddenInputValue(form, "__EVENTARGUMENT", eventArgument);
285 Anthem_CallBack(nullnullnullnullnull, clientCallBack, clientCallBackArg, includeControlValuesWithCallBack, updatePageAfterCallBack);
286 form.__EVENTTARGET.value = "";
287 form.__EVENTARGUMENT.value = "";
288}

289
290function Anthem_UpdatePage(result) {
291 var form = document.getElementById(Anthem_FormID);
292 if (result.viewState) {
293  Anthem_SetHiddenInputValue(form, "__VIEWSTATE", result.viewState);
294 }

295 if (result.viewStateEncrypted) {
296  Anthem_SetHiddenInputValue(form, "__VIEWSTATEENCRYPTED", result.viewStateEncrypted);
297 }

298 if (result.eventValidation) {
299  Anthem_SetHiddenInputValue(form, "__EVENTVALIDATION", result.eventValidation);
300 }

301 if (result.controls) {
302  for (var controlID in result.controls) {
303   var containerID = "Anthem_" + controlID.split("$").join("_"+ "__";
304   var control = document.getElementById(containerID);
305   if (control) {
306    control.innerHTML = result.controls[controlID];
307    if (result.controls[controlID] == ""{
308     control.style.display = "none";
309    }
 else {
310     control.style.display = "";
311    }

312   }

313  }

314 }

315 if (result.pagescript) {
316     Anthem_LoadPageScript(result, 0);
317 }

318}

319
320// Load each script in order and wait for each one to load before proceeding
321function Anthem_LoadPageScript(result, index) {
322    if (index < result.pagescript.length) {
323  try {
324      var script = document.createElement('script');
325      script.type = 'text/javascript';
326      if (result.pagescript[index].indexOf('src='== 0{
327          script.src = result.pagescript[index].substring(4);
328      }
 else {
329          if (script.canHaveChildren ) {
330              script.appendChild(document.createTextNode(result.pagescript[index]));
331          }
 else {
332              script.text = result.pagescript[index];
333          }

334      }

335         document.getElementsByTagName('head')[0].appendChild(script);
336         if (typeof script.readyState != "undefined"{
337             script.onreadystatechange = function() {
338                 if (script.readyState != "complete" && script.readyState != "loaded"{
339                     return;
340                 }
 else {
341                     Anthem_LoadPageScript(result, index + 1);
342                 }

343             }

344         }
 else {
345                Anthem_LoadPageScript(result, index + 1);
346         }

347  }
 catch (e) {
348      Anthem_DebugError("Error adding page script to head. " + e.name + "" + e.message);
349  }

350 }

351}

352
353function Anthem_EvalClientSideScript(result) {
354 if (result.script) {
355  for (var i = 0; i < result.script.length; ++i) {
356   try {
357    eval(result.script[i]);
358   }
 catch (e) {
359    alert("Error evaluating client-side script!\n\nScript: " + result.script[i] + "\n\nException: " + e);
360   }

361  }

362 }

363}

364
365function Anthem_DebugRequestText(text) {
366}

367
368function Anthem_DebugResponseText(text) {
369}

370
371function Anthem_DebugError(text) {
372}

373
374//Fix for bug #1429412, "Reponse callback returns previous response after file push".
375//see http://sourceforge.net/tracker/index.php?func=detail&aid=1429412&group_id=151897&atid=782464
376function Anthem_Clear__EVENTTARGET() {
377 var form = document.getElementById(Anthem_FormID);
378 Anthem_SetHiddenInputValue(form, "__EVENTTARGET""");
379}

380
381function Anthem_InvokePageMethod(methodName, args, clientCallBack, clientCallBackArg) {
382 Anthem_Clear__EVENTTARGET(); // fix for bug #1429412
383    return Anthem_CallBack(null"Page"null, methodName, args, clientCallBack, clientCallBackArg, truetrue);
384}

385
386function Anthem_InvokeMasterPageMethod(methodName, args, clientCallBack, clientCallBackArg) {
387 Anthem_Clear__EVENTTARGET(); // fix for bug #1429412
388    return Anthem_CallBack(null"MasterPage"null, methodName, args, clientCallBack, clientCallBackArg, truetrue);
389}

390
391function Anthem_InvokeControlMethod(id, methodName, args, clientCallBack, clientCallBackArg) {
392 Anthem_Clear__EVENTTARGET(); // fix for bug #1429412
393    return Anthem_CallBack(null"Control", id, methodName, args, clientCallBack, clientCallBackArg, truetrue);
394}

395
396function Anthem_PreProcessCallBack(
397    control,
398    e,
399    eventTarget,
400    causesValidation, 
401    validationGroup, 
402    imageUrlDuringCallBack, 
403    textDuringCallBack, 
404    enabledDuringCallBack,
405    preCallBackFunction,
406    callBackCancelledFunction,
407    preProcessOut
408{
409 preProcessOut.Enabled = !control.disabled;
410 var preCallBackResult = true;
411 if (preCallBackFunction) {
412  preCallBackResult = preCallBackFunction(control);
413 }

414 if (typeof preCallBackResult == "undefined" || preCallBackResult) {
415  var valid = true;
416  if (causesValidation && typeof Page_ClientValidate == "function"{
417   valid = Page_ClientValidate(validationGroup);
418  }

419  if (valid) {
420   var inputType = control.getAttribute("type");
421   inputType = (inputType == null? '' : inputType.toUpperCase();
422   if (inputType == "IMAGE" && e != null{
423                var form = document.getElementById(Anthem_FormID);
424                if (e.offsetX) {
425                    Anthem_SetHiddenInputValue(form, eventTarget + ".x", e.offsetX);
426                    Anthem_SetHiddenInputValue(form, eventTarget + ".y", e.offsetY);
427                }
 else {
428                    Anthem_SetHiddenInputValue(form, eventTarget + ".x", e.clientX - control.offsetLeft + 1);
429                    Anthem_SetHiddenInputValue(form, eventTarget + ".y", e.clientY - control.offsetTop + 1);
430                }

431   }

432   preProcessOut.OriginalText = control.innerHTML;
433   if (imageUrlDuringCallBack || textDuringCallBack) {
434       if (control.nodeName.toUpperCase() == "INPUT"{
435           if (inputType == "CHECKBOX" || inputType == "RADIO" || inputType == "TEXT"{
436               preProcessOut.OriginalText = GetLabelText(control.id);
437               SetLabelText(control.id, textDuringCallBack);
438           }
 else if (inputType == "IMAGE"{
439               if (imageUrlDuringCallBack) {
440                   preProcessOut.OriginalText = control.src;
441                   control.src = imageUrlDuringCallBack;
442               }
 else {
443                   preProcessOut.ParentElement = control.parentElement ? control.parentElement : control.parentNode;
444                   if (preProcessOut.ParentElement) {
445                       preProcessOut.OriginalText = preProcessOut.ParentElement.innerHTML;
446                       preProcessOut.ParentElement.innerHTML = textDuringCallBack;
447                   }

448               }

449           }
 else if (inputType == "SUBMIT"{
450               preProcessOut.OriginalText = control.value;
451               control.value = textDuringCallBack;
452           }

453       }
 else if (control.nodeName.toUpperCase() == "SELECT"{
454           preProcessOut.OriginalText = GetLabelText(control.id);
455           SetLabelText(control.id, textDuringCallBack);
456       }
 else {
457        control.innerHTML = textDuringCallBack;
458    }

459   }

460   control.disabled = (typeof enabledDuringCallBack == "undefined"? false : !enabledDuringCallBack;
461   return true;
462        }
 else {
463            return false;
464        }

465 }
 else {
466     if (callBackCancelledFunction) {
467      callBackCancelledFunction(control);
468  }

469  return false;
470 }

471}

472
473function Anthem_PreProcessCallBackOut() {
474    // Fields
475    this.ParentElement = null;
476    this.OriginalText = '';
477    this.Enabled = true;
478}

479
480function Anthem_PostProcessCallBack(
481    result, 
482    control,
483    eventTarget, 
484    clientCallBack, 
485    clientCallBackArg, 
486    imageUrlDuringCallBack, 
487    textDuringCallBack, 
488    postCallBackFunction, 
489    preProcessOut
490{
491    if (postCallBackFunction) {
492        postCallBackFunction(control);
493    }

494 control.disabled = !preProcessOut.Enabled;
495    var inputType = control.getAttribute("type");
496    inputType = (inputType == null? '' : inputType.toUpperCase();
497 if (inputType == "IMAGE"{
498     var form = document.getElementById(Anthem_FormID);
499        Anthem_RemoveHiddenInput(form, eventTarget + ".x");
500        Anthem_RemoveHiddenInput(form, eventTarget + ".y");
501 }

502 if (imageUrlDuringCallBack || textDuringCallBack) {
503     if (control.nodeName.toUpperCase() == "INPUT"{
504         if (inputType == "CHECKBOX" || inputType == "RADIO" || inputType == "TEXT"{
505             SetLabelText(control.id, preProcessOut.OriginalText);
506         }
 else if (inputType == "IMAGE"{
507             if (imageUrlDuringCallBack) {
508                 control.src = preProcessOut.OriginalText;
509             }
 else {
510                 preProcessOut.ParentElement.innerHTML = preProcessOut.OriginalText;
511             }

512         }
 else if (inputType == "SUBMIT"{
513             control.value = preProcessOut.OriginalText;
514         }

515     }
 else if (control.nodeName.toUpperCase() == "SELECT"{
516         SetLabelText(control.id, preProcessOut.OriginalText);
517     }
 else {
518         control.innerHTML = preProcessOut.OriginalText;
519     }

520 }

521 if (clientCallBack) {
522     clientCallBack(result, clientCallBackArg);
523 }

524}

525
526function Anthem_FireCallBackEvent(
527 control,
528 e,
529 eventTarget,
530 eventArgument,
531 causesValidation,
532 validationGroup,
533 imageUrlDuringCallBack,
534 textDuringCallBack,
535 enabledDuringCallBack,
536 preCallBackFunction,
537 postCallBackFunction,
538 callBackCancelledFunction,
539 includeControlValuesWithCallBack,
540 updatePageAfterCallBack
541{
542 var preProcessOut = new Anthem_PreProcessCallBackOut();
543 var preProcessResult = Anthem_PreProcessCallBack(
544     control, 
545     e, 
546     eventTarget,
547     causesValidation, 
548     validationGroup, 
549     imageUrlDuringCallBack, 
550     textDuringCallBack, 
551     enabledDuringCallBack, 
552     preCallBackFunction, 
553     callBackCancelledFunction, 
554     preProcessOut
555 );
556    if (preProcessResult) {
557     Anthem_FireEvent(
558      eventTarget,
559      eventArgument,
560      function(result) {
561                Anthem_PostProcessCallBack(
562                    result, 
563                    control, 
564                    eventTarget,
565                    null
566                    null
567                    imageUrlDuringCallBack, 
568                    textDuringCallBack, 
569                    postCallBackFunction, 
570                    preProcessOut
571                );
572      }
,
573      null,
574      includeControlValuesWithCallBack,
575      updatePageAfterCallBack
576     );
577    }

578}

579
580function AnthemListControl_OnClick(
581    e,
582 causesValidation,
583 validationGroup,
584 textDuringCallBack,
585 enabledDuringCallBack,
586 preCallBackFunction,
587 postCallBackFunction,
588 callBackCancelledFunction,
589 includeControlValuesWithCallBack,
590 updatePageAfterCallBack
591{
592 var target = e.target || e.srcElement;
593 if (target.nodeName.toUpperCase() == "LABEL" && target.htmlFor != '')
594     return;
595 var eventTarget = target.id.split("_").join("$");
596 Anthem_FireCallBackEvent(
597     target, 
598     e,
599     eventTarget, 
600     ''
601     causesValidation, 
602     validationGroup, 
603     '',
604     textDuringCallBack, 
605     enabledDuringCallBack, 
606     preCallBackFunction, 
607     postCallBackFunction, 
608     callBackCancelledFunction, 
609     true
610     true
611 );
612}

613
614function GetLabelText(id) {
615    var labels = document.getElementsByTagName('label');
616    for (var i = 0; i < labels.length; i++{
617        if (labels[i].htmlFor == id) {
618            return labels[i].innerHTML;
619        }

620    }

621    return null;
622}

623
624function SetLabelText(id, text) {
625    var labels = document.getElementsByTagName('label');
626    for (var i = 0; i < labels.length; i++{
627        if (labels[i].htmlFor == id) {
628            labels[i].innerHTML = text;
629            return;
630        }

631    }

632}

633
634