<?php
/**
 *  memoo
 *
 *  @since      2005.3.12
 *  @author     Nob Funaki <nob.funaki@gmail.com>
 */

/**
 *  SETTING
 */
$file "tmp.txt";  //  writable filename

$str  "";
$type "w";
if (
array_key_exists("str"$_POST)) {
    
$str $_POST["str"];
} else if (
array_key_exists("title"$_GET) && array_key_exists("url"$_GET)) {
    
$str urldecode("\n\n".$_GET["title"]."\n".$_GET["url"]);
    if (
function_exists("mb_convert_encoding")) {
        
$str mb_convert_encoding($str"UTF-8""auto");
    }
    
$type "a";
}
if (
$str != "" && is_writable($file)) {
    
$fp fopen($file$type);
    
fwrite($fpurldecode($str));
    
fclose($fp);
    if (
$type == "w") {
        exit;
    }
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="content-script-type" content="text/javascript">
<title>memoo</title>
<style type="text/css">
<!--
body {
    margin: 0%;
}
textarea {
    width: 100%;
    height: 100%;
    background-color: #EEE;
    padding: 0.5em;
    border: none;
}
//-->
</style>
<script type="text/javascript">
<!--
function ClickUrl()
{
    if (document.all) {
        var a = document.selection.createRange();
        var b = a.parentElement(); 
        var c = b.createTextRange(); 
        c = document.body.createTextRange(); 
        c.moveToElementText(b); 
        c.setEndPoint("EndToStart", a); 
        d = document.body.createTextRange();
        d.moveToElementText(b);
        d.setEndPoint("StartToEnd", a);
        r = new RegExp("https?://[a-zA-Z0-9\./_&%?=@,:;#-]*?$");
        s = new RegExp("^[a-zA-Z0-9\./_&%?=@,:;#-]*");
        var url = "";
        if ((a.text == "http" || a.text == "https") && (ss = d.text.match(s))) {
            url = a.text + ss;
        } else if ((rr = c.text.match(r)) && (ss = d.text.match(s))) {
            url = rr + a.text + ss;
        }
        window.open(url);
    }
}
function GetXmlHttpReqObj() {
    var xmlhttp;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {
            xmlhttp = false;
        }
    }
    if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}
function SaveFile()
{
    var kc = event.keyCode;
    var req = GetXmlHttpReqObj();
    var filename = location.pathname.substring(location.pathname.lastIndexOf('/') + 1); // get current filename
    if (filename == "") {
        filename = "index.php";
    }
    req.open("POST", filename, true);
    req.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
    var str = document.getElementById("text").innerHTML;
    str = str.replace(/&gt;/g, ">");
    str = str.replace(/&lt;/g, "<");
    str = str.replace(/&amp;/g, "%26");
    req.send("str=" + str);
}

//  TAB inside textarea (and textbox)?
//  http://dotnetjunkies.com/WebLog/familjones/archive/2004/04/01/10607.aspx
function HandleKeyDown(obj)
{
   var tabKeyCode = 9;
   if (event.keyCode == tabKeyCode && event.srcElement == obj) {
      obj.selection = document.selection.createRange();
      obj.selection.text = String.fromCharCode(tabKeyCode);
      event.returnValue = false;
   }
}
//-->
</script>
</head>

<body>
<form action="<?=$_SERVER["PHP_SELF"]?>" method="POST">
<textarea id="text" rows="100" cols="100" ondblclick="ClickUrl()" onkeyup="SaveFile()" onkeydown="HandleKeyDown(this);">
<?php
echo htmlspecialchars(file_get_contents($file));
?>
</textarea>
</form>
</body>
</html>