var browser = '';
$.each($.browser, 
	function(i, value) {
		if (value === true) {
			browser = i;
		}
	}
);

var userAgent = navigator.userAgent.toLowerCase();
if (/chrome/.test(userAgent)) {
	browser = 'chrome';
} else if (/webkit/.test(userAgent)) {
	browser = 'webkit';
} else if (/opera/.test(userAgent)) {
	browser = 'opera';
} else if (/msie/.test(userAgent)) {
	browser = 'msie';
} else if (/mozilla/.test(userAgent)) {
	browser = 'mozilla';
}

var version = (userAgent.match(/.+(?:rv|it|ra|ie|me)[\/: ]([\d.]+)/) || [])[1];

$(window).bind('load', function() {

	// Pre-load menu images.
	$('img.menu_hover').each(
		function() {
			$('<img/>').src = this.src.replace(/\.png$/, '_selected.png');
		}
	);

});

$(document).ready(function() {

	if (browser != 'msie' && browser != 'chrome') {
		$('.box').corners('4px');
		$('div.box_shadow1').corners('8px');
		$('div.box_shadow2').corners('6px');
		$('div.box_title').corners('2px top');
		$('div.header_links').corners('4px');
		$('div.box_top_bar').corners('2px top');
		$('div.thumbnail_box_content').corners('4px');
		$('div.thumbnail_box_content_red_border').corners('4px');
		$('div.thumbnail_shadow1').corners('10px');
		$('div.thumbnail_shadow2').corners('8px');
		$('div.thumbnail_shadow3').corners('6px');
	}

	$('img.menu_hover').hover(
		function(){
			this.src = this.src.replace(/\.png$/, '_selected.png');
		},
		function(){
			this.src = this.src.replace(/_selected\.png$/, '.png');
		}
	);

	$('a.sort').click(
		function(){
			var url = String(window.location);
			var sort_field = $(this).attr('sort_field');
			url = add_param_to_url(url, 'sort_field', sort_field);
			var sort_order = $(this).attr('sort_order');
			url = add_param_to_url(url, 'sort_order', sort_order);
			url = remove_param_from_url(url, 'page');
			window.location.href = url
		}
	);

	$('select.sort_order').change(
		function(){
			var selected_sort_order = $(this).val();
			var url = String(window.location);
			url = add_param_to_url(url, 'sort_order', selected_sort_order);
			url = remove_param_from_url(url, 'page');
			window.location.href = url
		}
	);

	$('a.pager_link').click(
		function(event) {
			var url = String(window.location);
			var page = $(this).attr('page');
			url = add_param_to_url(url, 'page', page);
			window.location.href = url;
			event.preventDefault();
		}
	);

	$('a.category_link').click(
		function(event) {
			var url = '/blog/get_blogs' //String(window.location);
			var page = $(this).attr('desired_category');
			url = add_param_to_url(url, 'desired_category', page);
			window.location.href = url;
			event.preventDefault();
		}
	);

	$('a.blog_link').click( 
		function(event) {
			//var url = String(window.location);
			var url = '/blog/get_blog'
			var blogid = $(this).attr('blogid');
			url = add_param_to_url(url, 'blogid', blogid);
			window.location.href = url;
			event.preventDefault();
		}
	);
	
	$('a.project_link').click( 
		function(event) {
			//var url = String(window.location);
			var url = '/project/get_project'
			var projectid = $(this).attr('projectid');
			url = add_param_to_url(url, 'projectid', projectid);
			window.location.href = url;
			event.preventDefault();
		}
	);	
	
	$('a.bid_history_link').click( 
		function(event) {
			//var url = String(window.location);
			var url = '/project/get_bid_history'
			var projectid = $(this).attr('projectid');
			url = add_param_to_url(url, 'projectid', projectid);
			window.location.href = url;
			event.preventDefault();
		}
	);		

	$('a#search').click(function(event) {
		var url = String(window.location);
		var search_string = $('input#search_string').val();
		if (search_string) {
			url = add_param_to_url(url, 'search_string', search_string);
		} else {
			url = remove_param_from_url(url, 'search_string');
		}
		url = remove_param_from_url(url, 'page');
		window.location.href = url
		event.preventDefault();
	});

	$('input#search_string').keyup(function(event) {
		var ENTER_KEY = 13;
		if (event.which === ENTER_KEY) {
			$('a#search').click();
		}
	});

	$('a#search_clear').click(function(event) {
		var url = String(window.location);
		url = remove_param_from_url(url, 'search_string');
		url = remove_param_from_url(url, 'page');
		window.location.href = url
		event.preventDefault();
	});

	$('a.form_submit').click(function(event) {
		$('form').submit();
		event.preventDefault();
	});
	
	$('a.single_form_submit').click(function(event) {
		var id=this.id.replace(/single_form_submit_link_/i,'')
		$('form#single_form_submit_'+id).submit();
		event.preventDefault();
	});
	
	$('a.delete_blog_submit').click(function(event) {
		if (confirm('Are you sure you want to delete this blog?')) {
			var id=this.id.replace(/delete_blog_submit_link_/i,'')
			$('form#delete_blog_submit_'+id).submit();
			event.preventDefault();
		}
	});	

	$('[text_limit]').keyup(function() {
		var text_limit = $(this).attr('text_limit');
		var s = $(this).val().substr(0, text_limit);
		$(this).val(s);
		$('#char_count').text((text_limit - s.length) + ' characters remaining');
	});

	$('textarea').elastic();

});

function log_var(name, obj) {
	var message = '';
	if (obj) {
		var type = '';
		//if (typeof obj === 'object') {
			 //type = /(\w+)\(/.exec(obj.constructor.toString())[1];
		//} else {
			type = typeof obj;
		//}
		message = '[' + type + '] ';
		if (browser === 'mozilla') {
			message = message + obj.toSource();
		} else {
			message = message + obj;
		}
	}
	message = name + ': ' + message;
	window.log(message);
}

function log(message) {
	//alert(message);
	if (browser === 'mozilla') {
		console.log(message);
	}
}

$().ajaxError(function(event, XMLHttpRequest, options, error) {
		if (XMLHttpRequest.responseText) {
			var data = JSON.parse(XMLHttpRequest.responseText);
			if (data.error === 'session_expired') {
				window.location.href = data.url;
			}
		}
	}
);

function add_param_to_url(url, name, value) {
	if (url.search(/\?/) == -1) {
		url = url + '/?' + name + '=' + value;
	} else if (url.split(/\/\?/)[1].search(name) == -1) {
		url = url + '&' + name + '=' + value;
	} else {
		var param_string = url.split(/\/\?/)[1];
		var param_pairs = param_string.split(/&/);
		var new_param_string = '';
		for (var i = 0; i < param_pairs.length; i++) {
			temp_name = param_pairs[i].split(/=/)[0];
			if (temp_name == name) {
				temp_value = value;
			} else {
				temp_value = param_pairs[i].split(/=/)[1];
			}
			if (new_param_string.length == 0) {
				new_param_string += temp_name + '=' + temp_value;
			} else {
				new_param_string += '&' + temp_name + '=' + temp_value;
			}
		}
		url = url.split(/\/\?/)[0] + '/?' + new_param_string;
	}
	return url;
}

function remove_param_from_url(url, name) {
	if (url.search(/\?/) != -1 && url.split(/\/\?/)[1].search(name) != -1) {
		var param_string = url.split(/\/\?/)[1];
		var param_pairs = param_string.split(/&/);
		var new_param_string = '';
		for (var i = 0; i < param_pairs.length; i++) {
			temp_name = param_pairs[i].split(/=/)[0];
			if (temp_name == name) {
				continue;
			}
			temp_value = param_pairs[i].split(/=/)[1];
			if (new_param_string.length == 0) {
				new_param_string += temp_name + '=' + temp_value;
			} else {
				new_param_string += '&' + temp_name + '=' + temp_value;
			}
		}
		url = url.split(/\/\?/)[0] + '/?' + new_param_string;
	}
	return url;
}

