Print the relative path Description

Given a source path and a destination path, output the relative path to the destination with respect to the source.

Rules


The input can come from stdin or as arguments to the program/function. 
Both Windows and Unix style paths must be supported.
The output path can use / and/or \ for the path separator (your choice and combination of both is OK).
You can assume a relative path is possible.
The use of external programs, built-in or library functions made for computing relative paths is prohibited (e.g. Python's os.path.relpath)
This is code-golf

Edit: New rule from comments.
The relative path must be the shortest relative path possible.
Assume the destination path is different from the source path.


Example 1

# In
/usr/share/geany/colorschemes
/usr/share/vim/vim73/ftplugin

# Out
../../vim/vim73/ftplugin


Example 2

# In
C:\Windows\System32\drivers
C:\Windows\System32\WindowsPowerShell\v1.0

# Out
..\WindowsPowerShell\v1.0
Bash + coreutils, 116
Here's a shell script to get the ball rolling.  Pretty sure there'll be shorter answers:
n=`cmp &lt;(echo $1) &lt;(echo $2)|grep -Po &quot;\d+(?=,)&quot;`
printf -vs %`grep -o /&lt;&lt;&lt;${1:n-1}|wc -l`s
echo ${s// /../}${2:n-1}

Output:
$ ./rel.sh /usr/share/geany/colorschemes /usr/share/vim/vim73/ftplugin
../vim/vim73/ftplugin
$ ./rel.sh /usr/share/geany/colorschemes/ /usr/share/vim/vim73/ftplugin/
../../vim/vim73/ftplugin/
$ ./rel.sh /usr/share/vim/vim73/ftplugin /usr/share/geany/colorschemes
../../geany/colorschemes
$ 

Note there is no way for the script to tell if the string ftplugin is a file or a directory.  You may explicitly provide a directory by appending it with an / as in the example above.
Won't handle paths containing whitespace or other funny characters.  Not sure if that is a requirement or not.  Just a few extra quotes would be needed.