var ajxDivName='';
var selectedAppId;

//=========================================================
// Trim the string
function Trim(s) 
{
  // Remove leading spaces and carriage returns
  while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
  {
    s = s.substring(1,s.length);
  }
  // Remove trailing spaces and carriage returns
  while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r'))
  {
    s = s.substring(0,s.length-1);
  }
  return s;
}

//for email address validation
function isValidEmail(emailStr) {
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	var emailPat=/^(.+)@(.+)$/;
	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
	var validChars="\[^\\s" + specialChars + "\]";
	var quotedUser="(\"[^\"]*\")";
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
	var atom=validChars + '+';
	var word="(" + atom + "|" + quotedUser + ")";
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
	var matchArray=emailStr.match(emailPat);
	if (matchArray==null) {
		alert("Email address seems incorrect (check @ and .'s)");
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	// Start by checking that only basic ASCII characters are in the strings (0-127).
	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			alert("Ths username contains invalid characters in e-mail address.");
			return false;
		}
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			alert("Ths domain name contains invalid characters in e-mail address.");
			return false;
		}
	}
	if (user.match(userPat)==null) {
		alert("The username doesn't seem to be valid in e-mail address.");
		return false;
	}
	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {
		for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("Destination IP address is invalid!");
				return false;
	   		}
		}
		return true;
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			alert("The domain name does not seem to be valid in e-mail address.");
			return false;
	   }	
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && 
		domArr[domArr.length-1].search(knownDomsPat)==-1) {
		alert("The address must end in a well-known domain or two letter " + "country.");
		return false;
	}

	if (len<2) {
		alert("This e-mail address is missing a hostname!");
		return false;
	}	
	return true;
}

// create ajax object
function GetXmlHttpObject(handler)
{ 
	var objXMLHttp=null
	if (window.XMLHttpRequest)
	{
		objXMLHttp=new XMLHttpRequest()
	}
	else if (window.ActiveXObject)
	{
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
	}
	return objXMLHttp
}

// close colorbox and redirect to url if specified
function close_colorbox(url)
{
	$.fn.colorbox.close();
	if(url != "")
	{
		window.location = url;
	}
}
//=========================================================


//=========================================================
/* SEARCH BOX FUNCTIONS STARTS */
function submit_search_form()
{
	text = document.search_form.kwd.value;
	if(Trim(text) != '' && Trim(text) != 'Search For Fun New Apps Here...')
	{
		document.search_form.submit();
	}
	else
	{
		alert("Please enter the keyword you want to search!");
		document.search_form.kwd.focus();
	}
}

function box_onblur()
{
	text = document.search_form.kwd.value;
	if(Trim(text) == '')
	{
		document.search_form.kwd.value = 'Search For Fun New Apps Here...';
	}
}

function box_focus()
{
	text = document.search_form.kwd.value;
	if(Trim(text) == 'Search For Fun New Apps Here...')
	{
		document.search_form.kwd.value = '';
	}
}
/* SEARCH BOX FUNCTIONS ENDS */
//=========================================================


//=========================================================
/* AUTOSUGGESTION FUNCTIONS STARTS */
$(document).ready(function(){
	$("#kwd").autocomplete(
		"ajx-auto-suggest.php?for=apps",
		{
			delay:5,
			minChars:2,
			matchSubset:1,
			matchContains:1,
			cacheLength:10,
			maxItemsToShow:20,
			onItemSelect:function(li){ findAppValue(li); },
			onFindValue:findAppValue,
			formatItem:function(row){ return row[0]; },
			autoFill:false
		}
	);
});

function findAppValue(li) {}
/* AUTOSUGGESTION FUNCTIONS ENDS */
//=========================================================


//=========================================================
/* COOKIE FUNCTIONS STARTS */
function createCookie(name,value,days)
{
	var expires = "";
	if(days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		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;
}

function eraseCookie(name)
{
	createCookie(name,"",-1);
}

// Update cookie by adding value
function add_in_cookie(cookie_name,appId)
{
	var cookie_value = readCookie(cookie_name);
	
	if(cookie_value != '' && cookie_value != null)
	{
		cookie_value = Trim(cookie_value);
		if(cookie_value == appId)
		{
			cookie_value = appId;
		}
		else
		{
			// limit the cookie to not exceed the 140 character length, remove older apps
			if(cookie_value.length > 140)
			{
				var ommit = cookie_value.indexOf("-");
				if(ommit >= 0)
				{
					cookie_value = cookie_value.substring((ommit+1));
				}
			}
			
			cookie_value = cookie_value.replace(appId+"-", "");
			cookie_value = cookie_value.replace("-"+appId, "");
			cookie_value += "-"+appId;
		}
	}
	else
	{
		cookie_value = appId;
	}
	
	return cookie_value;
}

// Update cookie by removing value
function remove_from_cookie(cookie_name,appId)
{
	var cookie_value = readCookie(cookie_name);
	
	if(cookie_value != '' && cookie_value != null)
	{
		cookie_value = Trim(cookie_value);
		if(cookie_value == appId)
		{
			cookie_value = "";
		}
		else
		{
			cookie_value = Trim(cookie_value);
			cookie_value = cookie_value.replace(appId+"-", "");
			cookie_value = cookie_value.replace("-"+appId, "");
		}
	}
	else
	{
		cookie_value = appId;
	}
	
	return cookie_value;
}
/* COOKIE FUNCTIONS ENDS */
//=========================================================


//=========================================================
// Add to wishlist from listing pages
function add_to_userlist(opr,appId)
{
	if(Trim(opr) != '' && Trim(appId) != '')
	{
		if(opr == "wishlist" || opr=="ownit" || opr=="likeit" || opr=="dontlikeit")
		{
			ajxDivName = opr+"-"+appId;
			xmlHttp = GetXmlHttpObject();
			var url = 'user-add-to-list.php?opr='+opr+"&appId="+appId;
			document.getElementById(opr+"-"+appId).innerHTML = '<span class="load-link">&nbsp;</span>';			
			xmlHttp.open("GET",url,true)
			xmlHttp.onreadystatechange = userListResponse
			xmlHttp.send(null)
		}
	}
}

function userListResponse()
{
	if(xmlHttp.readyState == 4 || xmlHttp.readyState == "complete")
	{
		document.getElementById(ajxDivName).innerHTML = xmlHttp.responseText;
	}
}


function add_to_wishlist(cookie_name,appId)
{
	if(Trim(cookie_name) != '' && Trim(appId) != '')
	{
		document.getElementById("wish-"+appId).innerHTML = '<span class="load-link">&nbsp;</span>';
		
		// check already exist
		var cookie_value_temp = readCookie(cookie_name);
		if(cookie_value_temp)
		{
			if(cookie_value_temp == appId || cookie_value_temp.indexOf(appId+"-") != -1 || cookie_value_temp.indexOf("-"+appId) != -1)
			{
				document.getElementById("wish-"+appId).innerHTML = '<b><span class="content" style="color:#f00;">&nbsp;&nbsp;&nbsp;Already Added</span></b>';
				return;
			}
		}
		var cookie_value = "";
		cookie_value = add_in_cookie(cookie_name,appId);
		
		if(cookie_value != '' && cookie_value != null)
		{
			// Create cookie for one month
			createCookie(cookie_name,cookie_value,30);
			//document.getElementById("wish-"+appId).innerHTML = '<a href="javascript:void(0)" class="remove-link" onclick="remove_from_wishlist(\''+cookie_name+'\',\''+appId+'\')">Wish List</a>';
		}
		else
		{
			//document.getElementById("wish-"+appId).innerHTML = '<a href="javascript:void(0)" class="add-link" onclick="add_to_wishlist(\''+cookie_name+'\',\''+appId+'\')">Wish List</a>';
		}
		
		document.getElementById("wish-"+appId).innerHTML = '<b><span class="content" style="color:#006633;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Added</span></b>';
	}
}

// Remove from wishlist from listing pages
function remove_from_wishlist(cookie_name,appId)
{
	if(Trim(cookie_name) != '' && Trim(appId) != '')
	{
		document.getElementById("wish-"+appId).innerHTML = '<span class="load-link">&nbsp;</span>';
		
		var cookie_value = "";
		cookie_value = remove_from_cookie(cookie_name,appId);
		
		// Create cookie for one month
		createCookie(cookie_name,cookie_value,30);
		document.getElementById("wish-"+appId).innerHTML = '<a href="javascript:void(0)" class="add-link" onclick="add_to_wishlist(\''+cookie_name+'\',\''+appId+'\')">Wish List</a>';
	}
}
//=========================================================


//=========================================================
// redirect to category page, category combo in some listing pages
function loadCategoryFilter(main_url, pass_text)
{
	var catId = document.getElementById('appcategory').value;
	window.location = main_url+pass_text+catId;
}
//=========================================================


//=========================================================
// load colorbox for user action: whishlist, like, own, dont like, alert
function loadColorBox(apId, apOperation)
{
	selectedAppId = apId;
	var userSetId = readCookie('bav_ud_c');
	
	if(userSetId)	// if user is logged in
	{
		if(apOperation == "pricealert")	// open price alert box
		{
			var app_price = $('#apprice-'+apId).html();	// get price of app
			var app_name = $('#apname-'+apId).html();	// get name of app
			
			$('#priceAppPrice').html(app_price);	// set price of app in alert
			$('#priceAppName').html(app_name);		// set name of the app in alert
			
			// reset alert box
			$('input[name=alertbox]').attr('checked','');
			$('input[name=alertbox]').attr('disabled','');
			$("#txtlessprice").attr('disabled','disabled');
			$("#txtlessprice").attr('value','');
			$("#versionCheck").attr('checked','');
			$('input[name=alertbox]').parent().parent().parent().css('opacity', '0.7');
			$("#v-alert-text").html('Alert even if version updates');
			$("#free-app-cond").hide();
			
			// set price of alert in hidden box
			var replaced = app_price.replace('$','');
			if(replaced == 'Free')	// when app is free, then store price as zero and disable some alert options
			{
				replaced = 0;
				$('input[name=alertbox]').attr('disabled','disabled');
				$("#txtlessprice").attr('disabled','disabled');
				$('input[name=alertbox]').parent().parent().parent().css('opacity', '0.2');
				$("#v-alert-text").html('Alert when version updates');
				$("#free-app-cond").show();
			}
			$('#priceAppPriceHidden').val(replaced);
			
			$.fn.colorbox({width:"605px", inline:true, href:"#alertDiv"});	// open alert box
		}
		else	// other user-app operations
		{
			add_to_userlist(apOperation,apId);
		}
	}
	else	// prompt for login
	{
		$.fn.colorbox({width:"550px", height:"200px", inline:true, href:"#loginDiv"});
	}
}

// Add price / version alert on app
function sendPriceAlert()
{
	var radioValue = 0;
	var versionCheck = 0;
	var priceValue = parseFloat(Trim($("#priceAppPriceHidden").val()));
	var priceLessValue = parseFloat(Trim($("#txtlessprice").val()));
	
	if($("input[name=alertbox]:checked").val() != undefined)	// get selected radio
	{
		radioValue = $("input[name=alertbox]:checked").val();
	}
	if($("#versionCheck").is(":checked"))	// get version alert checked or not
	{
		versionCheck = 1;
	}
	priceValue = (priceValue == 'Free') ? 0 : priceValue;
	
	if(radioValue == 0 && versionCheck == 0)	// check if any alert set or not
	{
		alert("Please set at least one alert or check version update alert.");
		return false;
	}
	
	if(priceValue == 0 && radioValue > 0)
	{
		alert("Application is already free! You can't set price alert.");
		return false;
	}
	else if(radioValue == 3)
	{
		// if price alert given on particular price bases
		if(isNaN(priceLessValue))
		{
			alert("Please enter the alert price.");
			$("#txtlessprice").attr('value','');
			$("#txtlessprice").focus();
			return false;
		}
		if(priceValue <= priceLessValue)
		{
			alert("Please enter the price less than $"+priceValue+".");
			$("#txtlessprice").attr('value','');
			$("#txtlessprice").focus();
			return false;
		}
	}
	
	$("#headLoader").html('<span class="load-link">&nbsp;</span>');
	
	$.ajax({
		type: "GET",
		url: "user-price-alert.php",
		data: "radioValue="+radioValue+"&appId="+selectedAppId+"&priceValue="+priceLessValue+"&versionCheck="+versionCheck,
		success: function(data)
		{
			$("#headLoader").html('');
			
			var resp = Trim(data);
			var respSplited = resp.split("@#@#@");
			if(respSplited[0] == "0")
			{
				alert(respSplited[1]);
			}
			else
			{
				alert(respSplited[1]);
			}
			
			$.fn.colorbox.close();
		}
	});
}
//=========================================================


//=========================================================
// search page new app alert function
function alert_search_new_app(keyword)
{
	var con = confirm("Do you want to set new apps alert for this query?");
	if(con)
	{
		$.ajax({
			type: "POST",
			url: "user-search-alert.php",
			data: "keyword="+escape(keyword),
			success: function(data)
			{
				data = Trim(data);
				alert(data);
			}
		});
	}
}
//=========================================================


//=========================================================
// common things which will be executed on each page after page loads
$(document).ready(function() {
	$('.closeLB').click(function() {
		$.fn.colorbox.close();
	});
	
	$('input[name=alertbox]').click(function() {
		$('input[name=alertbox]').each(function(){
		   if($(this).is(':checked'))
		   {
				$(this).parent().parent().parent().css('opacity', '1');
		   }
		   else
		   {
				$(this).parent().parent().parent().css('opacity', '0.7');
		   }
		});
		
		var value = $(this).val();
		if(value == 3)
		{
			$("#txtlessprice").attr('disabled','');
			$("#txtlessprice").attr('value','');
		}
		else
		{
			$("#txtlessprice").attr('disabled','disabled');
			$("#txtlessprice").attr('value','');
		}
	});
});
//=========================================================
