var IE6 = false /*@cc_on || @_jscript_version < 5.7 @*/;
var filterShown;
var globalCid;
var globalType;

// ellipsis prob
// One line ellipsis
(function($){
        $.fn.ellipsis = function(optionalWidth){               
                this.each(function(){
                	$(this).css({marginRight: '-10000px'});                             

                	var w;
	                if (!optionalWidth)
	                {
	                	w = $(this).width() - 10000;
	                }
	                else
	                { 
	                	w = optionalWidth;
	                }
	                
	                var t = $(this).html();
	                var length = t.length;
	                var index = 0;
	                var prevChar;	                
	                $(this).html('<span>'+ $(this).html() +'</span>');
	                while (length> 0 && $(this).children().width() >= w) {
	                        // Check if the chop char was html tag and chop it fully
	                        // Assumption no nested tags
	                        if (t.charAt(length - 1) == '>' && length > 2 && (t.charAt(length - 2) == 'b' || t.charAt(length - 2) == 'B')) {
	                        	var ltAmount = 0;
	                        	prevChar = '';

                        		while (ltAmount != 1 && length > 0) {
                        			if (t.charAt(length - 1) == '<' && (prevChar == 'b' || prevChar == 'B')) {
	                        			ltAmount = ltAmount + 1;
	                        		}
	                        		
                        			prevChar = t.charAt(length - 1);
	                        		
		                        	t = t.substr(0, length - 1);	                        
		                        	length = length - 1;
	                        	}
	                        }
	                        else {
	                        	t = t.substr(0, length - 1);	                        
	                        	length = length - 1;
	                        }
	                        
	                        $(this).children().html(t + "...");
	                }
  				});  				
        }
})(jQuery);

// Multi-line ellipsis
(function($){
        $.fn.ellipsisML = function(optionalHeight){
                this.each(function(){
	                var h;
	                
	                if (!optionalHeight)
	                {
	                	h = $(this).height();
	                }
	                else
	                { 
	                	h = optionalHeight;
	                }
	                
	                var t = $(this).html();
	                var length = t.length;	                
	                var index = 0;
	                var prevChar;
	                $(this).html('<span>'+ $(this).html() +'</span>');
	                while (length> 0 && $(this).children().height() > h) {
                        // Check if the chop char was html tag and chop it fully
                        // Assumption no nested tags
                        if (t.charAt(length - 1) == '>' && length > 2 && (t.charAt(length - 2) == 'b' || t.charAt(length - 2) == 'B')) {
                        	var ltAmount = 0;
                        	prevChar = '';
                        	while (ltAmount != 1 && length > 0) {
                        		if (t.charAt(length - 1) == '<' && (prevChar == 'b' || prevChar == 'B')) {
                        			ltAmount = ltAmount + 1;
                        		}
                        		
                        		prevChar = t.charAt(length - 1);
                        		
	                        	t = t.substr(0, length - 1);	                        
	                        	length = length - 1;
                        	}
                        }
                        else {
	                        t = t.substr(0, length - 1);
	                        length = length - 1;
	                    }
	                    
                        $(this).children().html(t + "...");
	                }
	            });
        }
})(jQuery);

/*
 * jQuery UI fade effect, based on pulsate
 *
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * Depends:
 *	effects.core.js
 */
(function($) {

$.effects.fade = function(o) {

	return this.queue(function() {

		// Create element
		var el = $(this);

		// Set options
		var speed = 500;
		var mode = o.options.mode || 'show'; // Set Mode

		// Animate
		if (mode == 'show') {
			el.fadeIn(speed);
		} else {
			el.fadeOut(speed);
		};
		el.queue('fx', function() { el.dequeue(); });
		el.dequeue();
	});
};

})(jQuery);

function fixDescriptionContainerSize() {
	$(".titleAndDesc").each(function() {
		titleHeight = $(this).find('.clngTitleContainer').height();
		clngDescDOM = $(this).find('.clngDesc');
		
		// -9 cause of the margin		
		clngDescDOM.height($(this).height() - titleHeight - 9);

		// In order to make the ellipsis loop minimal one line of desc can be removed
		// cause the title is more than one line		
		// TODO: chop but not in the middle of bold
		if (titleHeight > 40 && clngDescDOM.text().length > 250 - 100)
			clngDescDOM.html(chopSmartTakeExtraIfBolded(clngDescDOM.html(), 150) + "...");
	});
}

function chopSmartTakeExtraIfBolded(text, newLength) {
	retVal = text.substr(0, newLength);
	nextLTPos = text.indexOf("<", newLength);
	
	// Take the sentence until the end of the closing tag
	if (nextLTPos > 0 && text.charAt(nextLTPos + 1) == '/') {
		retVal = retVal + text.substr(newLength, nextLTPos + 3 - newLength + 1);
	}
	
	return retVal;
}

$(document).ready(function(){
    filterShown = !$('#resultColumn').hasClass('resultColumnNoFilter'); 

	// Form submit
	$("#find").click(function(){
		if ($("#q").val() == "Enter Keyword" || $("#q").val() == "Enter your skills or interests"){
			$("#q").val("");
		}
		$("#searchForm").submit();
	});
	$('#q').keypress(function(e){
		var code = (e.keyCode ? e.keyCode : e.which);
 		if(code == 13) { //Enter keycode
			$("#searchForm").submit();
			e.preventDefault();
 		}
	});
	$("#q").autocomplete({ width: autoCompleteSize, serviceUrl:'/suggest.jsp', onSelect: function(value, data) {$("#find").click();} });
		
	// Slider part - only if filter exist in the page
	if ($('#filterColumn').length > 0) {
		$('#fixRateSlider').slider({
			range: "min",
			value: eval(getParam('ffx', '0')),
			min: 0,
			max: 4,
			slide: function(event, ui) { setFixRateText(ui.value); },
			start: function(event, ui) { fixRateOldVal = ui.value; },
			change: function(event, ui) { 
				if (fixRateOldVal != ui.value) { 
					if (ui.value == 0) {
						window.location.href = removeParam(removeParam(window.location.href, 'ffx'), 'page');
					}
					else {
						window.location.href = removeParam(addFilterParam('ffx', ui.value, 'ffx'), 'page'); 
					}
				}
			}
			
		});
		
		setFixRateText($('#fixRateSlider').slider('option', 'value'));
				
		$('#hrRateSlider').slider({
			range: "min",
			value: eval(getParam('fhr', '0')),
			min: 0,
			max: 4,
			slide: function(event, ui) { setHourlyRateText(ui.value); },
			start: function(event, ui) { hrRateOldVal = ui.value; },
			change: function(event, ui) { 
				if (hrRateOldVal != ui.value) { 
					if (ui.value == 0) {
						window.location.href = removeParam(removeParam(window.location.href, 'fhr'), 'page');
					}
					else {
						window.location.href = removeParam(addFilterParam('fhr', ui.value, 'fhr'), 'page'); 
					}
				}
			}
		});

		setHourlyRateText($('#hrRateSlider').slider('option', 'value'));
		
		if ($('#timeleftSlider').length > 0) {
			$('#timeleftSlider').slider({
				range: "min",
				value: eval(getParam('ftl', '-1')) + 1,
				min: 0,
				max: 4,
				slide: function(event, ui) { setTimeLeftText(ui.value); },
				start: function(event, ui) { timeleftOldVal = ui.value; },
				change: function(event, ui) {
					if (timeleftOldVal != ui.value) {
						if (ui.value == 0) {
							window.location.href = removeParam(removeParam(window.location.href, 'ftl'), 'page');
						}
						else {
							window.location.href = removeParam(addFilterParam('ftl', ui.value - 1, 'ftl'), 'page');
						}
					}
				}			
			});
			
			setTimeLeftText($('#timeleftSlider').slider('option', 'value'));
		}
		
		if ($('#postSlider').length > 0) {
			$('#postSlider').slider({
				range: "min",
				value: eval(getParam('fcd', '-1')) + 1,
				min: 0,
				max: 4,
				slide: function(event, ui) { setPostDateText(ui.value); },
				start: function(event, ui) { postdateOldVal = ui.value; },
				change: function(event, ui) {
					if (postdateOldVal != ui.value) {
						if (ui.value == 0) {
							window.location.href = removeParam(removeParam(window.location.href, 'fcd'), 'page');
						}
						else {
							window.location.href = removeParam(addFilterParam('fcd', ui.value - 1, 'fcd'), 'page');
						}
					}
				}			
			});
			
			setPostDateText($('#postSlider').slider('option', 'value'));
		}
	}
	
	$('a.external_link').click( function() { 
		window.open(this.href);  
		return false; 
	});
	
	$('#mailTB').keypress(function(e){
		var code = (e.keyCode ? e.keyCode : e.which);
 		if(code == 13) { //Enter keycode
			processEmailAlerts();
			e.preventDefault();
 		}
	});
	$('#submitEmailAlert').click(function(){ processEmailAlerts(); });
	
	fixDescriptionContainerSize();
	$(".ellipsisML").ellipsisML();	
	
	$('.ui-slider-handle').show();
	
	$('#filterSectionContent h4').each(function(index){
		$(this).find('a').click(function(){						   
			if($(this.parentNode).hasClass('blackHeadingOpen')){
				$('.showFilterSection').eq(index).hide();
				$(this.parentNode).removeClass('blackHeadingOpen');
				$(this.parentNode).addClass('blackHeadingClosed');
			}else if($(this.parentNode).hasClass('blackHeadingClosed')){
				$('.showFilterSection').eq(index).show();
				$(this.parentNode).removeClass('blackHeadingClosed');
				$(this.parentNode).addClass('blackHeadingOpen');
			}

			$.cookie($(this).attr("id"), $.cookie($(this).attr("id")) != null ? null : "1", { expires: 3650 });				
						
			repairHeights();
			 	
			return false;
		});		  
	});
	
	$('.projectSection').hover(function() {
		var footer = $(this).find(".projectBoxFooter");
	
		$(this).removeClass("projectSection");
		$(this).addClass("projectSectionHover");
		if (!footer.hasClass("footerBG")) { 
			footer.addClass("footerBG");
		}
	}, function() {
		var footer = $(this).find(".projectBoxFooter");
		$(this).removeClass("projectSectionHover");
		$(this).addClass("projectSection");
		
		if (!footer.parent().find('.moreTools').is(':visible') && !footer.parent().find('.siteContainer').is(':visible')) {
			footer.removeClass("footerBG");
		}
    });
	
	$('.projectBoxFooter').each(function(index){
		$(this).find('.siteLink').click(function(){	
			var isSiteOpen = $('.siteContainer').eq(index).is(':visible');
			
			if(!isSiteOpen){
				$.getJSON("/getSiteDetailsJSON.jsp", {sid:$(this).attr('href').substring(1)}, function(data){
					var jsonObject = data;
					var desc;

					enlargeProjectHeights(360);
					$('.hrBG').eq(index).show();
					var footer = $('.projectBoxFooter').eq(index);
					if (!footer.hasClass('footerBG')){  
						footer.addClass('footerBG');
					}  
					$('.siteLink').eq(index).text('Hide Info');
					$('.siteContainer').eq(index).show();  
					$('.moreTools').eq(index).hide();
					$('.moretoolsIcon').eq(index).removeClass('moretoolsIconMinus');	
					$('.moreToolsText').eq(index).text('More Tools');
					$('.clngBottom').eq(index).addClass('clngBlueBottom');
					
					if(jsonObject.siteImageURL != ""){
						$('.siteImage').eq(index).find('img').attr('src', jsonObject.siteImageURL);	
					}else {
						$('.siteImage').eq(index).html(jsonObject.siteName);	
					}
					
					desc = jsonObject.siteDescription;
					
					if (jsonObject.explanatoryURL != null && jsonObject.explanatoryURL != ""){
						loadMovie($('.videoSection').eq(index), jsonObject.siteName, jsonObject.explanatoryURL);
						if (desc.length > 500) {
							desc = desc.substr(0, 500) + "...";
						}						
					}
					else{
						$('.movieSide').eq(index).hide();
						$('.textSide').eq(index).width('100%');
						if (desc.length > 1000) {
							desc = desc.substr(0, 1000) + "...";
						}
					}
					
					$('.siteDis').eq(index).html(desc);
					$('.viewMoreProjects').eq(index).find('strong').html(jsonObject.siteName);
										
					$('.siteRating').eq(index).find('em').find('span').html(jsonObject.siteRankersAmount);
					
					$('.siteDis').eq(index).ellipsisML(161);
					
					fGoogleEvent('siteInfo','s=' + escape(jsonObject.siteName));										
				});				
			}else{
				$('.hrBG').eq(index).hide();  
				$('.siteContainer').eq(index).hide();  
				$('.clngBottom').eq(index).removeClass('clngBlueBottom');				
				$(this).text('Site Info');
			}
			
			repairHeights();
		
			return false;
		})
	})
	
	jQuery("#fullMovie").dialog({ position: 'center', autoOpen: false, height: 381, width: 429, modal: true, show: 'fade', hide: 'fade', beforeclose: function(event, ui) { $('.fullMovieBody').html(''); }});
	$('.videoSection').click(function(){		 
		$('#ui-dialog-title-fullMovie').text($(this).parent().find(".videoTitle").text());
		$('#fullMovie').dialog({ title: 'xyz' });			
		url = $(this).parent().find(".videoUrl").text();
		$('.fullMovieBody').html('<object type=\"application/x-shockwave-flash\" style=\"width:420px; height:330px;\" data=\"' + url + '&fs=1\"><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><param name=\"movie\" value=\"' + url + '\" /></object>');
		
		jQuery('#fullMovie').show();
		jQuery('#fullMovie').dialog('open');
		$(".ui-widget-overlay").css({"opacity": "0.05"});
		
		return false;
	});						
	
	$('.closeButton').each(function(index){		
			$(this).find('a').click(function(){	
			if($('.siteContainer').eq(index).is(':visible')){
		   		$('.hrBG').eq(index).hide();  
				$('.projectBoxFooter').eq(index).removeClass('footerBG');  
				$('.siteContainer').eq(index).hide();  
				$('.siteLink').eq(index).text('Site Info');					
				$('.clngBottom').eq(index).removeClass('clngBlueBottom');
			}
			
			repairHeights();
			return false;
		});		  
	})

	$('.moretoolsIcon').each(function(index){
		$(this).find('a').click(function(){						   		   
		   var isSiteOpen = $('.moreTools').eq(index).is(':visible');
			if(!isSiteOpen){
				enlargeProjectHeights(150);	   
		   		$('.hrBG').eq(index).show();  
				var footer = $('.projectBoxFooter').eq(index);
				if (!footer.hasClass('footerBG')){  
					footer.addClass('footerBG');
				}  
				$('.siteContainer').eq(index).hide();  
				$('.siteLink').eq(index).text('Site Info');					
				$('.moreTools').eq(index).show();
				$('.moretoolsIcon').eq(index).addClass('moretoolsIconMinus');	
				$('.moreToolsText').eq(index).text('Hide Tools');
				$('.clngBottom').eq(index).addClass('clngBlueBottom');  			
				fGoogleEvent('moreTools','');
			}else {				
				$('.hrBG').eq(index).hide();  
				$('.moreTools').eq(index).hide();
				$('.moretoolsIcon').eq(index).removeClass('moretoolsIconMinus');	
				$('.moreToolsText').eq(index).text('More Tools');		
				$('.clngBottom').eq(index).removeClass('clngBlueBottom');  				
			}
				  	
			repairHeights();
			
			return false;
		});		
	})

	$('.closeMoreTools').each(function(index){
		$(this).find('a').click(function(){	
		var isSiteOpen = $('.moreTools').eq(index).is(':visible');
			if(isSiteOpen){								 						 
				$('.hrBG').eq(index).hide();  
				$('.projectBoxFooter').eq(index).removeClass('footerBG');  
				$('.moreTools').eq(index).hide();
				$('.moretoolsIcon').eq(index).removeClass('moretoolsIconMinus');	
				$('.moreToolsText').eq(index).text('More Tools');
				$('.clngBottom').eq(index).removeClass('clngBlueBottom');  
			}
	  	
	  		repairHeights();
	  		
			return false;
		});		  
	})

	$('.tabs').each(function(index){
		$(this).find('li').eq(0).find('a').click(function(e){						   
			$('.page1').eq(index).show();  
			$('.page2').eq(index).hide();
			
			repairHeights();
			 	  	
			e.preventDefault();
		});		  
	})

	$('.tabs').each(function(index){
		$(this).find('li').eq(1).find('a').click(function(e){						   
			/*$('.page1').eq(index).hide();  
			$('.page2').eq(index).show();
			
			repairHeights();*/
			 	  	
			e.preventDefault();
		});		  
	})

	function prepareMailFields(comments) {
			$('#emailTxt').val('');
			$('#commentTxt').val(comments);			
			$("#emailBox").find('em').html('&nbsp;');
						
			$('.emailSentMessage').hide();
			$('.emailSendingMessage').hide();
			$('.emailBody').show();
			
			jQuery('#emailBox').show();
			jQuery('#emailBox').dialog('open');			
			$(".ui-widget-overlay").css({"opacity": "0.05"});
			
			if (validateEmailString($("#nameTxt").val())) {
				$("#emailTxt").focus();
			}
			else {
				$("#nameTxt").focus();
			}
	}
	
	jQuery("#emailBox").dialog({ position: 'center', autoOpen: false, height: 350, width: 345, modal: true, show: 'fade', hide: 'fade' });
	$('.emailIcon').each(function(index){
		$(this).find('a').click(function(){		 			
			var url = $(this).attr('href');
			globalCid = url.substring(url.indexOf('#') + 1);
			globalType = 0;
			
			prepareMailFields('Hi,\nWhile searching for online projects on donanza.com, I came across an online project that I think you might find interesting. Check it out.');
			
			return false;
		});		  
	})
	
	$("#mailQuery").click(function() {
		globalType = 1;
		prepareMailFields('Hi,\nWhile searching for projects that can be performed online in exchange for payment or professional exposure on donanza.com, You came to mind.');
		return false;		
	});
	
	function sendingPage() {
		$('.emailSendingMessage').show();
		$('.emailBody').hide();
	}
		
	function sendProject() {
		var formArray = ['#nameTxt','#emailTxt'];
		var messageArray = ['Please enter a valid Email address','Please enter a valid Email address']

		if(validateEmails(formArray, messageArray)) {
			sendingPage();
			
			var CallParams = {}; 
			CallParams.type = "POST"; 
			CallParams.url = "/sendMail.jsp"; 
			CallParams.processData = true; 
			
			if (globalType == 0) {
				CallParams.data = {type: "0", from: $('#nameTxt').val(), to: $('#emailTxt').val(), comments: $('#commentTxt').val(), cid: globalCid};
				fGoogleEvent('sendProjectMail','c=' + globalCid);
			}
			else {
				CallParams.data = {type: "1", from: $('#nameTxt').val(), to: $('#emailTxt').val(), comments: $('#commentTxt').val(), q: query};
				joinJSONProp(CallParams.data, filtersJSON);
				fGoogleEvent('sendQueryMail','q=' + escape(query));
			}
			
			CallParams.dataType = "json"; 
			
			CallParams.success = function(data) {
				if (data.status == "ok") {
					$('.emailBoxHead').find('h3').html('Email sent successfully');
					$('.emailSentMessage').find('span').eq(0).html($('#emailTxt').val());
					$('.emailSentMessage').show();
					$('.emailSendingMessage').hide();
				}
				else {
					alert("Error occured while trying to send the mail. please try again");
				}
			};
			 
			CallParams.error = function() {
				alert("Error occured while trying to send the mail. please try again");
			};
			 
			$.ajax(CallParams); 				
		}
	}
	
	$('#nameTxt').keypress(function(e){
		var code = (e.keyCode ? e.keyCode : e.which);
 		if(code == 13) { //Enter keycode
			sendProject();
			e.preventDefault();
 		}
	});
	$('#emailTxt').keypress(function(e){
		var code = (e.keyCode ? e.keyCode : e.which);
 		if(code == 13) { //Enter keycode
			sendProject();
			e.preventDefault();
 		}
	});
	
	$('#sendProject').click(function(){		 
		sendProject();
		return false;
	});
	
	$('#sendEmailAgain').click(function(){
		$('#emailTxt').val('');	 
		$('.emailSentMessage').hide();
		$('.emailBody').show();
		
		return false;
	});
	
	$('.seeMore').each(function(index){
		$(this).click(function(){		 
			$(this).parent().find('.more').show();
			$(this).hide();
			
			repairHeights();
			
			return false;
		});		  
	})
		
	if ($('.tooltip').length > 0) {
		$('.tooltip').tooltip({ 
		    track: true, 
		    delay: 0, 
		    bodyHandler: function() {
		    	if ($(this).hasClass('next')) { 
		        	return $(this).next().html();
		        }
		        else {
		        	return $(this).parent().next().html();
		        } 
		    }, 
		    showURL: false, 
		    fade: 250,
			top: 5, 
	    	left: 5,
	    	extraClass: "maxWidth"
		});
	}
	
	repairHeights();
});

function emailAlerts() {
	if ($("#mailAlerts").hasClass('openedForMail')){
		$("#mailAlerts").addClass('closedForMail').removeClass('openedForMail');
		$("#mailAlertForm").hide();
	}
	else {
		var currentMail = $('#mailTB').val();
		
		enlargeProjectHeights(20);
		
		if ((currentMail == '' || currentMail == 'Enter your mail') && $.cookie("registerEmail") != null) {
			$('#mailTB').val($.cookie("registerEmail"));
		}
		
		$("#mailAlerts").addClass('openedForMail').removeClass('closedForMail');
		$("#mailAlertForm").show();
	}
	
	repairHeights();
}

function loadMovie(element, title, url){	
	element.html('<span class="videoTitle dispnone">' + title +'</span><span class="videoUrl dispnone">' + url +'</span><img height="161" width="215" src="' + getFirstImage(url)  + '" /><div style="margin-top: -100px; margin-right: 77px; text-align: right;"><img src="/images/youtube-play.jpg"/></div>');	
}

function setFixRateText(value){
	var valArr = ["Any","More than $100","More than $500","More than $1000","More than $10000"];
	$("#budgetOrReward .slider").eq(0).find('h3').html(valArr[value]);
}

function setHourlyRateText(value){
	var valArr = ["Any","More than $5/hr","More than $10/hr","More than $15/hr","More than $20/hr"];
	$("#budgetOrReward .slider").eq(1).find('h3').html(valArr[value]);
}

function setTimeLeftText(value){
	var valArr = ["Any","1 day or less","Between 1-3 days","Between 3-7 days","More than 7 days"];
	$("#timeLeft .slider").find('h3').html(valArr[value]);
}

function setPostDateText(value){
	var valArr = ["Any","1 day or less","Last 3 days","Last 7 days","Last 30 days"];
	$("#postDate .slider").find('h3').html(valArr[value]);
}		

function getParam(name, defaultValue)
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\?&]"+name+"=([^&#]*)");
  var results = regex.exec(window.location.href);
  
  return (results == null ? defaultValue : results[1]);
}

function removeParam(url, paramName){
	retVal = url.replace(new RegExp(paramName + '=\\d+&|&' + paramName +'=\\d+|' + paramName +'=\\d+', 'i'), '');
	retVal = retVal.replace("&&", "&");
	return retVal;
}

function addFilterParam(paramName, paramValue, paramToRemoveName){
	var currUrl = window.location.href;
	var bookmark = "";

	// remove bookmark and add it in the end (if exist)	
	bookmarkIndex = currUrl.indexOf("#");
	if (bookmarkIndex > 0) {
		bookmark = currUrl.substr(bookmarkIndex);
		currUrl = currUrl.substr(0, bookmarkIndex);
	}
	
	currUrl = removeParam(removeParam(currUrl, paramToRemoveName), paramName);
	
	if (currUrl.indexOf("&") > 0 || (currUrl.indexOf("?") > 0 && currUrl.indexOf("?") < currUrl.length - 1)) {
		currUrl = currUrl + "&" + paramName + "=" + paramValue;
	}
	else if (currUrl.indexOf("?") > 0) {
		currUrl = currUrl + paramName + "=" + paramValue;
	}
	else {
		currUrl = currUrl + "?" + paramName + "=" + paramValue;
	}
	
	return currUrl + bookmark;	
}

function addParam(currUrl, paramName, paramValue){
	var bookmark = "";

	// remove bookmark and add it in the end (if exist)	
	bookmarkIndex = currUrl.indexOf("#");
	if (bookmarkIndex > 0) {
		bookmark = currUrl.substr(bookmarkIndex);
		currUrl = currUrl.substr(0, bookmarkIndex);
	}

	currUrl = removeParam(currUrl, paramName);
	
	if (currUrl.indexOf("&") > 0 || (currUrl.indexOf("?") > 0 && currUrl.indexOf("?") < currUrl.length - 1)) {
		currUrl = currUrl + "&" + paramName + "=" + paramValue;
	}
	else if (currUrl.indexOf("?") > 0) {
		currUrl = currUrl + paramName + "=" + paramValue;
	}
	else {
		currUrl = currUrl + "?" + paramName + "=" + paramValue;
	}
	
	return currUrl + bookmark;	
}

function repairHeights(){
	setHeighs(getNewHeight());	
}

function enlargeProjectHeights(incBy){
	var avail = availProjectsHeight();

	if (avail < incBy){
		setHeighs(getNewHeight() + incBy - avail);
	}	
}

function getNewHeight(){
	var filterHeight = $('#filterSectionRealHeight').height() + 25;
	var resultHeight = $('#resultColumnRectangleContentRealHeight').height();

	if (filterShown) {
		return Math.max(filterHeight, resultHeight) + 10; // + 10 for extra safe so no scrollbar will appear
	}
	else {
		return resultHeight + 10; // + 10 for extra safe so no scrollbar will appear
	}
}

function setHeighs(height){
	if (autoResizeMode) {	
		$('.resultColumnRectangleContent').height(height);
		
		if (filterShown) {
			$('#filterColumn').height(height);
		}
		else {
			$('#filterColumn').height('auto');
		}
	}
}

function availProjectsHeight(){
	if (filterShown) {
		return $('.resultColumnRectangleContent').height() - $('#resultColumnRectangleContentRealHeight').height() - 10; // -10 just for extra safe
	}
	else {
		return 0;
	}
}

function validateEmailString(email) {
	var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+[a-zA-Z0-9]{2,4}$/;
	return email != "" && email.match(emailRegEx);
}

function validateEmails(formArray, messageArray){
	var isValid = true;
	
	for(var i=0; i<formArray.length; i++){
		str = $(formArray[i]).val();
		if(validateEmailString(str)){		
			$("#emailBox").find('em').eq(i).html('&nbsp;');	
		}else{
			$("#emailBox").find('em').eq(i).html(messageArray[i]);	
			isValid = false;
		}
	}
	
	return isValid;
}

function getFirstImage(url, size) {
	if(url === null){ return ""; }
	
	size = (size === null) ? "big" : size;
	var vid;
	var results;
	
	var index = url.lastIndexOf("/");
	
	vid = ( index == -1 ) ? url : url.substr(index + 1);
	
	index = vid.indexOf("?");
	
	if (index != -1)
		vid = vid.substr(0, index);
	
	if(size == "small"){
		return "http://img.youtube.com/vi/" + vid + "/2.jpg";
	}else {
		return "http://img.youtube.com/vi/" + vid + "/0.jpg";
	}
}

function joinJSONProp(srcJSON, morePropJSON) {
	for (var key in morePropJSON) {
	  if (morePropJSON.hasOwnProperty(key)) {
	    srcJSON[key] = morePropJSON[key];
	  }
	}
}

function processEmailAlerts() {
	var mailString = $("#mailTB").val();
	if (validateEmailString(mailString)) {
		$('#submitEmailAlert').attr("disabled", "disabled");
		$('#msg').text('Processing request, please wait...');
		$('#msg').removeClass('error');
		enlargeProjectHeights(15);
		repairHeights();
		
		$.cookie("registerEmail", mailString, { expires: 3650 });

		var CallParams = {}; 
		CallParams.type = "POST"; 
		CallParams.url = "/registerMailAlerts.jsp"; 
		CallParams.processData = true; 
		CallParams.data = {m: mailString, q: query};
		joinJSONProp(CallParams.data, filtersJSON);
		fGoogleEvent('registerMailAlerts','m=' + mailString + '&q=' + escape(query));
		
		CallParams.dataType = "json"; 
		
		CallParams.success = function(data) {
			if (data.status == "ok") {
				$("#mailTB").css('display','none');
				$("#submitEmailAlert").css('display','none');
				enlargeProjectHeights(35);
				$('#msg').html('<strong>Please check your email. We have sent a confirmation message.</strong><br/>Approve it and start receiving emails with project alerts.');
				repairHeights();
			}
			else if (data.status == "exists") {
				$('#msg').html("Mail address already has a email alert for this search");
				$('#msg').addClass('error');				
				$('#submitEmailAlert').removeAttr("disabled");
			}
			else {
				$('#msg').html("Error occured while trying to send the mail. please try again");
				$('#msg').addClass('error');
				$('#submitEmailAlert').removeAttr("disabled");
			}
		};
		 
		CallParams.error = function() {
			$('#msg').html('Error occured while trying to register to mail alerts. please try again');
			$('#msg').addClass('error');
			$('#submitEmailAlert').removeAttr("disabled");
		};
		 
		$.ajax(CallParams); 				
	}
	else {
		$('#msg').html('Please enter a valid mail');
		$('#msg').addClass('error');
		enlargeProjectHeights(15);
		repairHeights();
	}
}