/*
  Copyright 2009 Stanziq, Inc.
*/

Peeq.ClientView.prototype = {

    init: function() {

	jQuery(document).bind('peeq_reconnect',clientview.reconnect);
	jQuery(document).bind('peeq_connected',clientview.setConnected);
	jQuery(document).bind('peeq_disconnected',clientview.disconnected);
	jQuery(document).bind('peeq_disconnecting',clientview.disconnecting);
	jQuery(document).bind('peeq_connection_fail',clientview.connFail);
	jQuery(document).bind('peeq_new_message',clientview.handleMessage);
	jQuery(document).bind('peeq_exit',clientview.unload);
	jQuery(document).bind('peeq_unsubscribed',clientview.unsubscribed);
	jQuery(document).bind('peeq_subscribed',clientview.subscribed);
	jQuery(document).bind('peeq_error',clientview.error)
	
	$("#disconnect").click(function() {
	    Peeq.unload();
	});

	$("#reconnect").click(function() {
	    //reload the window
	    window.location.reload();
	});

	// hide results counter
	$("#container-footer").hide();
    
	// begins clock 
	setTimeout(clientview.clock,0);
	setInterval(clientview.clock,1000);
	    
	$("#search-area").keypress( function (key) {
	    if(key.which == 13)
	    {
		clientview.itemView.resetSearch(true);
		var keywords = $("#search-area").attr("value");
		Peeq.searchSubscribe(keywords);			
	    }
	});

	$("p#submit input").click(function(){
	    //subscribe to a new search node
	    clientview.itemView.resetSearch(true);
	    var keywords = $("#search-area").attr("value");
	    Peeq.searchSubscribe(keywords);
		
	});
	
	$('#reconnect_app').click(function() {
	    app.reconnect();
	});

	var temp_header = ""; 
	
	$("#pause").click(function()
	{
	    Peeq.searchUnSubscribe();
	    $("#clock-wrapper").addClass("paused"); 
	    $("#loader").hide();
	    temp_header = $("#container-header h4").text();
	    $("#container-header h4").text("Results are currently paused.");
	    $("#pause").hide();
	    $("#play").show();
	    
	});
	$("#play").click(function() {

	    $("#loader").show();
	    $("#play").hide();
	    $("#pause").show();
	    $("#clock-wrapper").removeClass("paused");
	    var keywords = $("#search-area").attr("value");
	    Peeq.searchSubscribe(keywords);
	    $("#container-header h4").text("results in real time!");
	    
	});
	var query = window.location.search.substring(1);
	
	var parms = query.split('&');
	for (i=0;i<parms.length;i++)
	{
	    keyvals = parms[i].split('=');
	    if ((keyvals.length > 0) && (keyvals[0] == 'q'))
	    {
		$("#search-area").attr("value",unescape(keyvals[1]));
	    }
	}

	if($("#search-area").attr("value"))
	{
	    Peeq.start_sub = true;
	}

    },
    reconnect: function(event,data) {
	if($("#search-area").attr("value") && $("#play").css("display") == 'none')
	{
	    Peeq.start_sub = true;
	}

    },
    setConnected: function(event,data) {
	
	clientview.reconnectView.reset();
	
	if(Peeq.start_sub)
	{
	    //subscribe to a new search node
	    clientview.itemView.resetSearch(false);
	    $("#play").click();
	}
	$("#reconnect_message").hide();
	$("#reconnect").hide();
	$("#disconnect").show();

    },
    disconnected: function(event,data) {
	$("#disconnect").hide();
	$("#reconnect").show();
	clientview.reconnectView.reconnectWithTimer();
    },
    disconnecting: function(event,data) {
	clientview.reconnectView.reconnectWithTimer();
    },
    connFail: function(event,xmpp_error_message) {
	var timestamp = $("p#clock").text();
	var error_html = $('#xmpp_error').clone();
	error_html.find('.result-info').html(xmpp_error_message+"<br/><br/><br/>");
	error_html.show();
	$("#published_items").empty();
	$("#published_items").prepend(error_html);

    },
    handleMessage: function(event,stanza) {
	clientview.itemView.displayItem(stanza);
    },
    unload: function(data) {
	$("#loader").hide();	
    },
    unsubscribed: function(event,data) {
	$("#pause").hide();
	$("#play").show();
    },
    subscribed: function(event,data) {
	$("#pause").show();
	$("#play").hide();
	
    },
    error: function(event,msg) {
	var error_html = $('#xmpp_error').clone();
	error_html.find('.result-info').html(msg+"<br/><br/><br/>");
	error_html.show();
	$("#published_items").empty();
	$("#published_items").prepend(error_html);
    },
    clock: function()
    {
	var date = new Date();
	
	if(date.getHours() < 12)
	{
	    var hour = date.getHours();
	    var am_pm = "AM";
	}
	else if(date.getHours() == 12)
	{
	    var hour = date.getHours();
	    var am_pm = "PM";
	}
	else 
	{
	    var hour = date.getHours() - 12;
	    var am_pm = "PM";
	}
	
	if(date.getMinutes() < 10)  { var minutes = "0" + date.getMinutes(); }
	else
	{ var minutes = date.getMinutes(); }
	
	if(date.getSeconds() < 10)  { var seconds = "0" + date.getSeconds(); }
	else
	{ var seconds = date.getSeconds(); }
	
	var current_time = hour + ":" + minutes + ":" + seconds + " " + am_pm;
	
	$("#clock").text(current_time);
    }

};
