###########################################################################
#                            TextMate Snippets                            #
###########################################################################
snippet get "Get Elements"
getElement${1/(T)|.*/(?1:s)/}By${1:T}${1/(T)|(I)|.*/(?1:agName)(?2:d)/}('$2')
endsnippet

snippet '':f "object method string"
'${1:${2:#thing}:${3:click}}': function(element){
	$0
}${10:,}
endsnippet

snippet :f "Object Method"
${1:method_name}: function(${3:attribute}){
	$0
}${10:,}
endsnippet

snippet :, "Object Value JS"
${1:value_name}:${0:value},
endsnippet

snippet : "Object key key: 'value'"
${1:key}: ${2:"${3:value}"}${4:, }
endsnippet

snippet proto "Prototype (proto)"
${1:class_name}.prototype.${2:method_name} = function(${3:first_argument}) ,,{
	${0:// body...}
};
 
endsnippet

snippet for "for (...) {...} (faster)"
for (var ${2:i} = ${1:Things}.length - 1; $2 >= 0; $2--){
	${3:$1[$2]}$0
};
endsnippet

snippet for "for (...) {...}"
for (var ${2:i}=0; $2 < ${1:Things}.length; $2++) {
	${3:$1[$2]}$0
};
endsnippet

snippet fun "function (fun)"
function ${1:function_name} (${2:argument}) {
	${0:// body...}
}
endsnippet

snippet ife "if ___ else"
if (${1:true}) {$0} else{};
endsnippet

snippet if "if"
if (${1:true}) {$0};
endsnippet

snippet timeout "setTimeout function"
setTimeout(function() {$0}${2:}, ${1:10});
endsnippet

# vim:ft=snippets:
# Prototype
snippet proto
	${1:class_name}.prototype.${2:method_name} =
	function(${3:first_argument}) {
		${4:// body...}
	};
endsnippet
# Function
snippet fun
	function ${1:function_name} (${2:argument}) {
		${3:// body...}
	}
endsnippet
# Anonymous Function
snippet f
	function(${1}) {${2}};
endsnippet
# if
snippet if
	if (${1:true}) {${2}};
endsnippet
# if ... else
snippet ife
	if (${1:true}) {${2}}
	else{${3}};
endsnippet
# tertiary conditional
snippet t
	${1:/* condition */} ? ${2:a} : ${3:b}
endsnippet
# switch
snippet switch
	switch(${1:expression}) {
		case '${3:case}':
			${4:// code}
			break;
		${5}
		default:
			${2:// code}
	}
endsnippet
# case
snippet case
	case '${1:case}':
		${2:// code}
		break;
	${3}
endsnippet
# for (...) {...}
snippet for
	for (var ${2:i} = 0; $2 < ${1:Things}.length; $2${3:++}) {
		${4:$1[$2]}
	};
endsnippet
# for (...) {...} (Improved Native For-Loop)
snippet forr
	for (var ${2:i} = ${1:Things}.length - 1; $2 >= 0; $2${3:--}) {
		${4:$1[$2]}
	};
endsnippet
# while (...) {...}
snippet wh
	while (${1:/* condition */}) {
		${2:/* code */}
	}
endsnippet
# do...while
snippet do
	do {
		${2:/* code */}
	} while (${1:/* condition */});
endsnippet
# Object Method
snippet :f
	${1:method_name}: function(${2:attribute}) {
		${4}
	}${3:,}
endsnippet
# setTimeout function
snippet timeout
	setTimeout(function() {${3}}${2}, ${1:10};
endsnippet
# Get Elements
snippet get
	getElementsBy${1:TagName}('${2}')${3}
endsnippet
# Get Element
snippet gett
	getElementBy${1:Id}('${2}')${3}
endsnippet