﻿// JavaScript Document
$(document).ready(function(){
	// UI block
	$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);
	
	// Mask zip
	$('#zip').numeric();
	
	// Handle player
	$('#mp3').jmp3({
				   filepath: 'https://t-set.s3.amazonaws.com/music/preview.mp3',
				    backcolor: "656565",
					forecolor: "8EBA47",
					width: '100%',
					showdownload: 'true',
					autoplay: 'true',
					showdownload: 'false',
					showfilename: 'false'
				   });
	
	// Init dialog
	$('#dialog').dialog({
		autoOpen: false,
		title: 'Napaka',
		modal: true,
		width: 500
	});
	
	// Error reporting
	function error(xhr, destination)
	{
		var url = '/_ajax/error';
		var time = new Date().getTime();
		
		$.post(url, {url: destination, statusCode: xhr.status, statusMsg: xhr.statusText, time: time}, function(){													 
			// Show error dialog
			$('#dialog').load(url).dialog('open');
		});
	}
	
	// Order validation
	$("#formOrder").validationEngine();	

	// Handle add order
	$('#btnOrder').bind('click', function(){
		var url = '/_ajax/add_order';
		var valid = $('#formOrder').validationEngine({returnIsValid:true});
		var panel = $(this).parents('#order');
		
		if(valid)
		{
			// Data
			var first_name = $('#first_name').val();
			var last_name = $('#last_name').val();
			var address = $('#address').val();
			var zip_id = $('#zip').attr('title');
			var email = $('#email').val();
			var qty = $('#qty').val();
			var data = 'first_name=' + first_name + '&last_name=' + last_name + '&address=' + address + '&zip_id=' + zip_id + '&email=' + email + '&qty=' + qty;
			
			$.ajax({
				type: 'POST',
				url: url,
				data: data,
				success: function(d){
					if(d == 1)
					{
					
					// Publish to stream
					var attachment = {
										name: 'T-set',
										href: 'http://t-set.com',
										description: 'Nakup zgoščenke T-set',
										attachment: {
												'type': 'image',
												'src': 'http://t-set.com/public/images/cover.jpg',
												'href': 'http://t-set.com'
										}
									};
					var action_link = '';
					var message = 'je naredil dobro delo slovenskemu hip hopu, z nakupom novega T-set cd-ja :)';
					
					FB.Connect.streamPublish(message, attachment, action_link);
					
						panel.fadeOut(300).html('<div id="orderInfo"><h2>Naročilo oddano</h2><div class="transparent"><p>Vaše naročilo je bilo uspešno sprejeto. Na vaš elektronski naslov smo vam poslali ključ s katerim boste potrdili, verodostojnost vašega naročila. Prosimo preverite tudi vaš predal nezaželjene pošte.</p> <p>V primeru, da ključa niste prejeli nam prosimo <a href="mailto: info@t-set.net">pišite na podporo</a> in nam sporočite vaše ime in priimek.</p><p>Zahvaljujemo se vam za nakup in podporo!</p></div></div>').fadeIn(300).delay(5000).slideUp(300);
					} else {
						$('#dialog').html(d).dialog('open');
					}
				},
				error: function(xhr, ajaxOptions, thrownError){
					error(xhr, url);
				}
			});
		}
		
		return false;						
	});

	// Handle zip search
	$('#zip').keyup(function(){
		var url = '/_ajax/get_zip';
		var zip = $(this).val();
		var data = 'zip=' + zip;
		
		if(zip.length > 3)
		{
			$('#city').attr('value', 'Iscem kraj...');
			
			$.ajax({
				type: 'POST',
				url: url,
				data: data,
				dataType: 'json',
				success: function(json){
					$('#zip').attr('title', json.id);
					$('#city').attr('value', json.city);
				},
				error: function(xhr, ajaxOptions, thrownError){
					error(xhr, url);
				}
			});
		}
	});
	
	// Handle price update
	function update_price()
	{
		var cdPrice = 10;
		var qty = $('#qty').val();
		var total = cdPrice * qty;
		
		$('#total').html(total).fadeIn(300);
	}
	
	$('#qty').change(function(){
			update_price();				   
	});
	
	// Force update on reload
	update_price();

	// Show order form
	$('#btnBuy').click(function(){
		$('#ajaxOrder').slideToggle('slow');
		
		return false;
	});

	// Facebook
	function init()
	{	
		// Set user status
		$('#status').html('<p>Pozdravljen, <fb:name uid="loggedinuser" useyou="false" linked="false"></fb:name> <a href="#" id="logout">Izpiši se</a></p>');
											
		// Change comment form
		$('#uInfo').html('<p><fb:name uid="loggedinuser" useyou="false"></fb:name>, vpiši komentar</p>');
		$('#uComment').html('<textarea cols="10" rows="10" id="userComment"></textarea><button id="btnComment">Dodaj</button> objavi na moji steni <input type="checkbox" name="publishStream" id="publishStream" />');
		
		// Get uid of loggedin user
		var uid = FB.Connect.get_loggedInUser();
		
		// Populate first and last name order form field
		FB.Facebook.apiClient.fql_query('SELECT first_name, last_name FROM user WHERE uid = ' + uid, function(rows){
											$('#first_name').val(rows[0].first_name);
											$('#last_name').val(rows[0].last_name);
										});
		
		// Parse DOM and render all FBML tags
		FB.XFBML.Host.parseDomTree();
	}
	
	// Handle add comment
	$('#btnComment').live('click', function(){
		var url = '/_ajax/add_comment';
		var uid = FB.Connect.get_loggedInUser();
		var full_name = $('#uInfo p a').text();
		var message = $('#userComment').val();
		var profile_pic = escape($(this).parents('.container').children('.userPicture').children().children('a').children().attr('src'));
		var data = 'uid=' + uid + '&full_name=' + full_name + '&profile_pic=' + profile_pic + '&message=' + message;
	
		// Check that comment is not empty
		if(message.length > 2)
		{
			// Add comment to db
			$.ajax({
				type: 'POST',
				url: url,
				data: data,
				dataType: 'html',
				success: function(d){
					// Return comment
					$('#ajaxComment').append(d).fadeIn('slow');
					
					
					// Publish to stream
					if($('#publishStream').attr('checked'))
					{
						var attachment = {
											name: 'T-set',
											href: 'http://t-set.com',
											description: 'Nov komentar'
										};
						var action_link = '';
						
						FB.Connect.streamPublish(message, attachment, action_link);
					}
					
					// Clear comment textarea
					$('#userComment').val('');
				},
				error: function(xhr, ajaxOptions, thrownError){
					error(xhr, url);
				}
			});
		} else {
			$('#dialog').html('<p>Prosimo vpišite svoj komentar</p>').dialog('open');
		}
		
		return false;
	});
		
	// FB Logout
	$('#logout').live('click', function(){
		 FB.Connect.logout(function(){
			// Revert to login elements
			$('#status').html('');
			$('#uInfo').html('<h3>Za komentiranje moraš biti vpisan</h3>');
			$('#uComment').html('<fb:login-button></fb:login-button>');
			$('.userPicture').html('<fb:profile-pic uid="loggedinuser" facebook-logo="true" size="q"></fb:profile-pic>');
			
			// Parse DOM and render FBML tags
			FB.XFBML.Host.parseDomTree();
		}); 
		 
		 return false;
	});
	
	// Initialize FBC
	// Run init if user loggedin
	FB.init('1205846fd7af06a958f468e64cf1e0b4', 'xd_receiver.htm', {'ifUserConnected': init});
});