var Promotion =
{
	getPromoCats : function (selected)
	{
		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=promocats",
				dataType : "json",
				success : function (response)
				{
					for (var i = 0;i < response.length;i++)
					{
						$("#slctPromoCat").append ("<option value=\"" + response[i].catid + "\"" + ((response[i].catid == selected) ? (" selected") : ("")) + ">" + response[i].catname + "</option>");
					}
					General.styleSelects ();
					$("#div_slctPromoCat span").text ($("#slctPromoCat option:selected").text ());
				}
			}
		);
	},

	getContactCats : function ()
	{
		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=contactcats",
				dataType : "json",
				success : function (response)
				{
					for (var i = 0;i < response.length;i++)
					{
						$("#slctConactCats").append ("<option value=\"" + response[i].catid + "\">" + response[i].catname + "</option>");
					}
					Promotion.tgAddressSrc (1);
					General.styleSelects ();
				}
			}
		);
	},

	getAdAvailability : function ()
	{
		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=adsavailable",
				dataType : "json",
				success : function (response)
				{
					$("#spanTopAdAvailable").text (response.top);
					$("#spanBottomAdAvailable").text (response.bottom);
					$("#spanFeaturedAdAvailable").text (response.featured);
				}
			}
		);
	},

	previewPromotion : function ()
	{
		var postparams =
		{
			title : $("#txtPromoName").val (),
			image : $("#hddnPromoImg").val (),
			fromdate : $("#txtPromoDateFrom").val (),
			todate : $("#txtPromoDateTo").val (),
			category : $("#slctPromoCat").val (),
			text : tinyMCE.get ("areaPromoText").getContent ()
		};
		var postdata = "";
		for (tmp in postparams)
		{
			postdata += "&" + tmp + "=" + encodeURIComponent (postparams[tmp]);
		}
		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=cachepromo&panel=1" + postdata,
				success : function (response)
				{
					$("#divPromoPreview").html ("<a href=\"javascript:Promotion.closePreview ();\">Close preview</a><iframe src='" + mainUrl + "mods/promotion/preview.php'></iframe>");
					$("#divPromoPreview").show ("fast");
				}
			}
		);
	},

	closePreview : function ()
	{
		$("#divPromoPreview").html ("");
		$("#divPromoPreview").hide ("fast");
	},

	cachePromotion : function (refPanel, refRedirect)
	{
		switch (refPanel)
		{
			case 1:
				var postparams =
				{
					title : $("#txtPromoName").val (),
					image : $("#hddnPromoImg").val (),
					fromdate : $("#txtPromoDateFrom").val (),
					todate : $("#txtPromoDateTo").val (),
					category : $("#slctPromoCat").val (),
					text : tinyMCE.get ("areaPromoText").getContent (),
					landingopt : $("input[name='rdioLanding']:checked").attr ("rel"),
					landing : $("#txtPromoLanding").val ()
				};
				if (postparams.title == "" || postparams.fromdate == "" || postparams.todate == "" || postparams.category == 0 || postparams.text == "" || postparams.image == "")
				{
					alert ("Please fill all the fields and upload an image");
					return;
				}
				break;
			case 2:
				var postparams =
				{
					visibility : $("#chkbPublicity").is (":checked"),
					sharing : $("input[name='rdioSharing']:checked").attr ("rel"),
					promotip : $("input[name='rdioPromoTip']:checked").attr ("rel"),
					promotors : $("input[name='rdioPromotors']:checked").attr ("rel"),
					promoad1 : $("input[name='rdioPaidPromo1']:checked").attr ("rel"),
					promoad2 : $("input[name='rdioPaidPromo2']:checked").attr ("rel"),
					promoad3 : $("input[name='rdioPaidPromo3']:checked").attr ("rel"),
					adlen1 : $("input[name='rdioPaidPromo1']:checked").attr ("len"),
					adlen2 : $("input[name='rdioPaidPromo2']:checked").attr ("len"),
					adlen3 : $("input[name='rdioPaidPromo3']:checked").attr ("len")
				};
				if ($("#spanPayTotal_2").text () != "0.00" && refRedirect == 3)
				{
					alert ("Please pay the tip and visibility first");
					return;
				}
				break;
			case 3:
				var addresses = {};
				$("#ulSelectedContacts li a ").each (function ()
				{
					addresses[$(this).attr ("id")] = $(this).html ().split ("<br>");
				});
				var postparams =
				{
					referral : $("#areaReferral").val (),
					testmsg : $("#txtTestMessage").val (),
					schedule : $("input[name='rdioPromoSChedule']:checked").attr ("rel"),
					scheduledate : $("#txtPromoSchedule").val (),
					addresses : JSON.stringify (addresses),
					save : 1
				};
				break;
		};
		var postdata = "";
		for (tmp in postparams)
		{
			postdata += "&" + tmp + "=" + encodeURIComponent (postparams[tmp]);
		}

		$(document.body).append ("<div class=\"wait\">Please wait</div>");

		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=cachepromo&panel=" + refPanel + postdata,
				success : function (response)
				{
					$(".wait").remove ();
					if (refRedirect == 4)
					{
						document.location = mainUrl + currLang + "/promotion/" + response;
					}
					else
					{
						document.location = mainUrl + currLang + "/start-promotion/" + refRedirect;
					}
				}
			}
		);
	},

	savePromotion : function ()
	{
		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=savepromo",
				success : function (response)
				{
					document.location = mainUrl + currLang + "/all-promotions";
				}
			}
		);
	},

	tgAddressSrc : function (refDiv)
	{
		$("#divPromoAddr1 div").removeClass ("current").addClass ("normal");
		$("#divAddress_" + refDiv).removeClass ("normal").addClass ("current");

		switch (refDiv)
		{
			case 1:
				var catid = $("#slctConactCats").val ();
				$.ajax
				(
					{
						type : "post",
						url : mainUrl + "mods/promotion/receiver.php",
						data : "req=address_book&catid=" + catid,
						dataType : "json",
						success : function (response)
						{
							$("#ulListContacts").html ("");
							for (var i = 0;i < response.length;i++)
							{
								var tmpId = "ab_" + response[i].uid;
								var tmpSrc = "<li><a href=\"javascript:Promotion.addContact ('" + tmpId + "');\" id=\"" + tmpId + "\">" + response[i].firstname + " " + response[i].lastname + "<br />" + response[i].email + "</a></li>";
								$("#ulListContacts").append (tmpSrc);
							}
						}
					}
				);
				break;
			case 2:
				$("#ulListContacts").html ("<li><a href=\"javascript:Promotion.remoteAddresses ('google');\">Gmail</a></li><li><a href=\"javascript:Promotion.remoteAddresses ('yahoo');\">Yahoo</a></li>");
				break;
			case 3:
				$("#ulListContacts").html ("<li><div class=\"label\">Name:</div> <input type=\"text\" id=\"txtSCName\" /><div class=\"label\">Email:</div> <input type=\"text\" id=\"txtSCEmail\" /><a href=\"#\" id=\"hrefSCAdd\">Add</a></li>");
				$("#hrefSCAdd").click (function ()
				{
					var newid = $("a[id^='sc']").size ();
					$("#ulSelectedContacts").append ("<li><a href=\"javascript:Promotion.removeContact ('sc_" + newid + "');\" id=\"sc_" + newid + "\">" + $("#txtSCName").val () + "<br>" + $("#txtSCEmail").val () + "</a></li>");
					$("#txtSCName").val ("");
					$("#txtSCEmail").val ("");
					$("#spanSelectedCnt").text (parseInt ($("#spanSelectedCnt").text ()) + 1);
					return false;
				});
				break;
			case 4:
				$.ajax
				(
					{
						type : "post",
						url : mainUrl + "mods/promotion/receiver.php",
						data : "req=followers",
						dataType : "json",
						success : function (response)
						{
							$("#ulListContacts").html ("");
							for (var i = 0;i < response.length;i++)
							{
								var tmpId = "fl_" + response[i].uid;
								var tmpSrc = "<li><a href=\"javascript:Promotion.addContact ('" + tmpId + "');\" id=\"" + tmpId + "\">" + response[i].firstname + " " + response[i].lastname + "<br />" + response[i].email + "</a></li>";
								$("#ulListContacts").append (tmpSrc);
							}
						}
					}
				);
				break;
			case 5:
				$.ajax
				(
					{
						type : "post",
						url : mainUrl + "mods/promotion/receiver.php",
						data : "req=nwkmembers",
						dataType : "json",
						success : function (response)
						{
							$("#ulListContacts").html ("");
							for (var i = 0;i < response.length;i++)
							{
								var tmpId = "nw_" + response[i].uid;
								var tmpSrc = "<li><a href=\"javascript:Promotion.addContact ('" + tmpId + "');\" id=\"" + tmpId + "\">" + response[i].firstname + " " + response[i].lastname + "<br />" + response[i].email + "</a></li>";
								$("#ulListContacts").append (tmpSrc);
							}
						}
					}
				);
				break;
			case 6:
				$.ajax
				(
					{
						type : "post",
						url : mainUrl + "mods/promotion/receiver.php",
						data : "req=pastpromos",
						dataType : "json",
						success : function (response)
						{
							$("#ulListContacts").html ("");
							for (var i = 0;i < response.length;i++)
							{
								var tmpId = "pp_" + response[i].uid;
								var tmpSrc = "<li><a href=\"javascript:Promotion.addContact ('" + tmpId + "');\" id=\"" + tmpId + "\">" + response[i].firstname + " " + response[i].lastname + "<br />" + response[i].email + "</a></li>";
								$("#ulListContacts").append (tmpSrc);
							}
						}
					}
				);
				break;
			case 7:
				$("#ulListContacts").html ("<li><input type=\"checkbox\" id=\"chkbFirstRow\" /> First row contains row names<br /><div class=\"bluebutton1\" id=\"divUploadCSV\">Upload</div></li>");
				var csvcontacts = new qq.FileUploader
				({
					element : document.getElementById ('divUploadCSV'),
					action : mainUrl + "mods/promotion/upload.php",
					onSubmit : function ()
					{
						csvcontacts.setParams (
						{
							type : "contactcsv",
							firstrow : $("#chkbFirstRow").is (":checked")
						});
					},
					onComplete : function (id, fileName, responseJSON)
					{
						var arrLabels = ["First name", "Last name", "Country", "City", "Address", "Phone", "Email", "Company", "Position", "Industry"];
						$("#ulListContacts").html ("");
						var slctSrc = "<select>";
						slctSrc += "<option value=\"f_0\">Skip</option>";
						for (var j = 0;j < arrLabels.length;j++)
						{
							slctSrc += "<option value=\"f_" + (j + 1) + "\">" + arrLabels[j] + "</option>";
						}
						slctSrc += "</select>";
						for (var i = 0;i < responseJSON.cols.length;i++)
						{
							$("#ulListContacts").append ("<li rel=\"col_" + (i + 1) + "\"><span>" + responseJSON.cols[i] + "</span>" + slctSrc + "</li>");
						}
						$("#ulListContacts").append ("<a href=\"javascript:Promotion.parseCSV ();\" class=\"bluebutton1\">Confirm parsing</a>");
					}
				});
				$(".qq-upload-list").hide ();
				break;
		}
	},

	remoteAddresses : function (refRemote)
	{
		childWindow = window.open (mainUrl + 'mods/promotion/addresses.php?remote=' + refRemote, 'remoteLogin', 'width=800,height=500,location=0')
		if (childWindow.opener == null)
		{
			childWindow.opener = self;
		}
	},

	parseCSV : function ()
	{
		var rowData = "";
		$("#ulListContacts li[rel^='col_']").each (function ()
		{
			rowData += "&" + $(this).attr ("rel") + "=" + $(this).children ("select").val ();
		});
		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=parsecsv" + rowData,
				dataType : "json",
				success : function (response)
				{
					$("#ulListContacts").html ("");
					for (var i = 0;i < response.length;i++)
					{
						var tmpId = "pp_" + response[i].uid;
						var tmpSrc = "<li><a href=\"javascript:Promotion.addContact ('" + tmpId + "');\" id=\"" + tmpId + "\">" + response[i].firstname + " " + response[i].lastname + "<br />" + response[i].email + "</a></li>";
						$("#ulListContacts").append (tmpSrc);
					}
				}
			}
		);
	},

	addContact : function (refElement)
	{
		var tmpLi = $("#" + refElement).parent ().detach ();
		$("#ulSelectedContacts").append (tmpLi);
		$(tmpLi).unbind ("click");
		$(tmpLi).click (function ()
		{
			$(this).remove ();
			$("#spanSelectedCnt").text ($("#ulSelectedContacts").children ("li").length);
		});
		$("#spanSelectedCnt").text ($("#ulSelectedContacts").children ("li").length);
	},

	removeContact : function (refElement)
	{
		$("#" + refElement).parent ().remove ();
		return false;
	},

	addAllContacts : function ()
	{
		$("#ulListContacts li a").each (function ()
		{
			if ($(this).is (":visible"))
			{
				Promotion.addContact ($(this).attr ("id"));
			}
		});
	},

	removeAllContacts : function ()
	{
		$("#ulSelectedContacts").html ("");
		$("#spanSelectedCnt").text ("0");
	},

	addTip : function ()
	{
		var postparams =
		{
			visibility : $("#chkbPublicity").is (":checked"),
			sharing : $("input[name='rdioSharing']:checked").attr ("rel"),
			promotip : $("input[name='rdioPromoTip']:checked").attr ("rel"),
			promotors : $("input[name='rdioPromotors']:checked").attr ("rel"),
			promoad1 : $("input[name='rdioPaidPromo1']:checked").attr ("rel"),
			promoad2 : $("input[name='rdioPaidPromo2']:checked").attr ("rel"),
			promoad3 : $("input[name='rdioPaidPromo3']:checked").attr ("rel"),
			adlen1 : $("input[name='rdioPaidPromo1']:checked").attr ("len"),
			adlen2 : $("input[name='rdioPaidPromo2']:checked").attr ("len"),
			adlen3 : $("input[name='rdioPaidPromo3']:checked").attr ("len")
		};
		var postdata = "";
		for (tmp in postparams)
		{
			postdata += "&" + tmp + "=" + encodeURIComponent (postparams[tmp]);
		}

		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=addtip" + postdata,
				dataType : "json",
				success : function (response)
				{
					$("input[name='custom']").val (response.hash);
					document.forms[0].submit ();
				}
			}
		)
	},

	getPromotions : function (params)
	{
		var cat = params.cat != undefined ? params.cat : "";
		var limit = params.limit != undefined ? params.limit : "";
		var types = cat != "" ? [cat] : params.types.split (",");

		$("#ulPromoCats a").removeClass ("selected");
		$("#ulPromoCats a[rel='cat_" + cat + "']").addClass ("selected");

		$("#divPromoList").html ("");
		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=getpromotions&types=" + encodeURIComponent (params.types) + "&cat=" + cat + "&limit=" + limit,
				dataType : "json",
				success : function (response)
				{
					var panelSrc = "";
					for (var i = 0;i < types.length;i++)
					{
						if (response[types[i]] != null)
						{
							panelSrc += "<h1 class=\"subheader\" style=\"clear:both; padding:10px 15px; font-weight:normal;\">" + response[types[i] + "_name"] + "</h1>";
							panelSrc += "<ul class=\"list-three\">";
							for (var j = 0;j < response[types[i]].length;j++)
							{
								panelSrc += "<li>";
								panelSrc += "<div class=\"promosmallhead\"><div class=\"cat\">" + response[types[i]][j].cat + "</div><div class=\"hot\">" + (response[types[i]][j].hot == null ? "" : response[types[i]][j].hot) + "</div><div class=\"new\">" + (response[types[i]][j].newp == null ? "" : response[types[i]][j].newp) + "</div></div>";
								panelSrc += "<div style=\"padding:5px 5px 0 5px; background:#000;\"><a href=\"" + mainUrl + currLang + "/promotion/" + response[types[i]][j].ftitle + "." + response[types[i]][j].pid + ".html\" style=\"background:url('" + mainUrl + "media/promoxsmall/" + response[types[i]][j].image + "') center top no-repeat;\">";
								panelSrc += "<div class=\"title\">" + response[types[i]][j].title + "</div></a></div>";
								panelSrc += "<div class=\"tip\">$" + response[types[i]][j].tip + " Tip for Supporters</div>";
								panelSrc += "</li>";
							}
							panelSrc += "</ul>";
						}
					}
					$("#divPromoList").html (panelSrc);
				}
			}
		);
	},

	getPromotionsExtra : function (params)
	{
		var cat = params.cat != undefined ? params.cat : "";
		var limit = params.limit != undefined ? params.limit : "";
		var offset = params.offset != undefined ? params.offset : "";
		if (params.types != undefined)
		{
			$("#hddnType").val (params.types);
		}
		var type = $("#hddnType").val ();

		$("#ulPromoSubInfo li").removeClass ("selected");
		$("#ulPromoSubInfo li[rel='" + type + "']").addClass ("selected");
		$("#ulPromoCats a").removeClass ("selected");
		$("#ulPromoCats a[rel='cat_" + cat + "']").addClass ("selected");

		$(document.body).append ("<div class=\"wait\">Please wait</div>");
		$("#tblPromotions tbody").html ("");
		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=getpromotionsextra&types=" + encodeURIComponent (type) + "&cat=" + cat + "&limit=" + limit,
				dataType : "json",
				success : function (response)
				{
					var tblSrc = "";
					for (var i = 0;i < response.promos.length;i++)
					{
						var daysleft = parseInt (parseInt (response.promos[i].pend) / 24);
						var hoursleft = parseInt (response.promos[i].pend) - daysleft * 24;
						var tpl = response.promos[i].tpl == null ? 0 : response.promos[i].tpl;
						var estimate = response.promos[i].estimate === false ? 0 : response.promos[i].estimate;
						switch (params.types)
						{
							case "mypromos":
								if (parseInt (response.promos[i].pend) > 0)
								{
									tblSrc += "<tr><td class=\"number\">" + (i + 1) + "</td><td><img src=\"" + mainUrl + "media/promoxsmall/" + response.promos[i].image + "\" /><div><h2>" + response.promos[i].title + "</h2><b>In:</b> " + response.promos[i].pcat + "</div></td><td>" + daysleft + " days<br />" + hoursleft + " hours</td><td>$" + response.promos[i].tip + "</td><td>$" + tpl + "</td><td>$" + estimate + "</td><td><a href=\"javascript:Promotion.editPromotion (" + response.promos[i].pid + ");\">Edit</a></td></tr>";
								}
								else
								{
									tblSrc += "<tr><td class=\"number\">" + (i + 1) + "</td><td><img src=\"" + mainUrl + "media/promoxsmall/" + response.promos[i].image + "\" /><div><h2>" + response.promos[i].title + "</h2><b>In:</b> " + response.promos[i].pcat + "</div></td><td>" + daysleft + " days<br />" + hoursleft + " hours</td><td>$" + response.promos[i].tip + "</td><td>$" + tpl + "</td><td>$" + estimate + "</td><td>&nbsp;</td></tr>";	
								}
								break;
							default:
								tblSrc += "<tr><td class=\"number\">" + (i + 1) + "</td><td><a href=\"" + mainUrl + currLang + "/promotion/" + response.promos[i].ftitle + "." + response.promos[i].pid + ".html\"><img src=\"" + mainUrl + "media/promoxsmall/" + response.promos[i].image + "\" /></a><div><h2><a href=\"" + mainUrl + currLang + "/promotion/" + response.promos[i].ftitle + "." + response.promos[i].pid + ".html\">" + response.promos[i].title + "</a></h2><b>In:</b> " + response.promos[i].pcat + "</div></td><td>" + daysleft + " days<br />" + hoursleft + " hours</td><td>$" + response.promos[i].tip + "</td><td>$" + tpl + "</td><td>$" + estimate + "</td><td><a href=\"" + mainUrl + currLang + "/promotion/" + response.promos[i].ftitle + "." + response.promos[i].pid + ".html\">&rarr; Promote<br />&rarr; More info</a></td></tr>";
								break;
						}
					}
					$("#tblPromotions tbody").html (tblSrc);
					$(".wait").remove ();
				}
			}
		);
	},

	editPromotion : function (refPromo)
	{
		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=editpromotion&pid=" + refPromo,
				dataType : "json",
				success : function (response)
				{
					document.location = mainUrl + currLang + "/start-promotion/2";
				}
			}
		);
	},

	testMessage : function ()
	{
		var message = $("#areaReferral").val ();
		var email = $("#txtTestMessage").val ();

		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=testmsg&message=" + encodeURIComponent (message) + "&email=" + email,
				success : function (response)
				{
					alert (response);
				}
			}
		);
	},

	addShare : function (refPromo, refType)
	{
		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=addshare&promo=" + refPromo + "&source=" + refType,
				dataType : "json",
				success : function (response)
				{
					Analytics.getPromoStats (refPromo);
				}
			}
		);
	},

	sendEmails : function (refPromo)
	{
		var addresses = {};
		$("#ulSelectedContacts li a ").each (function ()
		{
			addresses[$(this).attr ("id")] = $(this).html ().split ("<br>");
		});

		$(document.body).append ("<div class=\"wait\">Please wait</div>");

		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=sendemails&pid=" + refPromo + "&addresses=" + JSON.stringify (addresses),
				success : function (response)
				{
					Analytics.getPromoStats (refPromo);
					$(".wait").remove ();
					alert ("Emails sent");
					$("#divEmailAddresses").hide ("fast");
				}
			}
		);
	},

	addUSupporter : function (refPromo, refUser)
	{
		$.ajax
		(
			{
				type : "post",
				url : mainUrl + "mods/promotion/receiver.php",
				data : "req=addsupporter&promotion=" + refPromo + "&uid=" + refUser,
				success : function (response)
				{

				}
			}
		);
	}
};
