summaryrefslogtreecommitdiff
path: root/public/js/util.js
blob: 7b2520e6241c957dcf6e25768f48270c22a3a751 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
var URLregexp = /^(https?:\/\/)(www.)?([-A-Z0-9.]+)(\/)?([-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])*/ig;
var months = { Jan: 0, Feb: 1, Mar: 2, Apr: 3, May: 4, Jun: 5, Jul: 6, Aug: 7, Sep: 8, Oct: 9, Nov: 10, Dec: 11 }
function isScrolledIntoView (elem)
	{
	return true;
	var docViewTop = $(window).scrollTop();
	var docViewBottom = docViewTop + $(window).height();
	var elemTop = $(elem).offset().top;
	var elemBottom = elemTop + $(elem).height();
	return ((elemBottom >= docViewTop) && (elemTop <= docViewBottom));
	}
function scrollToTop (div)
	{ $(div).scrollTop( 0 ) }
function scrollToBottom (div)
	{ $(div).scrollTop( $(div)[0].scrollHeight ) }
function warn(s)
	{
//	return
	console.log(s)
	var h = document.getElementById('msg').innerHTML
	h = s + '<br/>' + h
	document.getElementById('msg').innerHTML = h
	}
var image_extensions = ["jpg","gif","png","jpeg","JPEG","JPG","GIF","PNG"]
function is_image(s)
	{
	for (i in image_extensions)
		{
		if (s.indexOf(image_extensions[i]) !== -1)
			return true
		}
	return false
	}
var domain_extensions = [".com",".net",".org",".uk",".fr",".de",".ch",".info",".nu",".mu",".io","facebook.com","twitter.com"]
function has_domain(s)
	{
	for (var i in domain_extensions)
		{
		if (s.indexOf(domain_extensions[i]) !== -1)
			return true
		}
	return false
	}
function parse_blurb(s)
	{
	// s = linkify(s+"\n")
	var parsed_lines = []
	var lines = s.split("\n")
	for (i in lines)
		{
		var parsed_words = []
		var words = lines[i].split(" ")
		for (j in words)
			{
			if (words[j].indexOf("http") !== -1)
				{
				if (is_image(words[j]))
					parsed_words.push('<img src="'+words[j]+'"/>')
				else
					parsed_words.push(linkify(words[j]))
				}
			else if (words[j].indexOf("www") === 0 || has_domain(words[j]))
				{
				parsed_words.push(linkify("http://"+words[j]))
				}
			else
				parsed_words.push(words[j])					
			}
		parsed_lines.push( parsed_words.join(" ") )
		}
	// return s.replace(/\n/g, '<br/>')
	return parsed_lines.join("<br/>")
	}
function linkify(s)
	{
	var link = '';
	var punctuation = '';
	var end = s.length-1;

	// strip the terminal punctuation mark if it's a period or comma
	if (s.indexOf(".", end) === end || s.indexOf(",", end) === end)
		{
		punctuation = s.substr(end, 1);
		s = s.substr(0, end);
		}
	if (s.indexOf("twitter.com") !== -1)
		{
		var partz = s.split("/");
		var uname = '';
		if (partz[partz.length-1].length)
			uname = partz[partz.length-1];
		else if (parts[-2].length)
			uname = partz[partz.length-2];
		link = '<a href="https://twitter.com/' + uname + '" target="_blank">@' + uname + '</a>';
		}
	else
		{
		// link = s.replace(URLregexp,"<a href='$1$2$3$4$5' target='_blank'>[$3]</a>");
		var match = URLregexp.exec(s);
		if (match && match.length == 6)
			{
			var url = match[0] || "";
			var http = match[1] || "";
			var www = match[2] || "";
			var domain = match[3] || "";
			var slash = match[4] || "";
			var uri = match[5] ?  match[5].replace(/\/?index.html$/, "") : "";
			link = '<a href="' + url + '" target="_blank">[' + domain + ']</a>';
			}
		else
			{
			link = s.replace(URLregexp,"<a href='$1$2$3$4$5' target='_blank'>[$3]</a>");
			}
		}
	return link + punctuation;
	}
var URL =
	{
	auth:
		{
		login: "/login",
		logout: "/logout",
		},
	party:
		{
		list: "/api/party/list",
		view: "/api/party/view",
		edit: "/api/party/edit",
		},
	user:
		{
		all: "/api/user/all",
		view: "/api/user/view",
		edit: "/api/user/edit",
		destroy: "/api/user/destroy",
		},
	};