Notas JavaScript
http://www.w3schools.com/jsref/jsref_obj_date.asp  JavaScript Tutorial
http://msdn2.microsoft.com/en-us/library/ms950396.aspx  

Variables

siempre implicitas, [A-Za-Z0-9_] no pueden empezar por número, distinguen mayúsculas 
números enteros: (NN)decimal ( 0NN)octal (0xNN)hexadecimal
numeros reales: (NN[.NN][eNN])
booleanos: (1)true, (0)false
cadenas: (\a\b\f\n\r\t\\\'\")caracteres_especiales .length .substring(i,j)
sin valor: null (se convierte a todos los tipos 0,"",false)
var variable=valor; // se puede redefinir a otro tipo, dentro de funciones con var locales, sin var globales

tipos de valores: array boolean date number object string function undefined		

if (typeof variable === 'tipo') ...
Expresiones

el primer valor define el resultado de la expresión, los demás se convierten
proceso por líneas, varios comandos en una misma línea separados por ';'
operadores de asignación: =, +=, -=, *=, /=, %=, &=, |=, ~=, <<=, >>=, >>>=
operador condicional: ... ? ... : …
operadores lógicos: ||, &&
operadores de comparación: ==, ¡=, <, <=, >, >= (se pueden emplear con cadenas)
operadores aritméticos: +, -, *, /, %, ++, -- (+ se pude emplear con cadenas)
operadores bit a bit: &, |, ^, ~, <<, >>, >>>
parseInt(str[,radix]); // radix 2..36, si no radix considera: 0x.. hexa, 0.. octal, decimal; a entero, ignora decimales, si no empieza con número NaN, también de real a entero
parseFloat(str); // "abc" return NaN, "1.2abc" return 1.2
eval(expresion); cualquier expresión o grupo de expresiones JS
Estructuras de Control

if (condicion) { ... } [ else { ... } ]
while (condicion) { ... }
for (...; condicion; ...) { ... }
for (variable in objeto) { ... } // recorre las propiedades del objeto (por índice)
break; continue;
switch (...) { case ... : .... break; }
try { ... } catch (e) { ... } // throw .... // excepciones

Objetos·Object

miobjeto= new Object ();	~ miobjeto= {}
miarray = new Array ();		~ miarray = []
micadena = new String ();	~ micadena = ""
mifuncion = new Function ();	~ micadena = ""
Number Date Math

clase.prototype.<funcion> = function { ... }
// propiedades (objeto Object) no se incluyen en length 
m["variable"]= m.variable= valor; // da de alta proiedades 
valor= m["variable"]= m.variable; // recupera propiedades 
for (var n in m) writeline (n, m[n]); // n variable string 
delete m.string; elimina la propiedad 

Objeto Math

abs(n)
n=sin(a) n=cos(a) n=tan(a) a=acos(n),a=asin(n) a=atan(n) a=atan2(y,x)<-pi..pi> // a en radianes
ceil(n)<entero mayor o igual> floor(n)<entero menor o igual> round(n)<entero más cercano>
exp(n)=pow(E,n) log(n)<logaritmo natural base e> // Euler=2.7 1828 1828 45 90 23 53 60 287
max(n1,n2) min(n1,n2)					
pow(base,exponent) // 1000=pow(10,3)
sqrt(n) // raíz cuadrada, (n<0)=0
random() // 0..1 inclusive
NaN // no es un número
isNaN(n) // true|false
n.toString([radix]) // 16.toString(16) == "10"

Objeto Array

var m= new Array (40); = [];	// m[i] con base 0, número de elementos
m.join ([ch=,]);		// a cadena separada por ch
m.split ([ch=,]);		// de cadena separada por ch
m.reverse ();			// invierte
m.sort ();			// ordena
m[2]= new Array (20);		// m[i][j]
m3= m1.concat (m2);		// retorna m1+m2, m2 puede ser una lista de valores
m2= m1.slice (n1,n2);		// retorna subarray desde n1 hasta n2 no incluido, si n2<0 final

m.push (e);		// agrega elemento
e= m.pop ();		// elimina último elemento, retorna el elemento eliminado
e= m.shift ();	// elimina primer elemento, retorna el elemento eliminado
length= m.unshift (e1,e2,…); // inserta elementos al inicio de un array
m2= m.splice (posición, número_elementos_a_borrar, [valor_a_agregar1,valor_a_agregar2,…]); // elimina e inserta en medio de una array 
[3,4,5]= [1,2,3,4,5,6].splice(2 ,3, 11,12,13,14) > [1,2,11,12,13,14,6]

Objeto String

s.length, s["length"]
s.charAt (index) index:0..length-1 return: char | undefined
s.charCodeAt (index) " return: unicode | NaN
s.concat (s2) return: s+s2
String.fromCharCode (code1,code2,…,coden) monta string desde unicodes
s.indexOf (substring [,startindex]) busca substring, starindexcomienzo de búsqueda, return 0..length-1 | -1
s.lastIndexOf (substring [,startindex])
s.match (rgExp) return array
s.replace (rgExp, replaceText)
s.search (rgexp) return position first substring match | -1
s.slice (start [,end]) return section
s.split (str) return array of strings
s.substr (start [,length])
s.substring (start, end) return str the length end-start
s.toLowerCase ()
s.toUpperCase ()
o.toString ([radix])

function formato (val, num) {
	var str= ""+val;
	while (str.length < num) str= "0"+str;
	return str;
}
function recorta (val) { // quita espacios al principio y al final de val, val admite string y objetos
	var a= ""+val;
	while (a.charAt(0)==" ") a= a.substring (1);
	while (a.charAt(a.length-1)==" ") a= a.substring (0,a.length-1);
	return a;
}

Objeto Date

var d = new Date() // current date and time
var d = new Date(milliseconds) //milliseconds since 1970/01/01 00:00:00 (UTC)
var d = new Date(dateString) // October 13, 1975 11:13:00
var d = new Date(year, month, day, hours, minutes, seconds, milliseconds)
local time or UTC (universal, or GMT) time.onds)
d.setDate d.gedDate() // dia del mes (1-31)
d.getDay() // día de la semana (0-6)
d.getTime() number of milliseconds between midnight, January 1, 1970 and the time stored in the Date object 

function date2fec (date) {
	if (typeof(date)!="date") date= new Date(date);
	return date.getFullYear()*10000+ (date.getMonth()+1)*100+ date.getDate(); // getMonth 0-11
}
function date2hor (date) {
	if (typeof(date)!="date") date= new Date(date);
	returndate.getHours()*+ date.getMinutes()*+ date.getSeconds()+date.getMilliseconds()/;
}
function fec2date (fec) {
	return new Date(fecano(fec),fecmes(fec),fecdia(fec));
}

Expresiones Regulares

\ \n \\ \( \)
^ $ comienzo y final del input
* carácter anterior 0 o más
+ carácter anterior 1 o más
? carácter anterior 0 o 1
. 1 carácter cualquiera excepto /n
(pattern)y recuerda [0]..[n]
x|y
{n},{n,},{n,m}
[xyz],[^xyz],[a-z]
|b |B word, \d digit, \D no \f \n \r \s([ \f\n\r\t\v]) \S no \t \w([A-Za-z0-9_]) \W no
\num \n octal, \xn
regular expression object:
var r= /pattern/[switch] 	switch: i(ignorecase), g(global), gi
var r= new RegExp ("pattern", ["switch"])
r = s.replace ( /fox/i, "pig");
r = s.replace ( /(\S+)(\s+)(\S+)/g, "$3$2$1"); // Swap each pair of words

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };
function LTrim( value ) { var re = /\s*((\S+\s*)*)/g; return value.replace(re, "$1"); }
function RTrim( value ) { var re = /((\s*\S+)*)\s*/g; return value.replace(re, "$1"); }
function trim( value ) { return LTrim(RTrim(value)); }
String.prototype.swapcase = function() { 
	return this.replace (/([a-z]+)|([A-Z]+)/g,
		function($0,$1,$2) { return ($1) ? $0.toUpperCase() : $0.toLowerCase(); }) 
}

ActiveX WScript.Shell

Permite: buscar carpetas especiales, crear accesos directos, ejecutar aplicaciones, manipular el registro, mostrar ventanas de confirmación, ...
var wss= WScript.CreateObject ("WScript.Shell");
var wsse= wss.Environment(["Process"]); // System, User, Volatile, Process
wsse("PATH"); // "WINDIR","TMP",...
wsse.Remove(...)
var wssf= wss.SpecialFolders;
wssf("Desktop"); // "StarMenu","Favorites" 
var sc = wss.CreateShortcut (<camino.lnk>); // WshShortcut
sc.TargetPath = <path o url>;
sc.Save
sc.WorkingDirectory, sc.IconLocation, sc.Description, sc.WindowStyle, sc.HotKey, sc.Arguments
intButton = wss.Popup (strText, [natSecondsToWait], [strTitle], [natType]) = MessageBox
botones: (0)Aceptar (1)AceptarCancelar (2)AnularReintentarOmitir (3)SiNoCancelar (4)SiNo (5)ReintentarCancelar
iconos: (16)error (32)pregunta (48)exclamación (64)información
retorno: (-1)time (1)OK (2)Cancel (3)Abort (4)Retry (5)Ignore (6)yes (7)No. 
WshNetwork ("WScript.Network")
var wsn= CreateObject ("WScript.Network");

ActiveX Shell.Application

Permite: cerrar windows, abrir explorador, buscar archivos, ...
var shell= new ActiveXObject ("Shell.Application");
shell.SetTime (); // abrimos el reloj
var archivo= shell.BrowseForFolder (0, rótulo, &H4000); // Folder H4000:muestra también archivos
archivo.Title; // nombre con extensión sin camino
camino= archivo.ParentFolder.ParseName(archivo.Title).Path; // camino completo
Folder
MoveHere CopyHere
NewFolder
Items
RegRead
RegDelete
RegWrite
Run
Crear un icono en el escritorio
var DesktopPath = shell.SpecialFolders ('Desktop') 
var link = shell.CreateShortcut (DesktopPath+'\test.lnk') 
link.Arguments = '1 2 3' 
link.Description = 'test shortcut' 
link.HotKey = 'CTRL+ALT+SHIFT+X' 
link.IconLocation = 'app.exe,1' 
link.TargetPath = 'c:\blah\app.exe' 
link.WindowStyle = 3 
link.WorkingDirectory = 'c:\blah' 
link.Save()
Crear una entrada en el registro de windows
var key = 'HKEY_CURRENT_USER\' 
shell.RegWrite (key + 'WSHTest\','testkeydefault')
shell.RegWrite (key + 'WSHTest\string1', 'testkeystring1')
shell.RegWrite (key + 'WSHTest\string2', 'testkeystring2', 'REG_SZ')
shell.RegWrite (key + 'WSHTest\string3', 'testkeystring3', 'REG_EXPAND_SZ')
shell.RegWrite (key + 'WSHTest\int', 123, 'REG_DWORD') 
Eliminar una entrada
shell.RegDelete ('HKCU\\Software\\ACME\\FortuneTeller\\MindReader')
shell.RegDelete ('HKCU\\Software\\ACME\\FortuneTeller\\') 
shell.RegDelete ('HKCU\\Software\\ACME\\')

ActiveX Scripting.FileSystemObject

contained in the scripting type library (scrrun.dll). suport text file
FileSystemObject
var fso= new ActiveXObject ("Scripting.FileSystemObject"); // CreateObject en VBS
fso.DeleteFolder (folder [,force]); // f:path,mask(error si ninguno) force:dafault:true force delete read-only, borra incluso con contenido
fso.MoveFolder (source, destination); // s:path,mask(error si ninguno) d:path(acabado en \ si padre)(error si existe)
fso.CopyFolder (source, destination[, overwrite]); // recursivo s:path,mask(error si ninguno) d:path(acabado en \ si padre) o:default:true
fso.GetDriveName (path);
fso.GetParentFolderName (path);
fso.GetFileName (path);
fso.GetBaseName (path); // sin extensión
fso.GetExtensionName (path);
fso.GetAbsolutePathName (path); // completa el camino con el directorio actual y expandiendo "." y ".."
fso.GetTempName ();
var fo= fso.CreateFolder("c:\\test");
var fo= fso.GetFolder ("c:");
var fo= fso.GetSpecialFolder (que); // (0)Windows (1)System (2)Temporary
ts= fso.GetSpecialFolder(2).CreateTextFile (fso.GetTempName()); 
fso.MoveFile (source,destination); // s: path, file or mask(error si ninguno), d:path(terminado en\),file(error si existe)
fso.CopyFile (source, destination[, ¿no? overwrite]); // recursivo s:file,mask(error si ninguno) d:path(acabado en \ si padre) o:default:true permite comodines en varios niveles
fso.DeleteFile (file[,force]); // f:file,mask f:true delete read only
Drive
var dr= fso.GetDrive (fso.GetDriveName(camino));
TotalSize (bytes)
AvailableSpace = FreeSpace (bytes)
DriveLetter. DriveType, SerialNumber, FileSystem (FAT,FAT32,NTFS), IsReady, ShareName(type3), VolumeName(¡type3)
Path, RootFolder
DriveType: (1)Removable (2)Fixed (3)Network (4)CDROM (5)RAMDisk 
Drives
fso.Drives
Folder
MoveFolder,FolderExists,
Delete, Move, Copy, Drive,IsRootFolder
Folders
File
var fi= fso.GetFile ("c:\\test.txt");
fi.Move ("c:\\file.txt"); fi.Copy ("c:\\file.txt"); fi.Delete ();
Name, Path, Size, ShortName, ShortPath, DateCreated,DateLastModified,DatelastAcceded
Attributes: (0)Normal (1)ReadOnly (2)Hidden (4)System (8)Volume (16)Directory (32)Archive (64)Alias (128)Compressed
Files
TextStream
var ForReading=1
var ForWriting=2
var ForAppending=8
var ts= fso.CreateTextFile ("c:\\test.txt", true); // empty text file
var ts= fso.OpenTextFile ("c:\\test.txt", ForWriting, true);
var ts= fi.OpenAsTextStream (ForWriting, true);
Write ("..."); WriteLine ("..."); WriteBlankLines (n);
Read (n); ReadLine (); ReadAll (); 
ts.Skip (nºcaracteres), ts.SkipLine(); // Left, Right, Mid 
bool ts.AtEndOfLine, bool ts.AtEndOfStream, enbase1 ts.Column, enbase1 ts.Line
Close
while (¡ts.AtEndOfStream) { var s= ts.ReadLine (); }
Dictionary
Add, Exists, Items, keys, Remove, RemoveAll, Count, Item, Key
Enumerator
var en= new Enumerator (fso.Drives)
for (; ¡en.atEnd(); en.moveNext()) { var x= en.item(); }
var fc = new Enumerator(f.folders); if (fc<=0) return n;
for (; !fc.atEnd(); fc.moveNext()) 

ActiveX WScript.Network

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/script56/html/438d1705-fb98-4a63-86e5-a8cc01f4ce16.asp
var wsn = new ActiveXObject ("WScript.Network");
wsn.UserName
wsn.UserDomain
wsn.ComputerName
wsn.MapNetworkDrive ("S:", "\\server\share");
wsn.RemoveNetworkDrive('E')
wsn.SetDefaultPrinter "HP LaserJet 5"

function InGroup (Domain, Group, User) 
{
	obj = GetObject("WinNT://"+Domain+"/"+Group);
	return obj.IsMember("WinNT://"+Domain+"/"+User);
}

OBTENER INFORMACION SOBRE LAS UNIDADES DE CD 
var strComputer='.', a= '';
objWMIService = Getobject ('winmgmts:'+ 'impersonationLevel=impersonate}!\\' + strComputer + '\root\cimv2') 
colItems = objWMIService.ExecQuery ('Select * from Win32_CDROMDrive') 

for (objItem In colItems) 
{ 
	a += 'Description: '+objItem.Description+"\n" 
	a += 'Name: '+objItem.Name+"\n"
	a += 'Manufacturer:' +objItem.manufacturer+"\n"
	a += 'Media type: '+objItem.mediaType+"\n"
	a += 'PNP Device ID:' + objItem.PNPDeviceID+"\n"
} 
alert(a)