if(!Array.indexOf){
	    Array.prototype.indexOf = function(obj){
	        for(var i=0; i<this.length; i++){
	            if(this[i]==obj){
	                return i;
	            }
	        }
	        return -1;
	    }
	}

if(!colorstream) var colorstream = {};


colorstream.submit = {};
colorstream.submit.origin = 'bookmarklet';
colorstream.submit.onLogin = function() {};
colorstream.submit.onCloseClick = function() { window.close(); }

colorstream.submit.form = {};
colorstream.submit.form.step = 0;
colorstream.submit.form.totalSteps = 3;
colorstream.submit.form.loadId = 0;

colorstream.submit.form.gallery = {};

colorstream.submit.html = {};
colorstream.submit.html.thanks = "<div class='thanks'><div class='content'><div class='header'><div class='submit_header'><h2>Thanks Rainbro!</h2><hr /><p>Check back to see if your submission was selected. Want to submit another image or video?</p></div></div><div class='nav'><div class='back'>Submit Another</div><div class='close'>Nah I&rsquo;m Good</div></div></div></div>";

colorstream.submit.embed = {};
colorstream.submit.embed.youtube = '<object width="187" height="150"><param name="movie" value="http://www.youtube.com/v/__ID__&hl=en_US&fs=1&"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/__ID__&hl=en_US&fs=1&" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="187" height="150"></embed></object>';

colorstream.submit.strings = {};
colorstream.submit.strings.url = "http://";
colorstream.submit.strings.title = "Title";

colorstream.submit.facebook_uid = -1;
colorstream.submit.form.isTermsClicked = true;

colorstream.submit.currentScreen = 'submission';

colorstream.submit.goToScreen = function($screen,$isSnapping) {
	if($screen != colorstream.submit.currentScreen) {
		var lastScreen = colorstream.submit.currentScreen;
		colorstream.submit.currentScreen = $screen;

		if(browser.indexOf('ie') > -1) $isSnapping = true;

		if(!$isSnapping) {
			$("#colorstream_submit_screens").children("." + lastScreen).fadeOut(200,function() {
				$("#colorstream_submit_screens").children("." + colorstream.submit.currentScreen).fadeIn(100);	
			})	
		}
		else {
			$("#colorstream_submit_screens").children("." + lastScreen).hide();
			$("#colorstream_submit_screens").children("." + colorstream.submit.currentScreen).show();
		}

		if(colorstream.submit.currentScreen == 'bookmarklet') $("#colorstream_submit_footer").hide();
		else $("#colorstream_submit_footer").show();
	}
}


// form
colorstream.submit.form.reset = function() {
	colorstream.submit.form.step = 0;
	colorstream.submit.form.gallery.current = -1;
	colorstream.submit.form.gallery.items = [];
	colorstream.submit.form.gallery.allItems = [];
	colorstream.submit.form.gallery.uncheckedItems = [];

	colorstream.submit.form.gallery.disable();

	$("#colorstream_submit input.url").attr("value",colorstream.submit.strings.url);
	$("#colorstream_submit input.title").attr("value",colorstream.submit.strings.title);
	$("#colorstream_submit_screens .submission #colorstream_submit_form_buttons").removeClass("active").addClass("inactive");	
	
	colorstream.submit.form.goToStep();
}


colorstream.submit.form.nextStep = function() {
	colorstream.submit.form.step++;
	if(colorstream.submit.form.step >= colorstream.submit.form.totalSteps) colorstream.submit.form.step = colorstream.submit.form.totalSteps-1;	
	colorstream.submit.form.goToStep();
}

colorstream.submit.form.prevStep = function() {
	colorstream.submit.form.step--;
	if(colorstream.submit.form.step < 0) colorstream.submit.form.step = 0;
	colorstream.submit.form.goToStep();
}


colorstream.submit.form.goToStep = function() {
	$("#colorstream_submit_screens .submission .form-field").hide();
	$("#colorstream_submit_screens .submission .form-field.step" + (colorstream.submit.form.step+1)).show();
	
	
	var a = [];
	switch(colorstream.submit.form.step)
	{
		case 0:
			a.push("continue");

			$("#colorstream_submit_thumbnail_gallery").show();
			$("#gallery_nav .wrapper").show();
		break;
		
		case 1:
			a.push("back");
			a.push("continue");

			nav = "<div class='back'>Back</div><div class='continue'>Continue</div>"

			$("#colorstream_submit_thumbnail_gallery").show();
			$("#gallery_nav .wrapper").hide();
		break;
		
		case 2:
			a.push("back");
			a.push("submit");

			$("#colorstream_submit_thumbnail_gallery").hide();
			$("#gallery_nav .wrapper").hide();
		break;
	}
	
	var strings = {};
	strings['back'] = "Back";	
	strings['continue'] = "Continue";	
	strings['submit'] = "Submit";	
	
	$("#colorstream_submit_screens .submission #colorstream_submit_form_buttons .container").html("");

	for(var i=0;i<a.length;i++) {
		$("#colorstream_submit_screens .submission #colorstream_submit_form_buttons .container").append("<div class='btn " + a[i] + "'>" + strings[a[i]] + "</div>");
	}

	$("#colorstream_submit #colorstream_submit_form_buttons .submit").click(function() {
		if($("#colorstream_submit_screens .submission #colorstream_submit_form_buttons").hasClass("active"))
		{
			var obj = {};
			obj.origin = colorstream.submit.origin;
			obj.type = colorstream.submit.form.gallery.items[colorstream.submit.form.gallery.current].type;
			obj.path = colorstream.submit.form.gallery.items[colorstream.submit.form.gallery.current].path;
			obj.author = colorstream.submit.facebook_uid;
			obj.title = $("#colorstream_submit input.title").attr("value") == colorstream.submit.strings.title ? "" : $("#colorstream_submit input.title").attr("value");

			$.post('/submit/process',obj,function(xml){
			},'xml');

			try { pageTracker._trackPageview(locale + "/submit/submission-complete/"); }
			catch(err) { }

			colorstream.submit.goToScreen("thanks");
			setTimeout(function() {colorstream.submit.form.reset(); },1000);	
		}
	});

	$("#colorstream_submit #colorstream_submit_form_buttons .continue").click(function() {
		if($("#colorstream_submit_screens .submission #colorstream_submit_form_buttons").hasClass("active")) {
			colorstream.submit.form.nextStep();
		}
	});

	$("#colorstream_submit #colorstream_submit_form_buttons .back").click(function() {
		colorstream.submit.form.prevStep();
	});


	var offset = 0;
	if(a.length == 3) offset = 35;
	else if(a.length == 2) offset = 82;
	else if(a.length == 1) offset = 129;



	$("#colorstream_submit_screens .submission #colorstream_submit_form_buttons .container").css("marginLeft",offset);
	colorstream.submit.form.validateStep();
}

colorstream.submit.form.validateStep = function() {
	var isStepValidated = false;

	switch(colorstream.submit.form.step)
	{
		case 0:
			isStepValidated = colorstream.submit.form.gallery.current != -1;
		break;
		
		case 1:
			isStepValidated = true;
		break;
		
		case 2:
			isStepValidated = (colorstream.submit.facebook_uid != -1 && colorstream.submit.form.isTermsClicked);
		break;
	}

	if(isStepValidated) $("#colorstream_submit_screens .submission #colorstream_submit_form_buttons").removeClass("inactive").addClass("active");
	else $("#colorstream_submit_screens .submission #colorstream_submit_form_buttons").removeClass("active").addClass("inactive");
}

// gallery
colorstream.submit.form.gallery.disable = function() {
	colorstream.submit.form.gallery.current = -1;
	$("#colorstream_submit_thumbnail_gallery").removeClass("active").addClass("inactive");
	$("#colorstream_submit_thumbnail_gallery .next").unbind("click");
	$("#colorstream_submit_thumbnail_gallery .prev").unbind("click");
	$("#colorstream_submit_thumbnail_gallery .thumbnail").html("<img src='/img/submit/form/placeholder.jpg' />");	
}

colorstream.submit.form.gallery.enable = function() {
	$("#colorstream_submit_thumbnail_gallery").removeClass("inactive").addClass("active");
	$("#colorstream_submit_thumbnail_gallery .next").bind("click",colorstream.submit.form.gallery.next);
	$("#colorstream_submit_thumbnail_gallery .prev").bind("click",colorstream.submit.form.gallery.prev);		
}


colorstream.submit.form.gallery.next = function() {
	if(colorstream.submit.form.gallery.current < colorstream.submit.form.gallery.items.length-1)	{
		colorstream.submit.form.gallery.current++;
		colorstream.submit.form.gallery.load();
	}
}

colorstream.submit.form.gallery.prev = function() {
	if(colorstream.submit.form.gallery.current > 0)	{
		colorstream.submit.form.gallery.current--;
		colorstream.submit.form.gallery.load();
	}
}

colorstream.submit.form.gallery.requestImages = function() {
	var url = $("#colorstream_submit input.url").attr("value").split(" ").join("");
	if(url != '' && url != 'http://') {
		if(url.indexOf('http://') == -1) url = 'http://' + url;
	

		colorstream.submit.form.gallery.disable();
		colorstream.submit.form.validateStep();

		colorstream.submit.form.loadId++;
		$("#colorstream_submit_thumbnail_gallery .thumbnail").html("<img src='/img/submit/form/loading.jpg' />");	
		
		$.post('/submit/get/',{ urlRequested: url },function(xml){
			if(true) {	
				colorstream.submit.form.gallery.xml = xml;
				colorstream.submit.form.gallery.current = 0;
				colorstream.submit.form.gallery.items = [];
				colorstream.submit.form.gallery.allItems = [];
				colorstream.submit.form.gallery.uncheckedItems = [];

				var paths = [];
				var count = 0;

				$(colorstream.submit.form.gallery.xml).children().children().each(function(i) {
					var item = $(colorstream.submit.form.gallery.xml).children().children()[i];
					var src =  unescape($(item).attr('src'));

					if(paths.indexOf(src) < 0) {
						var obj = {};							
						obj.type = $(item).attr('type');
						obj.path = src;
						obj.origin = url;					
						obj.loadIndex = count;
	
						colorstream.submit.form.gallery.allItems.push(obj);
						colorstream.submit.form.gallery.uncheckedItems.push(obj);
						
						paths.push(src);
						count++;
					}
				});
				
				colorstream.submit.form.gallery.checkItems();
			}
			else {
				$("#colorstream_submit_thumbnail_gallery .thumbnail").html("<img src='/img/submit/form/error_url.jpg' />");	
				$("#colorstream_submit_thumbnail_gallery").removeClass("active").addClass("inactive");
			}
			
		},'xml');
	}
}


colorstream.submit.form.gallery.checkItems = function() {
	if(colorstream.submit.form.gallery.allItems.length > 0) {
		for(var i=0;i<colorstream.submit.form.gallery.allItems.length;i++) {
			var obj = colorstream.submit.form.gallery.allItems[i];

			switch(obj.type)
			{
				case 'image':
					var img = new Image();
		
					img.onload = function() {
						this.onload = null;
						this.onerror = null;	
						this.onabort = null;

						if(this.loadId == colorstream.submit.form.loadId)
						{
							var obj = colorstream.submit.form.gallery.allItems[this.loadIndex];

							if(this.width >= 150 && this.height >= 150)
							{
								obj.html = this;
								colorstream.submit.form.gallery.items.push(obj);
							}

							colorstream.submit.form.gallery.itemChecked(obj);
						}						
					}
						
					img.onabort = img.onerror = function() {
						this.onload = null;
						this.onerror = null;	
						this.onabort = null;
						this.loaded = true;
						
						if(this.loadId == colorstream.submit.form.loadId) {
							var obj = colorstream.submit.form.gallery.allItems[this.loadIndex];
							colorstream.submit.form.gallery.itemChecked(obj);
						}
					}
		
					img.loadId = colorstream.submit.form.loadId;
					img.loadIndex = obj.loadIndex;
					img.src = obj.path;
				break;
				
				case 'youtube':
					obj.html = colorstream.submit.embed.youtube;
					obj.html = obj.html.split("__ID__").join(obj.path);
					colorstream.submit.form.gallery.items.push(obj);
					
					colorstream.submit.form.gallery.itemChecked(obj);
				break;
			}		
		}
	}
	else {
		colorstream.submit.form.gallery.checkItemsComplete();
	}
}

colorstream.submit.form.gallery.checkItemsComplete = function() {
	if(colorstream.submit.form.gallery.items.length > 1) {
		colorstream.submit.form.gallery.enable();
		colorstream.submit.form.gallery.load();
	}
	else if(colorstream.submit.form.gallery.items.length == 1) {
		colorstream.submit.form.gallery.load();
	}
	else {
		$("#colorstream_submit_thumbnail_gallery .thumbnail").html("<img src='/img/submit/form/error_noimages.jpg' />");	
	}	
}

colorstream.submit.form.gallery.itemChecked = function(loadedItem) {
	var uncheckedIndex = colorstream.submit.form.gallery.uncheckedItems.indexOf(loadedItem);
	if(uncheckedIndex > -1) colorstream.submit.form.gallery.uncheckedItems.splice(uncheckedIndex,1);

	if(colorstream.submit.form.gallery.uncheckedItems.length == 0) colorstream.submit.form.gallery.checkItemsComplete();
}

colorstream.submit.form.gallery.load = function() {
	var obj = colorstream.submit.form.gallery.items[colorstream.submit.form.gallery.current];
	
	switch(obj.type)
	{
	
		case 'image':
			if(!obj.isResized) {
				obj.isResized = true;

				if(obj.html.width > colorstream.submit.form.gallery.maxWidth || obj.html.height > colorstream.submit.form.gallery.maxHeight) {
					var ratio = 1;
	
					if(obj.html.width > obj.html.height) ratio = colorstream.submit.form.gallery.maxWidth/obj.html.width
					else ratio = colorstream.submit.form.gallery.maxHeight/obj.html.height;

					obj.html.width = obj.html.width * ratio;
					obj.html.height = obj.html.height * ratio;	
					
					if(obj.html.width > obj.html.height && obj.html.height > colorstream.submit.form.gallery.maxHeight) {
						ratio = colorstream.submit.form.gallery.maxHeight/obj.html.height;
						obj.html.width = obj.html.width * ratio;
						obj.html.height = obj.html.height * ratio;								
					}
					else if(obj.html.height > obj.html.width && obj.html.width > colorstream.submit.form.gallery.maxWidth) {
						ratio = colorstream.submit.form.gallery.maxWidth/obj.html.width;
						obj.html.width = obj.html.width * ratio;
						obj.html.height = obj.html.height * ratio;	
					}
				}
			}
		break;
	}

	$("#colorstream_submit_thumbnail_gallery .thumbnail").html("").append(obj.html);				
	colorstream.submit.form.validateStep();
}

colorstream.submit.form.login = function() {  
	$(".fb-login .not-logged-in").unbind("click");

	colorstream.submit.facebook_uid = FB.getUserID();
	colorstream.submit.form.isTermsClicked = true;

	colorstream.submit.onLogin();
	
	$(".fb-login .fb-state").removeClass("not-logged-in").addClass("logged-in").html("<h5>You're connected!</h5><div class='fb-terms'><div class='checkbox active'></div><div class='txt'>By checking this box you agree to the</div><div class='link'>Terms and Conditions</div></div>");

	$("#colorstream_submit .submission .form-field .fb-login .logged-in .fb-terms .checkbox").click(function() {
		colorstream.submit.form.isTermsClicked = !colorstream.submit.form.isTermsClicked;
		if(colorstream.submit.form.isTermsClicked) {
			var remove = "inactive";
			var add = "active";
		}
		else {
			var remove = "active";
			var add = "inactive";
		}
		
		$("#colorstream_submit .submission .form-field .fb-login .logged-in .fb-terms .checkbox").removeClass(remove).addClass(add);
		colorstream.submit.form.validateStep();
	});

	$("#colorstream_submit .submission .form-field .fb-login .logged-in .fb-terms .link").click(function() {
		 window.open("/terms",'skittlesTerms');
	});

	colorstream.submit.form.validateStep();
}

colorstream.submit.form.logout = function() {
	facebookApi.logout();
	$(".fb-login .fb-state").removeClass("logged-in").addClass("not-logged-in").html("");
	$(".fb-login .not-logged-in").bind("click",function() {
		facebookApi.login(colorstream.submit.form.login,function() {});
	});


	colorstream.submit.facebook_uid = -1
	colorstream.submit.form.isTermsClicked = true;

	colorstream.submit.form.validateStep();
}


// jk: init
colorstream.submit.init = function() {

	$("#colorstream_submit_screens").append(colorstream.submit.html.thanks);	

	colorstream.submit.form.gallery.current = -1;
	colorstream.submit.form.gallery.maxWidth = 173;
	colorstream.submit.form.gallery.maxHeight = 130;

	colorstream.submit.form.gallery.disable();
	colorstream.submit.form.gallery.requestImages();

	$("#colorstream_submit_screens .thanks").hide();
	$("#colorstream_submit_screens .bookmarklet").hide();
//	$("#colorstream_submit_screens .submission").hide();


	colorstream.submit.form.goToStep();

	// jk: fb connect
	$(".fb-login .not-logged-in").bind("click",function() {
		facebookApi.login(colorstream.submit.form.login,function() {});
	});

	$("#colorstream_submit input").focus(function(input) {
		var value = $(this).attr('value').split(" ").join("");
		var name = $(this).attr('name');
	
		if(name != 'url') {
			if(value.toLowerCase() == colorstream.submit.strings[name].toLowerCase()) $(this).attr('value','');
		}
	});
	
	$("#colorstream_submit input").blur(function(input) {
	
		var value = $(this).attr('value').split(" ").join("");
		var name = $(this).attr('name');
		
		if(name != 'url') {
			if(value == '') $(this).attr('value',colorstream.submit.strings[name]);
		}
		
		colorstream.submit.form.validateStep();
	});
	
	$("#colorstream_submit .refresh").click(function() {
		colorstream.submit.form.gallery.requestImages();
	});
	
	// jk: bookmarklet button
	$("#colorstream_submit_footer .btn").click(function() { 
		colorstream.submit.goToScreen("bookmarklet"); 
	});
	
	// jk: back button
	$("#colorstream_submit .back").click(function() {
		colorstream.submit.goToScreen("submission");
	});
	
	// jk: close button
	$("#colorstream_submit .close").click(function() {
		colorstream.submit.onCloseClick();
	});	
}


jQuery(document).ready(function($)
{
	facebookApi.initialize({scope:'read_stream,publish_stream,offline_access'});
	colorstream.submit.init();
});
