(function($){

    function loadContent(hash) {
        if(hash != "") {
            hash = $.getBaseUrl();
            var params = $.getUrlVars();
            var paramStr = '?';
            for ( var i in params )
            {
                paramStr += params[i];
                
                if (i==0||i%2) { paramStr += '='; }
                else { paramStr += '&'; }

            }
            paramStr = paramStr.substring(0, paramStr.length - 1);

            $('#scrollContainer').load(hash + ".php" + paramStr);
        } else {
            $('#scrollContainer').load("explore.php");
        }	
    }
    
    function loginCallback(data){
    	if(data.data.login==true){
    		window.location.reload();
    	}else{
    		$( "#loginMsg" ).empty();
    		$( "#loginMsg" ).html('Login Faild');
    	}
    }
    function ajaxLogin(){
    	var username= $('#signInEmail').val();
    	var password= $('#password').val();
    	var dataInput	= 'email='+username+'&userpwd='+password;
    	var url	= wflz.secureRoot+'api/User/signin/v0.8';
    	$.ajax({
    		type: 'POST',
    		url: url,
    		cache: false,
    		dataType: "json",
    		data: dataInput,
    		success: loginCallback,
    		error: function(e, xhr){
    			}
    		});
    }
    function registerCallback(data){
    	$( "#regErrorMsg" ).empty();
    	$( "#regErrorMsg" ).html(data.data.errMsg);
    }
    function ajaxRegister(){
    	var email		= $('#email').val();
    	var signuppass	= $('#signuppass').val();
    	var verifypass	= $('#verifypass').val();
    	var update_list =$('input[name=update_list]').is(':checked')?1:0;
    	var mailing_list =$('input[name=mailing_list]').is(':checked')?1:0;

    	var errorMsg	= '';
    	if(email==''){
    		errorMsg	+="Email Required<BR>";
    	}
    	if(signuppass==''){
    		errorMsg+="Password Required<BR>";
    	}else if(signuppass.length<4){
    		errorMsg+="Password should contain atleast 4 letters.<BR>";
    	}
    	if(signuppass!=verifypass){
    		errorMsg+="Password and verify password should be same<BR>";
    	}	
    	if(errorMsg!=''){
    		$( "#regErrorMsg" ).empty();
    		$( "#regErrorMsg" ).html(errorMsg);
    		return false;
    	}else{
    		var dataInput	= 'email='+email+'&userpwd='+signuppass+'&update_list='+update_list+'&mailing_list='+mailing_list;
    		var url	= wflz.secureRoot+'api/User/signup/v0.8';
    		$.ajax({
    			type: 'POST',
    			url: url,
    			cache: false,
    			dataType: "json",
    			data: dataInput,
    			success: registerCallback,
    			error: function(e, xhr){
    				}
    		});
    	}
    	
    }
    function fogetPassCallback(data){
    	$( "#regErrorMsg" ).empty();
    	$( "#regErrorMsg" ).html(data.data.errorMsg);
    }
    function fogetPass(){
    	var email		= $('#forgetPassEmail').val();
    	var errorMsg	= '';
    	if(email==''){
    		errorMsg	= 'Invalid E-Mail.';
    	}
    	if(errorMsg!=''){
    		$( "#regErrorMsg" ).empty();
    		$( "#regErrorMsg" ).html(errorMsg);
    		return false;
    	}
    	var dataInput	= 'email='+email;
    	var url	= wflz.nonSecureRoot+'api/User/resetPassword/v0.8';
    	$.ajax({
    			type: 'POST',
    			url: url,
    			cache: false,
    			dataType: "json",
    			data: dataInput,
    			success: fogetPassCallback,
    			error: function(e, xhr){
    				}
    		});
    }
    function showForgetPassFrm(){
    	signInSignUpFrm.remove();
    	try{
    		signInSignUpFrm.dialog('close');
    	}catch(e){
//     		alert(e);
    	}
    	signInSignUpFrm='';
    	$.tmpl('forgetPasswordTmpl').dialog({
    	            autoOpen: true, 
    	            width: 300, 
    	            height: 150, 
    	            modal: true, 
    	            title: 'Forgot Password',
    	            resizable: false
	}).width(800 - 25).find('#customer_foget_pass').click(fogetPass);
    }
    $(document).ready(function() {

    	$.history.init(loadContent);
        
            $('#WflzDownload').click(function(){
                $.downloadDialog('download.php');
            });
            
//          $('#WflzLogin').click(function(){
//          $.loginDialog('login.php');
//      });
            var frameData={};
			frameData.signInSrc	= wflz.secureRoot+"login.php";
			frameData.signUpSrc	= wflz.secureRoot+"register.php";
			$('#WflzLogin').click(function(){
			signInSignUpFrm=$.tmpl('loginSignupTmpl', frameData);
			signInSignUpFrm.dialog({
	        autoOpen: true, 
	        width: 550, 
	        height: 405, 
	        modal: true, 
	        resizable: false
	    		}).width(800 - 25).find('#showForgetPassFrm').click(showForgetPassFrm);
				// FB Connect action
				$('#fb-connect').bind('click', function () {
				$.fbConnect({'include': ['uid', 'first_name', 'last_name', 'name', 'pic']}, function (fbSession) {
					$('.not_authenticated').hide();
					$('.authenticated').show();
					signInSignUpFrm.remove();
					try{
						signInSignUpFrm.dialog('close');
					}catch(e){
				// 		alert(e);
					}
					signInSignUpFrm='';
				});
//					return false;
				});
			
	    	});
			
     
//      $('#WflzRegister').click(function(){
//          $.registerDialog('register.php');
//      });
            $('#WflzRegister').click(function(){
                $.tmpl('regFrmTmpl').dialog({
 	            autoOpen: true, 
 	            width: 400, 
 	            height: 450, 
 	            modal: true, 
 	            resizable: false
 	        		}).width(800 - 25).find('#customer_form').click(ajaxRegister); 
             });
            
            $('#WflzPlaylist').click(function(){
                $.playlistDialog('playlist-edit.php');
            });
            
            $('#WflzSearch').keyup(function(e) { 
            	var code = (e.keyCode ? e.keyCode : e.which);
            	if(code == 13) { //Enter keycode
            		WflzSearch.search(this.value);
            	}
            	else
            		WflzSearch.autoComplete(this.value);
            });
            
        	// Local copy of jQuery selectors, for performance.
        	var jpPlayTime = $("#WflzPlayTime");
        	var jpTotalTime = $("#WflzTotalTime");

        	$("#WflzPlayer").jPlayer({
        		ready: function() {
	        		$(this).jPlayer("setMedia", {
	        			mp3: 'wifilez/stream.php?product_id='+queueData.song.id+'&hash='+queueData.song.hash
	        		});

	        	    WflzPlayer.updatePlayer(queueData.song);

        		},
        		ended: function (event) {
        			WflzQueue.next();
        		},
        		supplied: "mp3",
        		solution: 'flash',
        		volume: 0.5,
        		swfPath: "swf",
        		cssSelectorAncestor: '.header',
        		cssSelector: {
        			play: '#WflzPlay',
        			//videoPlay: '#WflzVideoPlay',
        			pause: '#WflzPause',
        			volumeBar: '#WflzVolumeBar',
        			volumeBarValue: '#WflzVolumeBarValue',
        			seekBar: '#WflzSeekBar',
        			playBar: '#WflzPlayBar',
    				mute: '#WflzMute',
    				unmute: '#WflzUnmute',
    				currentTime: '#WflzPlayTime',
    				duration: '#WflzTotalTime'
        		},
        		backgroundColor: '#666666'
        	});
//        	$("#WflzInspector").jPlayerInspector({jPlayer:$("#WflzPlayer")});

        	$("#WflzPrev").click( function() {
        		WflzQueue.prev();
        	});

        	$("#WflzNext").click( function() {
        		WflzQueue.next();
        	});
        	
        	$("#WflzQueue").click( function() {
        		WflzQueue.toggle();
        	});
        	
        	$("#WflzShuffle").click( function() {
        		WflzQueue.setShuffle();
        	});
        	
            $('.play_dropdown_bottom_rht').click(function () {
            	$('.play_dropdown').slideUp("fast");
            });
            	
            $('.play_dropdown_top').click(function () {
            	$('.play_dropdown').slideUp("fast");
            });
            
            $.fbInit(pageData.fbAppKey, {'xd_receiver': '/xd_receiver.php'});

            // FB Connect action
            /*$('#fb-connect').bind('click', function () {
              $.fbConnect({'include': ['uid', 'first_name', 'last_name', 'name', 'pic']}, function (fbSession) {
                $('.not_authenticated').hide();
                $('.authenticated').show();
              });
              return false;
            });*/

            // FB Logout action
            $('#fb-logout').bind('click', function () {
              $.fbLogout(function () {
                $('.authenticated').hide();
                $('.not_authenticated').show();
              });
              return false;
            });

            // Check whether we're logged in and arrange page accordingly
            $.fbIsAuthenticated(function (fbSession) {
              // Authenticated!
                $('.authenticated').show();
                $('.not_authenticated').hide();
            }, function () {
              // Not authenticated
                $('.not_authenticated').show();
                $('.authenticated').hide();
            });
    });

})(jQuery);

$.extend({
	  getUrlVars: function(){
	    var vars = [], hash;
	    var href = decodeURI(window.location.href);

	    if(href.indexOf('::') == -1) return null;
	    
	    var hashes = href.slice(href.indexOf('::') + 2).split(':')

	    for(var i = 0; i < hashes.length; i++)
	    {
	      hash = hashes[i].split('=');
	      vars.push(hash[0]);
	      vars[hash[0]] = hash[1];
	    }
	    return vars;
	  },
	  getUrlVar: function(name){
	    return $.getUrlVars()[name];
	  },
	  getBaseUrl: function(){
		    var hashes = window.location.href.slice(window.location.href.indexOf('/#') + 2).split('::');
		    return hashes[0];
	  },
	  purchaseDialog: function(href) {
	        $('<iframe id="wflz-iframe" src="'+href+'" />').dialog({
	            autoOpen: true, 
	            width: 800, 
	            height: 525, 
	            modal: true, 
	            resizable: false,
	            buttons:{
	        		'Cancel':function(){$(this).dialog('destroy');}
	            }
	        }).width(800 - 25);
	      	$(".ui-dialog-titlebar").hide();
	      	return true;
	    },	
	    downloadDialog: function(href) {
	        $('<iframe id="wflz-iframe" src="'+href+'" />').dialog({
	            autoOpen: true, 
	            width: 400, 
	            height: 200, 
	            modal: true, 
	            resizable: false,
	            buttons:{
	        		'Cancel':function(){$(this).dialog('destroy');}
	            }
	        }).width(800 - 25);
	      	$(".ui-dialog-titlebar").hide();
	      	return true;
	    },
	    loginDialog: function(href) {
	        $('<iframe id="wflz-iframe" src="'+href+'?iframe=true" />').dialog({
	            autoOpen: true, 
	            width: 400, 
	            height: 200, 
	            modal: true, 
	            resizable: false
	        }).width(800 - 25);
	      	return true;
	    },	
	    registerDialog: function(href) {
	        $('<iframe id="wflz-iframe" src="'+href+'?iframe=true" />').dialog({
	            autoOpen: true, 
	            width: 400, 
	            height: 300, 
	            modal: true, 
	            resizable: false
	        }).width(800 - 25);
	      	return true;
	    },
	    playlistDialog: function(href) {
	        $('<iframe id="wflz-iframe" src="'+href+'?iframe=true" />').dialog({
	            autoOpen: true, 
	            width: 400, 
	            height: 200, 
	            modal: true, 
	            resizable: false
	        }).width(800 - 25);
	      	return true;
	    }	
	    
});

var Player = $.Class.create({
    // constructor
    initialize: function() {
    },
    // methods
    updatePlayer:function(song){
		$("#WflzSongName").text(song.title);
		$("#WflzArtist").text(song.artist);
		$("#WflzAlbumLink").attr('href', "#products::product_id="+song.albumId);
		$("#WflzAlbumImg").attr('src', 'wifilez/screenshot.php?product_id='+song.albumId);
		$("#WflzLink").attr('href', "#products::product_id="+song.albumId);
		$("#WflzPurchase").attr('href', "https://www.comedyfilez.com/shopping.php?cart_action=add_to_cart&product_id="+song.albumId);
//		$("#WflzDownload").attr('href', 'wifilez/download.php?product_id='+song.id);
    }
});
var WflzPlayer=new Player();

var Queue = $.Class.create({
    // constructor
    initialize: function() {
        this._isOpen = false;
        this._historyCount = 3;
        this._activeCount = 100;
        this._model = null;
    },
    // methods
    toggle:function(){
		
    	if($('#WflzQueueView').is(':hidden')) {
			$("#WflzQueueView ul").empty();
    		api.Queue.getItems(this._historyCount,this._activeCount,function(res){

    			$("#WflzQueueCount").text(res.data.activeCount.toString());
    			var res = res.data.result.active.list;
    			
    			for (i=0; i < res.length; i++) {
    				var listItem = "<li><a class=\"box11";
        			if(i==0) listItem += " nowPlaying";
        			listItem += "\" href=\"javascript:void(0);\" onclick=\"javascript:WflzQueue.moveTo("+res[i].id+"); return false;\" id=\"WflzQueueView_item_"+i+"\" tabindex=\"1\"><span class=\"box1\">"+res[i].song.title+"</span><span class=\"box2\">"+res[i].song.artist+"</span></a>";
        			$("#WflzQueueView ul").append(listItem);
        			$("#jplayer_playlist_item_"+i).data( "index", i ).click( function() {

                    	$('.play_dropdown').slideUp("fast");
       				
        			});
        		}

    		})
    		$('.play_dropdown').slideDown("fast");
    	}
    	else
    		$('.play_dropdown').slideUp("fast");
    },		
    next:function(){
		api.Queue.getNext(function(res){
			var pid = res.data.result.song.id;
			$("#WflzQueueCount").text(res.data.activeCount.toString());
			$("#WflzPlayer").jPlayer("setMedia", {mp3: 'wifilez/stream.php?product_id='+pid+'&hash='+res.data.result.song.playToken});

			WflzPlayer.updatePlayer(res.data.result.song);

    		$("#WflzPlayer").jPlayer("play");
		})
    },		
    prev:function(){
		api.Queue.getPrevious(function(res){
			var pid = res.data.result.song.id;
			$("#WflzQueueCount").text(res.data.activeCount.toString());
			$("#WflzPlayer").jPlayer("setMedia", {mp3: 'wifilez/stream.php?product_id='+pid+'&hash='+res.data.result.song.playToken});

			WflzPlayer.updatePlayer(res.data.result.song);
    		
    		$("#WflzPlayer").jPlayer("play");
		})
    },		
    clear:function(){
    	$('.play_dropdown').slideUp("fast");
		api.Queue.removeActiveItems(function(res){
			$("#WflzQueueCount").text(res.data.activeCount.toString());
		})
    },		
    setShuffle:function(){
		api.Queue.setShuffle(function(res){
		})
    },		
    playProduct:function(type, uid, pid, hash){
		api.Queue.playProduct(type, uid, pid, hash, function(res){
			$("#WflzQueueCount").text(res.data.activeCount.toString());
			$("#WflzPlayer").jPlayer("setMedia", {mp3: 'wifilez/stream.php?product_id='+res.data.result.song.id+'&hash='+res.data.result.song.playToken});

			WflzPlayer.updatePlayer(res.data.result.song);

    		$("#WflzPlayer").jPlayer("play");
		})
    },		
    moveTo:function(qpid){
    	$('.play_dropdown').slideUp("fast");
    	api.Queue.moveTo(qpid, function(res){
			$("#WflzQueueCount").text(res.data.activeCount.toString());
			$("#WflzPlayer").jPlayer("setMedia", {mp3: 'wifilez/stream.php?product_id='+res.data.result.song.id+'&hash='+res.data.result.song.playToken});

			WflzPlayer.updatePlayer(res.data.result.song);

    		$("#WflzPlayer").jPlayer("play");
		})
    },		
    queueProduct:function(type, pid){
		api.Queue.queueProduct(type, pid, function(res){
			$("#WflzQueueCount").text(res.data.activeCount.toString());
		})
    },		
    toString: function() {
        return this.property('isOpen') + ' ' + this.property('activeCount') + ' ' + this.property('historyCount')
    }
}, {
    // properties
    getset: [['isOpen', '_isOpen'],['activeCount', '_activeCount'],['historyCount', '_historyCount']]
});
var WflzQueue=new Queue();

var Search = $.Class.create({
    // constructor
    initialize: function() {
    
	},
    // methods
    autoComplete:function(q){
		if(q.length < 2) return;
		api.Search.autoComplete(q, function(res){
//			alert(res);
		})
    },
    search:function(query){
    	api.Search.search(query, function(res){
			$('#scrollContainer').load('search.php', {q:query});
		})
	}
});
var WflzSearch=new Search();

var Account = $.Class.create({
    // constructor
    initialize: function() {
    
	},
    // methods
	submitSupportRequest:function(){
		
		var subject = $('#support_subject').val();
		var content = $('#support_content').val();
		var prodId = $('#product_id').val();
		
		api.Account.submitSupportRequest(subject, content, prodId, function(res){
			$('#support_request_form')[0].reset();
			$('#scrollContainer').load('account.php?page=support');
		})		
	},
	submitSupportNote:function(q){
		alert('submitSupportRequest');
	},
	register:function() {
		alert('register');
	}	
});
var WflzAccount=new Account();

var Purchase = $.Class.create({
    // constructor
    initialize: function() {},
    // methods
	nextStep:function(step){
//		alert('nextStep: '+step);
//		api.Purchase.nextStep(step, true, function(res){
			$('#scrollContainer').load('purchase.php', {shopping_step:step,shopping_next:true});
//		})		
		
    },	
	backStep:function(step){
		alert('backStep: '+step);
	}	
});
var WflzPurchase=new Purchase();

api={}
api.Search={
	autoComplete:function(query, onResponse){
		$.get('/api/AutoComplete/getMatches/v1',{'Q':query},onResponse,'json');
	},
	search:function(query, onResponse){
		$.get('/api/SearchPage/runBucketedSearch/v1',{'Q':query},onResponse,'json');
	}
}
api.Queue={

		getItems:function(historyCount,activeCount,onResponse){
			var params={historyCount:historyCount,activeCount:activeCount};
			$.get('/api/Queue/getItems/v1',params,onResponse,'json');
		},
		getNext:function(onResponse){
			$.get('/api/Queue/getNext/v1',null,onResponse,'json');
		},
		getPrevious:function(onResponse){
			$.get('/api/Queue/getPrevious/v1',null,onResponse,'json');
		},
		removeActiveItems:function(onResponse){
			$.get('/api/Queue/removeActiveItems/v1',null,onResponse,'json');
		},
		setShuffle:function(onResponse){
			$.get('/api/Queue/setShuffleMode/v1',null,onResponse,'json');
		},
		playProduct:function(type, uid, pid, hash, onResponse){
			if(type=='track')
				$.get('/api/Queue/playSong/v1',{T:pid},onResponse,'json');
			else if(type=='disc')
				$.get('/api/Queue/playDisc/v1',{sourceParams:'album/'+pid},onResponse,'json');
			else
				$.get('/api/Queue/playAlbum/v1',{sourceParams:'album/'+pid},onResponse,'json');
				
		},
		moveTo:function(qpid, onResponse){
			$.get('/api/Queue/moveToHeadAndPlay/v1',{itemId:qpid},onResponse,'json');
		},
		queueProduct:function(type, pid, onResponse){
			if(type=='track')
				$.get('/api/Queue/queueSong/v1',{T:pid},onResponse,'json');
			else if(type=='disc')
				$.get('/api/Queue/queueDisc/v1',{sourceParams:'album/'+pid},onResponse,'json');
			else
				$.get('/api/Queue/queueAlbum/v1',{sourceParams:'album/'+pid},onResponse,'json');
		}
}
api.Cart={
		clearCart:function(onResponse) {
			$.get('/api/Store/clearCart/v1',null,onResponse,'json');
		}
}

api.Account={
		submitSupportRequest:function(subj, cont, prodId, onResponse) {
			$.post('/api/Account/submitSupportRequest/v1',{subject:subj,content:cont,product_id:prodId},onResponse,'json');
		}
}

api.Purchase={
		nextStep:function(step, next, onResponse) {
			$.post('/api/Purchase/nextStep/v1',{shopping_step:step,shopping_next:next},onResponse,'json');
		}
}

api.Facebook={
		link:function(onResponse) {
			$.post('/api/FacebookConnect/linkAccount/v1',null,onResponse,'json');
		},	
		unlink:function(onResponse) {
			$.post('/api/FacebookConnect/unlinkAccount/v1',null,onResponse,'json');
		}	
}

