<!doctype html>
<html>
<head>
<link href='//www.rjmprogramming.com.au/PHP/emboss_h1.css' rel='stylesheet' type='text/css'>
<script type='text/javascript'>
var lastokn='';
var okn='';
var oko=null;
var couldberelative=0;

var bodyih="<form style='width:100%;text-align:center;' action='" + document.URL.split('?')[0].split('#')[0] + "' method='GET'>"
+ "Url to Parse: <input placeholder='" + document.URL.split('?')[0].split('#')[0] + "' title='" + document.URL.split('?')[0].split('#')[0] + "' onkeypress=cval(event); oninput=precval(this); type=url value='' id=turl name=url style=width:50%;></input><br>"
+ "<input type=submit value='Parse' style=background-color:pink;></input>"
+ "</form><input type=text style='position:absolute;top:-200px;left:-200px;' value=''></input>";

function display(that) {
var thatis='';
for (var i=0; i<that.length; i++) {
if (that.substring(i, eval(1 + i)) == ':' || that.substring(i, eval(1 + i)) == '/' || that.substring(i, eval(1 + i)) == '?' || that.substring(i, eval(1 + i)) == '=' || that.substring(i, eval(1 + i)) == '&' || that.substring(i, eval(1 + i)) == '#') {
thatis+='<font color=green>' + that.substring(i, eval(1 + i)) + '</font>';
} else {
thatis+=that.substring(i, eval(1 + i));
}
}
return thatis;
}

function parseUrl() {
var retval='', scriptis='', portis='', domainis='', transportis='', getps, k, getes, zero=1, delim='?';
var unadornedURL='', noscriptURL='';
var hashtagURL='', getparamURL='';
var adornedURL=location.search.split('url=')[1] ? decodeURIComponent(location.search.split('url=')[1].split('&')[0]) : document.URL + window.location.hash;

if (adornedURL != '') {
retval='<table style="width:100%;text-align:center;" border=110><tbody><tr><th>Title</th><th>Description (<font color=green>delimitation</a>)</th></tr></tbody></table><br><br>';
if (adornedURL.indexOf('/') == -1) {
retval=retval.replace('</tbody>','<tr><td>Url</td><td>' + display('//' + adornedURL) + '</td></tr></tbody>');
} else {
retval=retval.replace('</tbody>','<tr><td>Url</td><td>' + display(adornedURL) + '</td></tr></tbody>');
}
if (adornedURL.indexOf('//') == -1 || adornedURL.indexOf('//') > 7) adornedURL='//' + adornedURL;
unadornedURL=adornedURL.split('?')[0].split('#')[0];
noscriptURL=unadornedURL;
retval=retval.replace('</tbody>','<tr><td>Url Webpage</td><td>' + display(unadornedURL) + '</td></tr><tr><td colspan=2></td></tr></tbody>');
scriptis=unadornedURL.split('/')[eval(-1 + unadornedURL.split('/').length)];
if (scriptis != '') {
noscriptURL=unadornedURL.substring(0,(unadornedURL.length - scriptis.length));
}
if (adornedURL.indexOf('#') != -1) hashtagURL='#' + adornedURL.split('#')[eval(-1 + adornedURL.split('#').length)];
if (adornedURL.indexOf('?') != -1) getparamURL='?' + adornedURL.split('?')[1].split('#')[0];
transportis=adornedURL.split('//')[0].split(':')[0];
if (adornedURL.split('//')[1].indexOf('/') != -1) domainis=adornedURL.split('//')[1].split('/')[0].split(':')[0];
if ((transportis + domainis) == '') {
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Transport Protocol</td><td>' + display('//') + '</td></tr></tbody>');
} else if (('' + domainis) == '') {
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Transport Protocol</td><td>' + display(transportis + ':' + '//') + '</td></tr></tbody>');
} else if (transportis != '' || unadornedURL.indexOf('//') == 0) {
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Transport Protocol</td><td>' + display(transportis + ('~' + adornedURL).split(domainis)[0].split(('~' + transportis))[1]) + '</td></tr></tbody>');
} else {
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Transport Protocol</td><td>' + display(transportis + adornedURL.split(domainis)[0].split(transportis)[1]) + '</td></tr></tbody>');
}
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Domain</td><td>' + display(domainis) + '</td></tr></tbody>');
if (adornedURL.split('//')[1].split('/')[0].indexOf(adornedURL.split('//')[1].split('/')[0].split(':')[0] + ':') != -1) {
portis=adornedURL.split('//')[1].split('/')[0].replace(adornedURL.split('//')[1].split('/')[0].split(':')[0] + ':','');
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Port</td><td>' + display(':' + portis) + '</td></tr></tbody>');
if ((transportis + domainis) == '') {
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Path off Document Root to Script</td><td></td></tr></tbody>');
} else if (('' + domainis) == '') {
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Path off Document Root to Script</td><td>' + display('/') + '</td></tr></tbody>');
} else if (noscriptURL.indexOf('/') == -1) {
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Path off Document Root to Script</td><td>' + display('/') + '</td></tr></tbody>');
} else {
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Path off Document Root to Script</td><td>' + display('/' + noscriptURL.split(domainis + ':' + portis + '/')[1]) + '</td></tr></tbody>');
}
} else if ((transportis + domainis) == '') {
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Path off Document Root to Script</td><td></td></tr></tbody>');
} else if (('' + domainis) == '') {
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Path off Document Root to Script</td><td>' + display('/' + noscriptURL.split('///')[1]) + '</td></tr></tbody>');
} else if (noscriptURL.indexOf('/') == -1) {
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Path off Document Root to Script</td><td>' + display('/') + '</td></tr></tbody>');
} else {
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Path off Document Root to Script</td><td>' + display('/' + noscriptURL.split(domainis + '/')[1]) + '</td></tr></tbody>');
}
if (scriptis != '') retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url HTML Script</td><td>' + display(scriptis) + '</td></tr></tbody>');
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Get Parameters</td><td>' + display(getparamURL) + '</td></tr></tbody>');
retval=retval.replace('</tbody>','<tr style=background-color:yellow;><td>Url Hashtag</td><td>' + display(hashtagURL) + '</td></tr><tr><td colspan=2></td></tr></tbody>');
if (getparamURL != '') {
getps=getparamURL.split('&');
for (k=1; k<=getps.length; k++) {
getes=getps[eval(-1 + k)].split('=');
retval=retval.replace('</tbody>','<tr><td>Url Get Parameter ' + k + ': ' + display(delim) + getes[0].substring(zero) + display('=') + '</td><td>' + decodeURIComponent(getes[1]) + '</td></tr></tbody>');
zero=0;
delim='&';
}
}
}
return retval;
}


function cval(eiois) {
//alert(eiois.which);
//okn+=String.fromCharCode(eiois.which || eiois.keyCode);
if ((eiois.which || eiois.keyCode) == 8) {
okn='';
} else if ((eiois.which || eiois.keyCode) == 186 || (eiois.which || eiois.keyCode) == 900000016) {
okn=okn;
} else if ((eiois.which || eiois.keyCode) < 46) { // || (eiois.which || eiois.keyCode) > 58) {
okn=okn;
} else {
//alert(eiois.which || eiois.keyCode);
okn+=String.fromCharCode(eiois.which || eiois.keyCode);
//document.title+='=' + okn + '+' + eiois.which + ' ' + eiois.keyCode + ' ... ';
}
if (okn.length > 1 && couldberelative == 0) {
//if (okn.substring(0,1) != '/' && okn.substring(0,1) != '.' && okn.substring(0,1) != 'h' && okn.substring(0,1) != 'H') {
// couldberelative=-1;
//}
if (couldberelative == 0 && okn.length == 6) {
if (okn.substring(0,6).toLowerCase() == 'https:') {
couldberelative=-1;
} else {
couldberelative=1;
oko.value=document.URL.split('?')[0].split('#')[0].split('parse_url.htm')[0] + okn.substring(0,5);
}
} else if (couldberelative == 0 && okn.length == 5) {
if (okn.substring(0,5).toLowerCase() == 'https') {
couldberelative=0;
} else if (okn.substring(0,5).toLowerCase() == 'http:') {
couldberelative=-1;
} else {
couldberelative=1;
oko.value=document.URL.split('?')[0].split('#')[0].split('parse_url.htm')[0] + okn.substring(0,4);
}
} else if (couldberelative == 0 && okn.length == 4) {
if (okn.substring(0,4).toLowerCase() == 'http') {
couldberelative=0;
} else {
couldberelative=1;
oko.value=document.URL.split('?')[0].split('#')[0].split('parse_url.htm')[0] + okn.substring(0,3);
}
} else if (couldberelative == 0 && okn.length == 3) {
if (okn.substring(0,3).toLowerCase() == 'htt') {
couldberelative=0;
} else {
couldberelative=1;
oko.value=document.URL.split('?')[0].split('#')[0].split('parse_url.htm')[0] + okn.substring(0,2);
}
} else if (couldberelative == 0 && okn.length == 2) {
if (okn.substring(0,2).toLowerCase() == 'ht') {
couldberelative=0;
} else if (okn.substring(0,2) == '//') {
oko.value=document.URL.split('?')[0].split('#')[0].split('/')[0] + '/';
couldberelative=-1;
} else if (okn.substring(0,2) == '..' || okn.substring(0,2) == './') {
couldberelative=1;
//document.title=okn;
//alert(okn);
if (okn.substring(0,2) == './') {
oko.value=document.URL.split('?')[0].split('#')[0].split('parse_url.htm')[0].substring(0,(-1 + document.URL.split('?')[0].split('#')[0].split('parse_url.htm')[0].length));
} else {
oko.value=document.URL.split('?')[0].split('#')[0].split('parse_url.htm')[0] + okn.substring(0,1);
}
} else {
couldberelative=1;
//document.title=okn;
//alert(okn);
oko.value=document.URL.split('?')[0].split('#')[0].split('parse_url.htm')[0] + okn.substring(0,1);
}
}
}
}

</script>
</head>
<body onload=" document.body.innerHTML+=parseUrl() + bodyih; oko=document.getElementById('turl');">
<h1 style='width:100%;text-align:center;'>Parse URL - RJM Programming - September, 2016</h1>
</body>
</html>