$(document).ready(function() {
	
	BASEURL = 'http://15s.viddler.com/';
	//BASEURL = 'http://the-pearl.local:8888/viddler/15seconds/';
	$('.hide').hide(); // Hide DIVs
	$('.go').click(function(e){
		e.preventDefault;
		$('#recorder').html('');
		$('#recorder').hide();
		go();
	});
	
	$('#step1 form').submit(function(){step2(); return false;});
	$('#loginViddler form').submit(function(){loginViddler(); return false;});
	$('#twitter form').submit(function(){twitter(); return false;});
	
	$('#twitter input[value=Skip]').click(function(){location.href = BASEURL+'?m=Success'; return false;});
	
	
	$('.videoreply_link').fancyZoom({directory:BASEURL+'images/fancyzoom/'});
});

function step2() {
	$('#step1').hide();
	
	// Determine step 2
		
		// If logged into Viddler already, skip #loginViddler
		var viddlerUsername = get_cookie('v15username');
		var viddlerPassword = get_cookie('v15password');
		
		if (viddlerUsername) {
			$('#viddlerUsername').val(viddlerUsername);
			$('#viddlerPassword').val(viddlerPassword);
			loginViddler();
		} else {
			$('#loginViddler').show();
		}
}

function loginViddler() {

	viddlerUsername = $('#viddlerUsername').val();
	viddlerPassword = $('#viddlerPassword').val();
	
	// Remember for 24 hours?
	if ($('#viddlerRemember').is(':checked')) {
  		remember = 'Y';
	} else {
		remember = 'N';
	}
	
	args = "username="+viddlerUsername+"&password="+viddlerPassword;
	
	$.ajax({
			url: BASEURL+'php/gateway.php',
			type: 'GET',
			data: 'a=session&'+args,
			dataType: 'text',
			timeout: 2500,
			error: function() {
				// Login failed
			},
			success: function(userresponse){
				if (userresponse != 'error' && userresponse != 'error username' && userresponse != 'error email') {
				
					respParts = new Array();	
					respParts = userresponse.split("_");
					
					sessionid = respParts[0];
					recordToken = respParts[1];
					
					// Create cookies, cuz cookies are nummy nums.
					var cookiedate = new Date();
					var expdate = cookiedate.getTime();
					if (remember == 'Y') {
						expdate += 86400*1000; // expires in one day
					} else {
						expdate += 60*1000; // in a few minutes
					}
					cookiedate.setTime(expdate);
					document.cookie = "v15sessionid="+sessionid+";path=/;expires=" + cookiedate.toGMTString();
					document.cookie = "v15username="+viddlerUsername+";path=/;expires=" + cookiedate.toGMTString();
					document.cookie = "v15password="+viddlerPassword+";path=/;expires=" + cookiedate.toGMTString();
					document.cookie = "v15recordtoken="+recordToken+";path=/;expires=" + cookiedate.toGMTString();
					
					// Hide Viddler login form
					$('#loginViddler').hide();
					
					// Show recorder
					$('#recorder').html('<h3><span class="step">Step 3:</span> Record a 15second video! <span class="step">with your Webcam</span></h3> <div id="therecorder" class="flash-content"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="400" height="380" id="viddler_recorder" align="middle"><param name="allowScriptAccess" value="always" /><param name="allowNetworking" value="all" /><param name="recQuality" value="H" /><param name="maxlength" value="15" /><param name="movie" value="http://cdn-ll-static.viddler.com/flash/recorder.swf" /><param name="quality" value="high" /><param name="scale" value="noScale"><param name="bgcolor" value="#000000" /><param name="flashvars" value="fake=1&recordToken='+recordToken+'" /><embed src="http://cdn-ll-static.viddler.com/flash/recorder.swf" quality="high" scale="noScale" bgcolor="#000000" recQuality="H" maxlength="15" allowScriptAccess="always" allowNetworking="all" width="400" height="380" name="viddler_recorder" flashvars="recQuality=H&maxlength=15&fake=1&recordToken='+recordToken+'" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object></div> <p>Hit \'Save\' when finished.</p>');
					
					$('#recorder').show();
					
										
				  } else {
				  	
				  	// Error
				  	$('#loginViddler').prepend('<p class="error">Username and password is incorrect.</p>');
					
				  }
			   
			}});

}

function twitter() {
	
	var twitterUsername = get_cookie('v15Tusername');
	var twitterPassword = get_cookie('v15Tpassword');
	
	if (twitterUsername) {
		$('#twitterUsername').val(twitterUsername);
		$('#twitterPassword').val(twitterPassword);
	}
	
	twitterUsername = $('#twitterUsername').val();
	twitterPassword = $('#twitterPassword').val();
	twitterText = $('#twitterText').val();
	
	twitterText = twitterText.replace("#","%23");
	
	// Remember for 24 hours?
	if ($('#twitterRemember').is(':checked')) {
  		remember = 'Y';
	} else {
		remember = 'N';
	}
	
	args = "username="+twitterUsername+"&password="+twitterPassword+'&text='+twitterText;
	
	$.ajax({
			url: BASEURL+'php/gateway.php',
			type: 'GET',
			data: 'a=twitter&'+args,
			dataType: 'text',
			timeout: 2500,
			error: function() {
				// Login failed
			},
			success: function(twitterresponse){
				if (twitterresponse != 'error') {
					
					// Refresh the entire page.
					$('#twitter').hide();
					
					// Create cookies, cuz cookies are nummy nums.
					var cookiedate = new Date();
					var expdate = cookiedate.getTime();
					if (remember == 'Y') {
						expdate += 86400*1000; // expires in one day
					} else {
						expdate += 60*1000; // in a few minutes
					}
					cookiedate.setTime(expdate);
					document.cookie = "v15Tusername="+twitterUsername+";path=/;expires=" + cookiedate.toGMTString();
					document.cookie = "v15Tpassword="+twitterPassword+";path=/;expires=" + cookiedate.toGMTString();				
					
					// Back to home page.
					location.href = BASEURL+'?m=SuccessT';
										
				  } else {
				  	
				  	// Error
				  	$('#twitter').prepend('<p class="error">Username and password is incorrect.</p>');
					
				  }
			   
			}});
}

// Recording is done
function recordDone(u,uvn,vid) {

	// Get the videos details that we have.
	title = $('#vidTitle').val();
	tags = $('#vidTags').val();
	description = $('#vidDescription').val();
	
	vidReply = $('#viddlerReply').val();
	vidReplyUser = $('#viddlerReplyUser').val();
	
	// Construct video URL
	if (vidReply) {
		videoUrl = BASEURL+vidReplyUser+'/'+vidReply+'/#'+vid;
		
		description = urlencode('<a href="'+videoUrl+'" class="replylink" title="In reply to '+vidReplyUser+'">In reply to '+vidReplyUser+'</a>: '+description);
		
		// Machine tag for reply
		tags ='15seconds:replyTo='+vidReply;
		
	} else {
		videoUrl = BASEURL+u+'/'+vid+'/';
	}
	
	// Construct tags
	tags += ',15seconds';
		
	// Filters
	description = description.replace("#","%23");
	
	// Throw in some default values
	setVideoInfo(vid,'15 seconds on Viddler',description,tags);
	
	// Remove the recorder
	$('#recorder object').remove();
	$('#recorder').hide();
	
	var twitterUsername = get_cookie('v15Tusername');
	var twitterPassword = get_cookie('v15Tpassword');
	
	if (twitterUsername) {
		$('#twitterUsername').val(twitterUsername);
		$('#twitterPassword').val(twitterPassword);
	}

	$('#twitterText').val($('#vidDescription').val()+' '+videoUrl);
	
	$('#twitter').show();
}

function recordStarted() {}

// Updates/edits video information
function setVideoInfo(vid,title,description,tags) {
	
	var sessionid = get_cookie('v15sessionid');
	var gw = BASEURL+'php/gateway.php';
	
	$.ajax({
		url: gw,
		type: 'GET',
		data: 'a=setDetails&sessionid='+sessionid+'&video_id='+vid+'&title='+title+'&description='+description+'&tags='+tags,
		dataType: 'text',
		timeout: 5000,
		error: function(){
			// Error
			$('#recorder').html('Viddler\'s API is currently too busy to save the video information. Please refresh the site.');
		},
		success: function(response){
			if (response == 'success') {
			  
			} else {
				// Error
				$('#recorder').html('There was an error while trying to save the video\'s details.');
			}
		}});
}

function saveVideo() {
	
	vid = $('#vid').val();
	title = $('#vidTitle').val();
	tags = $('#vidTags').val();
	description = '';
	
	setVideoInfo(vid,title,description,tags);
	
	$('#edit').hide();
	
	// Refresh recent? Show Twitter?
	
}

function get_cookie (cookie_name) {
  var results = document.cookie.match ( '(^|;) ?' + cookie_name + '=([^;]*)(;|$)' );

  if ( results )
    return ( unescape ( results[2] ) );
  else
    return null;
}

function urlencode( str ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philip Peterson
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +      input by: AJ
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // %          note: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/
    // *     example 1: urlencode('Kevin van Zonneveld!');
    // *     returns 1: 'Kevin+van+Zonneveld%21'
    // *     example 2: urlencode('http://kevin.vanzonneveld.net/');
    // *     returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
    // *     example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
    // *     returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'
                                     
    var histogram = {}, histogram_r = {}, code = 0, tmp_arr = [];
    var ret = str.toString();
    
    // The histogram is identical to the one in urldecode.
    histogram['!']   = '%21';
    histogram['%20'] = '+';
    
    // Begin with encodeURIComponent, which most resembles PHP's encoding functions
    ret = encodeURIComponent(ret);
    
    for (search in histogram) {
        replace = histogram[search];
        tmp_arr = ret.split(search); // Custom replace
        ret = tmp_arr.join(replace); 
    }
    
    // Uppercase for full PHP compatibility
    return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
        return "%"+m2.toUpperCase();
    });
    
    return ret;
}