/*
֥饦˵AEĶ륹ץ
ʲϡAEΥɥåץꥹȤФ

Global
	comp(name)
	footage(name)
	this_comp
	this_layer
	time
//ϡAEȼΥ֥ȥꥹȤȤ⤦

Vector Math
	add(vec1, vec2)
	sub(vec1, vec2)
	mul(vec, amount)
	div(vec, amount)
	clamp(value, limit1, limit2)
	dot(vec1, vec2)
	cross(vec1, vec2)
	normalize(vec)
	length(vec)
	length(point1, point2)
	look_at(from_point, at_point)
//٥ȥ黻ؿ
//Ʊεǽδؿ
//ǥХѤ˥ߡ֤ͤؿǤ

Random Numbers
	seed_random(seed, timeless = false)
	random()
	random(max_val_or_array)
	random(min_val_or_array, max_val_or_array)
	gauss_random()
	gauss_random(max_val_or_array)
	gauss_random(min_val_or_array, max_val_or_array)
	noise(val_or_array)
//ȯؿ
//Ʊεǽδؿ
//ǥХѤ˥ߡ֤ͤؿǤ

Interpolation
	linear(t, val1, val2)
	linear(t, t_min, t_max, val1, val2)
	ease(t, val1, val2)
	ease(t, t_min, t_max, val1, val2)
	ease_in(t, val1, val2)
	ease_in(t, t_min, t_max, val1, val2)
	ease_out(t, val1, val2)
	ease_out(t, t_min, t_max, val1, val2)
//ִͤؿ
//Ʊεǽδؿ

Color Conversion
	rgb_to_hsl(rgba_array)
	hsl_to_rgb(hsla_array)
//Ѵؿ
//Ʊεǽδؿ
//䡢ǽ­ʤΤȼ˽褵
//ȼؿΥ֥åȤִǤ롣

Other Math
	degrees_to_radians(degrees)
	radians_to_degrees(radians)
//ٴϢؿ
//Ʊεǽδؿ
//ˤ¿ʤΤǽ
//ƤϤĤ

Comp
	layer(index)
	layer(name)
	layer(other_layer, rel_index)
	marker(name)
	num_layers
	active_camera
	width
	height
	duration
	frame_duration
	shutter_angle
	shutter_phase
	bg_color
	pixel_aspect
	name
//ݥåȥ֥ȤλȲǽʥץѥƥ? Ȼפ
//ߡ֥Ȥ褦ˤ
// this_comp ϡǥեȤǺ

Footage
	width
	height
	duration
	pixel_aspect
	name
//աơ֥ȤλȲǽʥץѥƥ? Ȼפ
//ߡ֥Ȥ褦ˤ

Layer Sub-object
	source
	effect(name)
	effect(index)
	mask(name)
	mask(index)

Layer General
	width
	height
	index
	parent
	has_parent
	in_point
	out_point
	start_time
	has_video
	has_audio
	active
	audio_active
//쥤䥪֥ȤλȲǽʥץѥƥ? Ȼפ
//ߡ֥Ȥ褦ˤ
// this_layer ϡǥեȤǺ

Layer Properties
	anchor_point
	position
	scale
	rotation
	opacity
	audio_levels
	time_remap
	marker
	name
//쥤䥪֥Ȥλȡ񤭹߲ǽʥץѥƥ? Ȼפ
//ߡ֥Ȥ褦ˤ
// this_layer ϡǥեȤǺ

Layer 3D
	orientation
	rotationX
	rotationY
	rotationZ
	light_transmission
	casts_shadows
	accepts_shadows
	accepts_lights
	ambient
	diffuse
	specular
	shininess
	metal
//쥤䥪֥(3D)λȡ񤭹߲ǽʥץѥƥ? Ȼפ
//ߡ֥Ȥ褦ˤ
// this_layer ϡǥեȤǺ

Layer Space Transforms
	to_comp(point, t = time)
	from_comp(point, t = time)
	to_world(point, t = time)
	from_world(point, t = time)
	to_comp_vec(vec, t = time)
	from_comp_vec(vec, t = time)
	to_world_vec(vec, t = time)
	from_world_vec(vec, t = time)
	from_comp_to_surface(point, t = time)
//
//

Camera
	point_of_interest
	zoom
	depth_of_field
	focus_distance
	aperture
	aperture
	blur_level
	active
//饪֥Ȥλȡ񤭹߲ǽʥץѥƥ? Ȼפ
//ߡ֥Ȥ褦ˤ
// ƥ֥ ϡǥեȤǺ?

Light
	point_of_interest
	intensity
	color
	cone_angle
	cone_feather
	shadow_darkness
	shadow_diffusion

//饤ȥ֥Ȥλȡ񤭹߲ǽʥץѥƥ? Ȼפ
//ߡ֥Ȥ褦ˤ

Effect
	active
	param(name)
	param(index)
	name
//եȥ֥?λȡ񤭹߲ǽʥץѥƥ? Ȼפ
//ߡ֥Ȥ褦ˤ

Mask
	opacity
	feather
	invert
	expansion
	name
//ޥ֥?λȡ񤭹߲ǽʥץѥƥ? Ȼפ
//ߡ֥Ȥ褦ˤ
//ץå󤫤饷פǤʤ餷
//˥ץåɾϥפѷʤ餷

Property
	value
	value_at_time(t)
	velocity
	velocity_at_time(t)
	speed
	speed_at_time(t)
	wiggle(freq, amp, octaves = 1, amp_mult = .5, t = time)
	temporal_wiggle(freq, amp, octaves = 1, amp_mult = .5, t = time)
	smooth(width = .2, samples = 5, t = time)
	loop_in(type = "cycle", num_keyframes = 0)
	loop_out(type = "cycle", num_keyframes = 0)
	loop_in_duration(type = "cycle", duration = 0)
	loop_out_duration(type = "cycle", duration = 0)
	key(index)
	key(marker_name)
	nearest_key(t)
	num_keys
//AEȼ֥Ȥ䥵֥֥ȻĥץѥƥΥꥹȡĤȻפ
//ϤصޤäƤΤȻפ

Key
	value
	time
	index

//ե졼४֥ȤĥץѥƥĤȻפ(Фä)
//ե졼ϥߥ󥰥֤ξȤäƤȻפɡ
//񤭹ߤϽʤƤ⤤ɤ߽ФϤƤۤˤ㤢ˤ㤴ˤ㤴

//	index ϥե졼४֥ȤΥǥåꥸ͡ 1 
//	value ϥμ̤ˤä󼡸Ѥ롣
//	time ϥ֤Ƥ.
*/
//٥ȥ黻
//Ϳ줿٥ȥμǤ¿Τ·­ʬ0ä֤
function preformvector(vec1,vec2){

	return [vec1,vec2]
}
//٥ȥ¤֤
function add(vec1,vec2) {
	if (typeof(vec1)=="number") {vec1=[vec1]}
	if (typeof(vec2)=="number") {vec2=[vec2]}
//٥ȥμ 󼡸ͼ
	var difD = (vec1.length - vec2.length)
	if (0 <= difD){
			var vecD = vec1.length;
	} else {	var vecD = vec2.length;}
//­0䤦
	if (difD > 0) {
		for (var idx = 0 ; idx > difD; idx --){
			vec2 = vec2.concat([0]);}}
	if (difD < 0) {
		for (var idx = 0 ; idx < difD; idx ++){
			vec1 = vec1.concat([0]);}}
	var vec3 = new Array
//¤֤
for (idx = 0;idx < vecD ; idx ++) {
 vec3 = vec3.concat([(vec1[idx] + vec2[idx])]);
}
return vec3;
}
//٥ȥ뺹֤
function sub(vec1,vec2) {
	if (typeof(vec1)=="number") {vec1=[vec1]}
	if (typeof(vec2)=="number") {vec2=[vec2]}
//٥ȥμ 󼡸ͼ
	var difD = (vec1.length - vec2.length)
	if (0 <= difD){
			var vecD = vec1.length;
	} else {	var vecD = vec2.length;}
//­0䤦
	if (difD > 0) {
		for (var idx = 0 ; idx > difD; idx --){
			vec2 = vec2.concat([0]);}}
	if (difD < 0) {
		for (var idx = 0 ; idx < difD; idx ++){
			vec1 = vec1.concat([0]);}}
	var vec3 = new Array
//֤
for (idx = 0;idx < vecD ; idx ++) {
 vec3 = vec3.concat([(vec1[idx] - vec2[idx])]);
}
return vec3;
}

//٥ȥѤ֤
function mul(vec,amount) {
	if (typeof(vec)=="number") {vec=[vec]}
//٥ȥμ 󼡸ͼ
	var vecD = (vec.length)
	var vecNew = new Array
//Ѥ֤
for (idx = 0;idx < vecD ; idx ++) {
 vecNew = vecNew.concat([(vec[idx] * amount)]);
}
return vecNew;
}

//٥ȥ뾦֤
function div(vec,amount) {
	if (typeof(vec)=="number") {vec=[vec]}
//٥ȥμ 󼡸ͼ
	var vecD = (vec.length)
	var vecNew = new Array
//֤
for (idx = 0;idx < vecD ; idx ++) {
 vecNew = vecNew.concat([(vec[idx] / amount)]);
}
return vecNew;
}


//٥ȥ륯
function clamp(vec, limit1, limit2) {
		var max=limit1;var min=limit2;
	if (limit1 < limit2){
		max=limit2;min=limit1;
}
	if (typeof(vec)=="number") {vec=[vec]}
//٥ȥμ 󼡸ͼ
	var vecD = (vec.length)
	var vecNew = new Array
//ǤȤͤ򥯥פ֤
for (idx = 0;idx < vecD ; idx ++) {
	if (vec[idx] >= min && vec[idx] <= max){
		vecNew = vecNew.concat([vec[idx]])
	}else {
		if (vec[idx] >= min ) {
			vecNew = vecNew.concat([max])
		}else{
			vecNew = vecNew.concat([min])
		}
	}
}
return vecNew;
}

//
function dot(vec1,vec2) {
	if (typeof(vec1)=="number") {vec1=[vec1]}
	if (typeof(vec2)=="number") {vec2=[vec2]}
//٥ȥμ 󼡸ͼ
	var difD = (vec1.length - vec2.length)
	if (0 <= difD){
			var vecD = vec1.length;
	} else {	var vecD = vec2.length;}
//­0䤦
	if (difD > 0) {
		for (var idx = 0 ; idx > difD; idx --){
			vec2 = vec2.concat([0]);}}
	if (difD < 0) {
		for (var idx = 0 ; idx < difD; idx ++){
			vec1 = vec1.concat([0]);}}
	var Result = 0;
//ǤȤѻ
	for (idx = 0;idx < vecD ; idx ++) {
		Result= Result + (vec1[idx] * vec2[idx])
	}
	return Result;
}

