﻿var topID=0;
var proxy;
var sPage;
var $tabs = null;
var deferred = null;

$(function () {
	var page = location.toString().split('/');
  page = page[page.length-1];
  if(page.indexOf("#")>=0)
		page = page.split('#')[0];
  if(page.length == 0 || page.indexOf("?")==0)
		page = "Default.aspx";
	else if(page.indexOf("?")>=0)
		page = page.split('?')[0];
  proxy = new ServiceProxy(page);

	SetupPrompt();
	//SetUpInfoOverlay(".infooverlay");
	
  initTabs("ul.camtabs");
  
  initFilters();

  if(hasFavorites())
		$('#favoritesTabLi').show();
	
  initRefresh();
  
	if(deferred!=null){
		if(deferred.tabindex==undefined)
			deferred.tabindex = 0;
		if(deferred.page==undefined)
			deferred.page = 0;
		if(deferred.tabindex == 7)
			$('#filterTabLi').show();
		if(deferred.tabindex == 0){
			//$tabs.click(deferred.tabindex);//doesnt work if tabindex==0
			proxy.getTabCams("#onlinecontainer", 0, function (msg) { CamsReceived(msg, "#onlinecontainer"); });
		}
		else
			$tabs.click(deferred.tabindex);
	}
})

function SetupPrompt(){
	$("#prompt").overlay({
		expose: {
			color: '#FFF',
			loadSpeed: "slow",
			closeSpeed: 800,
			opacity: 0.8
		},
		oneInstance: true,
		closeOnClick: true,
		top: 'center', 
		left: 'center', 
		absolute: false
	});
}

function close_overlay(){
  $("#overlay .close").click();
}

function ShowError(){
	var questionhead = $(".questionheadWrap");
	var question = $(".questionWrap");
  
  if(questionhead && question)
		questionhead.toggleClass("error", true);
  
	questionhead.html("Er is een onverwachte fout opgetreden");
	question.html("Tijdens het opbouwen van de pagina is een fout opgetreden. <b>Probeer het nog een keer, wanneer het probleem aanhoudt kunt u contact met ons opnemen via de support sectie.</b>");
	
	var api = $("#prompt").overlay();
	api.load();
	delayed = new Object();
	imgreq = false;
}

function initTabs(selector) {
  $(function () {
    $(selector+" li a span").each(function () {
      var x = $(this).attr('rel') + "container";
      $('<div class="pane clearfix"><div id="' + x + '"></div></div>').appendTo('div.panes');
    });

    var totalTabs = $('div.panes > div.pane > div').size();
    $('div.panes > div.pane > div').slice(1, totalTabs).each(function () {
      $(this).data(this.id, 1);
    });

    $(selector).tabs("div.panes > div.pane", {
      //effect: 'fade',
      fxSlide: true,
      onBeforeClick: function (event, tabindex) {
        var currentTabID = "#" + $('div', this.getPanes().eq(tabindex)).attr('id');
        var currentPageIndex = ($(currentTabID).data(currentTabID) == undefined) ? null : $(currentTabID).data(currentTabID);
        if (tabindex === 0)
					currentPageIndex = 1;
        if(deferred!=null){
					currentPageIndex = deferred.page;
					deferred = null;
				}
				spin('#buttons');
				proxy.getTabCams(currentTabID, currentPageIndex, function (msg) { CamsReceived(msg, currentTabID); });
      }
    }).history();
    $tabs = $(selector).tabs();

    /*$tabs = $(selector).tabs("div.panes > div.pane", {
      //effect: 'ajax',
      //fxSlide: true,
			onBeforeClick: function (event, tabindex) {
        var currentTabID = "#" + $('div', this.getPanes().eq(tabindex)).attr('id');
        var currentPageIndex = ($(currentTabID).data(currentTabID) == undefined) ? null : $(currentTabID).data(currentTabID);
        if (tabindex === 0)
					currentPageIndex = 1;
        if(deferred!=null){
					currentPageIndex = deferred.page;
					deferred = null;
				}
				spin('#buttons');
				proxy.getTabCams(currentTabID, currentPageIndex, function (msg) { CamsReceived(msg, currentTabID); });
      },
      history: true
    });*/
  });
}

function initFilters() {
  $(function () {
    $("#camfilter #dropdowns :input").change(function(e){
			$('#filterTabLi').show();
			$("#usernamesearch").val("");
			if($tabs.getIndex()!=7)
				$tabs.click(7);
			else{
				spin('#buttons');
				proxy.getFilterCams(1, function (msg) { CamsReceived(msg, "#filtercontainer"); });
			}
    });
    $("#usernamesearch").keydown(function(e){
			if(e.keyCode && e.keyCode==13){
				$('#filterTabLi').show();
				if($tabs.getIndex()!=7)
					$tabs.click(7);
				else{
					spin('#buttons');
					proxy.getFilterCams(1, function (msg) { CamsReceived(msg, "#filtercontainer"); });
					return false;
				}
			}
    });
    $("#filterbutton").click(function(e){
			$('#filterTabLi').show();
			if($tabs.getIndex()!=7)
				$tabs.click(7);
			else{
				spin('#buttons');
				proxy.getFilterCams(1, function (msg) { CamsReceived(msg, "#filtercontainer"); });
				return false;
			}
    });
  });
}

/*function initFilters() {
  $(function () {
    $("#camfilter #dropdowns :input").change(function(e){
			$('#filterTabLi').show();
			//$("#usernamesearch").val("");
			//alert($tabs.index());
			if($tabs.index()!=7){
				//$tabs.click(7);
				//var tab = $tabs.get(7);
				//tab.trigger({type: "onClick"});
				//$tabs.tabs('select', 7);
				//$tabs.tabs('click', 7);
				//$('#filterTabLi a').click();
				//$('#filterTabLi a').trigger('click');
				//$tabs.triggerTab(7);
				$('#filterTabLi a').click();
			}
			else{
				spin('#buttons');
				proxy.getFilterCams(1, function (msg) { CamsReceived(msg, "#filtercontainer"); });
			}
    });
    $("#usernamesearch").keydown(function(e){
			if(e.keyCode && e.keyCode==13){
				$('#filterTabLi').show();
				if($tabs.index()!=7)
					//$tabs.click(7);
					$('#filterTabLi a').click();
				else{
					spin('#buttons');
					proxy.getFilterCams(1, function (msg) { CamsReceived(msg, "#filtercontainer"); });
					return false;
				}
			}
    });
    $("#filterbutton").click(function(e){
			$('#filterTabLi').show();
			if($tabs.index()!=7)
				//$tabs.click(7);
				$('#filterTabLi a').click();
			else{
				spin('#buttons');
				proxy.getFilterCams(1, function (msg) { CamsReceived(msg, "#filtercontainer"); });
				return false;
			}
    });
  });
}*/

function initRefresh(){
  $('a.refresh').click(function (){
    GotoSpinner($(this).attr('rel'));
  });

  function GotoSpinner(selector){
    spin('#buttons');
    $(selector).stop().animate({ 'opacity': 0.5 }, 300);
    //$("span.t, label.t").hide();

    var currentPageIndex = ($(selector).data(selector) == undefined) ? null : $(selector).data(selector);
    proxy.getTabCams(selector, currentPageIndex, function (msg) { CamsReceived(msg, selector); });
  };
  
  //$("#view").data("currView", $(this).find("input:radio:checked")[0]);
  /*$("#view").change(function (event){
    if ($(event.target).is("input:radio") && event.target !== $(this).data("currChecked")){
      $(this).data("currView", event.target);

      var selector = $('a.refresh').attr('rel');
      var reqview = $(event.target).val();
      CamsReceived(cammerData, selector);
    }
  });*/
}

function CamsReceived(msg, selector){
  cammerData = msg;
  
  pIndex = new Array();
  delayed = null;
  
  if (selector == "#online2container" || selector == "#femalecontainer" || topID==0){
		if(cammerData.CurrentPage && cammerData.CurrentPage==1){
			if(topID != cammerData.Cammers[0].ID){
				//topcamblok:
				topID = cammerData.Cammers[0].ID;
				ShowTopCammer(cammerData.Cammers[0]);
			}
		}
	}
  
	$(selector).setTemplateURL('htmltemplates/camitem.htm');

  $(selector).processTemplate(msg);

	if (selector !== "#top20container" && selector !== "#overlayContent"){
		if(msg.PageTotal<=1)
			$("#camcount").html(String.format("{0} cammers gevonden", msg.ItemCount));
		else
			//$("#camcount").html(String.format("pagina {1}: {0} cammers gevonden", msg.ItemCount, msg.CurrentPage));
			$("#camcount").html(String.format("{0} cammers gevonden (ga naar de webcamsex sectie voor meer)", msg.ItemCount, (msg.PageTotal-1)));

		//$("span.pagecount").html(msg.CurrentPage + " / " + msg.PageTotal);
		$("#camcount").show();
  }
  else
		$("#camcount").hide();
  
  /*if (selector !== "#onlinecontainer" && selector !== "#favoritescontainer" && selector !== "#top20container" && selector !== "#filtercontainer" )//&& selector !== "#overlayContent"
    UpdatePaging(selector, msg.CurrentPage, msg.PageTotal);
  else if(selector !== "#filtercontainer")
    $(selector + " div.paging").hide();
  else if(msg.PageTotal<=1)//filter exception
		$(selector + " div.paging").hide();
  else
		UpdatePaging(selector, msg.CurrentPage, msg.PageTotal);*/
	$(selector + " div.paging").hide();
	
  OnCamsCompleteInfo(selector);
}

/*function UpdatePaging(selector, currentpage, totalpages) {
  if (currentpage !== 1) {
    $(selector + " a.prevpage")
      .attr('rel', currentpage - 1)
      .click(function () {
        GotoPage(selector, $(this).attr('rel'));
      }).show();

    $(selector + " a.firstpage")
      .click(function () {
        GotoPage(selector, 1);
      }).show();
  }
  else {
    $(selector + " a.prevpage").hide();
    $(selector + " a.firstpage").hide();
  }
  if (currentpage !== totalpages) {
    $(selector + " a.nextpage")
      .attr('rel', currentpage + 1).click(function () {
        GotoPage(selector, $(this).attr('rel'));
      }).show();
    $(selector + " a.lastpage").click(function () {
        GotoPage(selector, totalpages);
      }).show();
  }
  else {
    $(selector + " a.nextpage").hide();
    $(selector + " a.lastpage").hide();
  }
  
  function GotoPage(selector, page) {
    spin('.buttons');
    $(selector).stop().animate({ 'opacity': 0.5 }, 300);

    $(selector).data(selector, page);
    proxy.getTabCams(selector, page, function (msg) { CamsReceived(msg, selector); });
  }
}*/

function OnCamsCompleteInfo(selector) {
	//SetUpPayCheck(selector + " a.paylink");
	SetupPayOverlay(selector + " a.paylink");
	if(supportsCookie())
		SetupFavorites(selector + " button.modalInput");
	else
		SetupCookieWarning(selector + " button.modalInput");
  SetUpImgPaging(selector);
  unspin('#buttons');
  $(selector).stop().animate({ 'opacity': 1 }, 300);
  $("a.refresh").attr('rel', selector);
  //Translate();
  $("#t"+($tabs.getIndex()+1)).blur();
  //$("#t"+($tabs.index()+1)).blur();
  ShowFavorites(selector);
}

function ShowTopCammer(cammer){
	if(document.getElementById("topcammer")){
		var link = "http://wallet.midhold.com/walletbetaalpagina/betaalpagina_cam.aspx?ps=2629&camid="+cammer.ID+"#fullprofile";
		$("#topname").html(cammer.Name.toTitleCase()+"&nbsp;("+cammer.Age+")");
		$("#topname").attr('href', link);
		$("#topname").attr('camid', cammer.ID);
		var topfav = $("#topfav");
		topfav.attr('camid', cammer.ID);
		topfav.attr('nick', cammer.Name);
    if(existsFavorite(cammer.ID)){
    	topfav.removeClass("addfav");
			topfav.addClass("delfav");
			topfav.attr("title",String.format("{0} verwijderen uit favorieten", cammer.Name).toTitleCase());
			topfav.html("("+String.format("{0} verwijderen uit favorieten", cammer.Name).toTitleCase()+")");
			$("#topcammer .imgoverlay").fadeIn(2000);
    }
		else{
			topfav.removeClass("delfav");
			topfav.addClass("addfav");
			topfav.attr("title",String.format("{0} toevoegen aan favorieten", cammer.Name).toTitleCase());
			topfav.html("("+String.format("{0} toevoegen aan favorieten", cammer.Name).toTitleCase()+")");
			$("#topcammer .imgoverlay").fadeOut(2000);
		}
		
		var toprating = $("#toprating");
		if(!cammer.Rating|| cammer.Rating==undefined||cammer.Rating<=0){
			toprating.attr('title', "Waardering: 0/10");
			toprating.html('<span class="starempty"></span><span class="starempty"></span><span class="starempty"></span><span class="starempty"></span><span class="starempty"></span>');
		}
		else if(cammer.Rating>=10){
			toprating.attr('title', "Waardering: 10/10");
			toprating.html('<span class="star"></span><span class="star"></span><span class="star"></span><span class="star"></span><span class="star"></span>');
		}
		else{
			toprating.attr('title', "Waardering: "+cammer.Rating+"/10");
			var stars = "";
			for (index = 0;index<cammer.Rating-2;index+=2){
				stars+='<span class="star"></span>';
			}
			if(cammer.Rating%2>=1)
				stars+='<span class="starhalf"></span>';
			for (index = cammer.Rating;index<=8; index+=2){
				stars+='<span class="starempty"></span>';
			}
			toprating.html(stars);
		}
		
		$("#toppiclink").attr('href', link);
		$("#toppic").attr('src', cammer.LivePicture);
		$("#toprefresh").fadeOut("slow");
		
		$("#flags .flag").remove();
		var flags = "";
		for(var lang_index=0; lang_index<cammer.Languages.length;lang_index++){
			flags+="<li class='"+cammer.Languages[lang_index].Name+"'>"+cammer.Languages[lang_index].Name+"</li>";
    }
		$("#flags").append(flags);
		
		$("#topprofilelink").attr('href', link);
		if(cammer.FreeChat){
			$("#topfreeview a").attr('href', cammer.FreeChat);
			$("#topfreeview").fadeIn("slow");	
		}
		else
			$("#topfreeview").fadeOut("slow");
		if(cammer.Chat){
			$("#toponline a").attr('href', link);
			$("#toponline a").attr('camid', cammer.ID);
			$("#toponline").fadeIn("slow");	
		}
		else
			$("#onlinelink").fadeOut("slow");

		SetupPayOverlay("#topcammer a.paylink");
		if(supportsCookie())
			SetupFavorites("#topfav");
	}
}

var trigger = null;

/*function SetUpInfoOverlay(selector){
  $(selector).overlay({
		expose: {
			color: '#FFF',
			loadSpeed: "slow",
			closeSpeed: 800,
			opacity: 0.8
		},
    onBeforeLoad: function (){
			$(".overlay").css("width",600);
      var wrap = this.getContent().find(".contentWrap");
      thehref = this.getTrigger().attr("href");
      var lang = (readCookie("_Midhold") == null) ? "nl-NL" : readCookie("_Midhold");
			if(thehref.indexOf("?")>=0)
				thehref += "&lang="+lang;
			else
				thehref += "?lang="+lang;
      var infohtml = "<iframe id='infoframe' scrolling='auto' frameborder='0' style='border: solid 1px #000; width:600px; height: 400px;' src='"+thehref+"' />";
      wrap.html(infohtml);
    },
    closeOnClick: true,
    top: 'center', 
		left: 'center', 
		absolute: false
  });
}*/


/*function SetUpPayCheck(selector) {
  $(selector).click(function (){
		trigger = $(this);
		var camid = $(this).attr("camid");
    proxy.getCamAndPayState(camid, function (msg) { StateReceived(msg, camid); });
    return false;
  })
}

function StateReceived(msg, camid) {
	if(msg.result == "continue"){
		var camid = trigger.attr("camid");
		window.location = "flash/campage.aspx?userID="+camid;
	}
	else if(msg.online && !msg.paying)//display wallet
		GoPayOverlay();
	else if(!msg.online)//show offline
		ShowOfflineWarning();	
}*/

/*function GoPayOverlay() {
  var api = $("#overlay").overlay();	
	api.load();
}*/

function SetupPayOverlay(selector){
	$(selector).overlay({
		expose: {
			color: '#FFF',
			loadSpeed: "slow",
			closeSpeed: 800,
			opacity: 0.8
		},
    onBeforeLoad: function () {
			$(".overlay").css("width",412);
      var wrap = this.getContent().find(".contentWrap");
      var camid = this.getTrigger().attr("camid");
			var infohtml = "<iframe id='walletframe' scrolling='no' frameborder='0' style='border: none; width:412px; height: 350px;' src='http://wallet.midhold.com/walletbetaalpagina/betaalpagina_klein.aspx?ps=2629&camid=" + camid +"' />";
      wrap.html(infohtml);
    },
    onClose: function () {
			$(".overlay").css("width",412);
      var wrap = this.getContent().find(".contentWrap");
      wrap.html("");
    },
    closeOnClick: true,
    top: 'center', 
		left: 'center', 
		absolute: false
		
  });
}

function ShowOfflineWarning(){
	var questionhead = $(".questionheadWrap");
	var question = $(".questionWrap");
  if(questionhead && question)
		questionhead.toggleClass("error", true);
	questionhead.html("Offline");
	question.html("Helaas is de gekozen cammer offline gegaan; kies iemand anders.");
	var api = $("#prompt").overlay();
	api.load();
	var item = trigger.parents(".camitem");	
	var onlinelink = item.find("li.online");
	var freechatlink = item.find("li.freechat");
	if(freechatlink)
		freechatlink.fadeOut("slow");
	onlinelink.fadeOut("slow");
}

function SetupCookieWarning(selector) {
	$(selector).overlay({
		expose: {
			color: '#FFF',
			loadSpeed: "slow",
			closeSpeed: 800,
			opacity: 0.8
		},
		oneInstance: true,
		onBeforeLoad: function () {
      var questionhead = this.getContent().find(".questionheadWrap");
			var question = this.getContent().find(".questionWrap");
      
      questionhead.toggleClass("error", true);
			//questionhead.addClass("refresh");
      
			questionhead.html("Browser-cookies zijn uitgeschakeld");
			question.html("<b>Voor deze functie moeten cookies ingeschakeld worden</b>. Dit kan via de internetopties van uw webbrowser");
    },
		closeOnClick: true,
		top: 'center', 
		left: 'center', 
		absolute: false
	});
}

function ShowFavorites(selector){
	$('#tabFavorites').html(String.format("Mijn Favorieten ({0})", getNumFavorites()));;
  if(selector!="#favoritescontainer"){
		$(".camitem.favorite").each(function(index){
			var imgoverlay = $(this).find(".imgoverlay");
			if(imgoverlay){
				if($(this).hasClass("topcam"))
					imgoverlay.html("TopCammer / Favoriet");
				else
					imgoverlay.html("Favoriet");
				imgoverlay.fadeIn(2000);
			}
		});
  }
  $(".camitem.topcam").each(function(index){
		var imgoverlay = $(this).find(".imgoverlay");
		if(imgoverlay){
			if(!$(this).hasClass("favorite"))
				imgoverlay.html("TopCammer");
			imgoverlay.fadeIn(2000);
		}
  });
}

function SetupFavorites(selector){
	$(selector).click(function(e){
			var currTrigger = $(this);
			currTrigger.blur();
      var camid = currTrigger.attr("camid");
      var nick = currTrigger.attr("nick");
      if(document.getElementById("topcammer")){
				var topTrigger = null;
				if(camid == topID){
					if(currTrigger.attr("id")=="topfav"){
						topTrigger = currTrigger;
						currTrigger = $("#fav_"+camid+"_"+$tabs.getIndex());
					}
					else{
						topTrigger = $("#topfav");
					}
					if(existsFavorite(camid)){
						topTrigger.removeClass("delfav");
						topTrigger.addClass("addfav");
						topTrigger.attr("title",String.format("{0} toevoegen aan favorieten", nick).toTitleCase());
						topTrigger.html("("+String.format("{0} toevoegen aan favorieten", nick).toTitleCase()+")");
						$("#topcammer .imgoverlay").fadeOut(2000);
					}
					else{
						topTrigger.removeClass("addfav");
						topTrigger.addClass("delfav");
						topTrigger.attr("title",String.format("{0} verwijderen uit favorieten", nick).toTitleCase());
						topTrigger.html("("+String.format("{0} verwijderen uit favorieten", nick).toTitleCase()+")");
						$("#topcammer .imgoverlay").fadeIn(2000);
					}
				}
      }
      
      if(existsFavorite(camid)&&delFavorite(camid)){
				if($tabs.getIndex()==6)
					currTrigger.parents(".camitem").fadeOut("slow");
				else{
					currTrigger.removeClass("delfav");
					currTrigger.addClass("addfav");
					
					var nick = currTrigger.attr("nick");
					currTrigger.attr("title",String.format("{0} toevoegen aan favorieten", nick).toTitleCase());
					currTrigger.html("("+String.format("{0} toevoegen aan favorieten", nick).toTitleCase()+")");
					
					var item = currTrigger.parents(".camitem");
					item.removeClass("favorite");
					
					var imgoverlay = item.find(".imgoverlay");
					if(imgoverlay){
						if(item.hasClass("topcam"))
							imgoverlay.html("TopCammer");
						else
							imgoverlay.fadeOut(2000);
					}
				}
      }
			else if(addFavorite(camid)){
				currTrigger.removeClass("addfav");
				currTrigger.addClass("delfav");
				
				var nick = currTrigger.attr("nick");
				currTrigger.attr("title",String.format("{0} verwijderen uit favorieten", nick).toTitleCase());
				currTrigger.html("("+String.format("{0} verwijderen uit favorieten", nick).toTitleCase()+")");
				
				var item = currTrigger.parents(".camitem");
				item.addClass("favorite");
				
				var imgoverlay = item.find(".imgoverlay");
				if(imgoverlay){
					if(item.hasClass("topcam"))
						imgoverlay.html("TopCammer / Favoriet");
					else{
						imgoverlay.html("Favoriet");
						imgoverlay.fadeIn(1000);
					}
				}
			}
			if(hasFavorites()){
				if($tabs.getIndex()!=6)
					$('#favoritesTabLi').show();
					$('#tabFavorites').html(String.format("Mijn Favorieten ({0})", getNumFavorites()));;
			}
			else{
				if($tabs.getIndex()==6)
					$tabs.click(0);
				$('#favoritesTabLi').hide();
			}
 	});
}

var imgreq = null;
var delayed = new Object();

function SetUpImgPaging(selector) {
  $(selector+" .previousimg").click(function () {
		if(!imgreq){
			imgreq = true;
			var obj = new Object();
			obj.camid = $(this).attr('camid');
			obj.nextImgIndex = getImgIndex(obj.camid, "down");
			$("#piclink_"+obj.camid+"_"+$tabs.getIndex()+" .refresh").fadeIn("slow");
			delayed = obj;
			delayed.timeoutID = setTimeout('delayedGetCamImg()',1000);
		}
  });
  $(selector+" .nextimg").click(function () {
		if(!imgreq){
			imgreq = true;
			var obj = new Object();
			obj.camid = $(this).attr('camid');
			obj.nextImgIndex = getImgIndex(obj.camid, "up");
			$("#piclink_"+obj.camid+"_"+$tabs.getIndex()+" .refresh").fadeIn("slow");
			delayed = obj;
			delayed.timeoutID = setTimeout('delayedGetCamImg()',1000);
		}
  });
}

function delayedGetCamImg()
{
	if(imgreq)
		proxy.getCamImg(delayed.camid, delayed.nextImgIndex, function (msg) { ImgReceived(msg, delayed.camid); });
}

var pIndex = new Array();
function getImgIndex(camid, dir){
	if(pIndex.length>0){
		for(var i=0;i<pIndex.length;i++){
			if(camid==pIndex[i].camid){
				if(dir=="up")
					pIndex[i].index++;
				else
					pIndex[i].index--;
				return pIndex[i].index;
			}
		}
	}
	pic = new Object();
	pic.camid = camid;
	if(dir=="up")
		pic.index = 1;
	else
		pic.index = -1;
	pIndex[pIndex.length] = pic;
	
	return pic.index;
}

function ImgReceived(msg, camid) {
	msg.online=(msg.online==1?true:false);
	var photos = $("#piclink_"+camid+"_"+$tabs.getIndex()+" .photos");
	var wasonline = true;
	if(photos.length>0)
		wasonline = photos.attr("online")==1?true:false;
	var picholder = $("#piclink_"+camid+"_"+$tabs.getIndex()+" .picholder");
  if(msg.index==0)
		picholder.html("<img src=\""+msg.result+"\" alt=\"\" /><span class=\"livescreen\" ><span class=\""+(msg.online?"online":"offline")+"\" >"+(msg.online?"online":"offline")+"</span>live screenshot</span>");
	else
		picholder.html("<img src=\""+msg.result+"\" alt=\"\" /><span class=\"photos\" index=\""+msg.index+"\" photos=\""+msg.images+"\" online=\""+(msg.online?"1":"0")+"\"><span class=\""+(msg.online?"online":"offline")+"\" >"+(msg.online?"online":"offline")+"</span>"+String.format("foto {0}/{1}", msg.index, msg.images)+"</span>");
	$("#piclink_"+camid+"_"+$tabs.getIndex()+" .refresh").fadeOut("slow");
	if(wasonline!=msg.online){
		var item = picholder.parents(".camitem");
		var onlinelink = item.find("li.online");
		var freechatlink = item.find("li.freechat");
		if(msg.online)
			onlinelink.fadeIn("slow");
		else
			onlinelink.fadeOut("slow");
		if(freechatlink){
			if(msg.online)
				freechatlink.fadeIn("slow");
			else
				freechatlink.fadeOut("slow");
		}
	}
	imgreq = false;
}

/*favorites*/

function addFavorite(id){
	return addCookie("favorites", id);
}

function delFavorite(id){
	return delCookie("favorites", id);
}

function existsFavorite(id){
	return existsCookie("favorites", id);
}

function hasFavorites(){
  return existsCookie("favorites");
}

function getNumFavorites(){
  var c = readCookie("favorites");
  if(c == null)
		return 0;
	else{
    var count = 0;
    var p = c.split(',');
    for(var i=0;i<p.length;i++){
      if(p[i]!=null && p[i] != "")
				count++;
    }
    return count;
  }
}

// create custom animation algorithm for jQuery called "drop"  
$.easing.drop = function (x, t, b, c, d) {
  return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
};

// create custom overlay effect for jQuery Overlay 
$.tools.overlay.addEffect("drop",
  function (done) {// loading animation 
    var animateProps = {
      top: '+=55',
      opacity: 1,
      width: '+=20'
    };
    this.getOverlay().stop().animate(animateProps, "medium", 'drop', done).show();
  },
  function (done) {// closing animation 
    var animateProps = {
      top: '-=55',
      opacity: 0,
      width: '-=20'
    };
    this.getOverlay().stop().animate(animateProps, "fast", 'drop', function () {
      $(this).hide();
      done.call();
    });
  }
);

function spin(selector) {
  $(selector + ' .spinny').css({
    'display': 'block',
    'opacity': 0
  }).stop().animate({
    'opacity': 1
  },
  300);
}

function unspin(selector) {
  $(selector + ' .spinny').stop().animate({
    'opacity': 0
  },
  300);
}








/*Cookies*/

function createCookie(name, value, days) {
  if(days==null||days==undefined)
		days = 365 * 50;
  var date = new Date();
  date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
  var expires = "; expires=" + date.toGMTString();
  document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for (var i = 0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0) == ' ') c = c.substring(1, c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
  }
  return null;
}

/*level 2 cookies*/

function eraseCookie(name){
	createCookie(name,null,-1);
}

function addCookie(name,value){
  var c=readCookie(name);
  if(c==null){
		createCookie(name,(value+","));
		return true;
	}
  else if(c.indexOf(",")>=0){
    var p = c.split(',');
    for(var i=0;i<p.length;i++){
      if(p[i]!=null && p[i] == value)
				return false;
    }
    c+=value+",";
    createCookie(name,c);
    return true;
  }
  else{
		c = value + ",";
    createCookie(name,c);
		return true;
	}
	return false;
}

function delCookie(name,value){
	var c = readCookie(name);
  if(c!=null){
    var p = c.split(',');
    var r = "";
    for(var i=0;i<p.length;i++){
      if(p[i]!=null && p[i] != '' && p[i]!=value)
				r+=p[i]+",";
    }
    if(r==c)
			return false;
    if(r.length>0)
			createCookie(name,r);
    else
			eraseCookie(name);
		return true;
  }
  return false;
}

function existsCookie(name,value){
	var c = readCookie(name);
  if(c==null)
		return false;
	else if(value==null || value == undefined)
		return true;
	else{
    var p = c.split(',');
    var r = "";
    for(var i=0;i<p.length;i++){
      if(p[i]!=null && p[i] == value)
				return true;
    }
  }
  return false;
}

var cookieEnabled = false;

function supportsCookie(){
	if(!cookieEnabled){
		createCookie("test", "test", 1);
		if(readCookie("test")=="test")
			cookieEnabled = true;
	}
	return cookieEnabled;
}
