function KeepLoggedStatus(_url){
	$.get(_url);
	setTimeout("KeepLoggedStatus('"+_url+"')",120000);
	return false;
}

function GetFormInputs(f){
	var _data={};
	$(f+" :input").each(function(){
		_data[this.name]= this.value;
	});
	return _data;
}

function DisableFormInputs(f){
	$(f+" :input").each(function(){
		this.disabled=1;
	});
}

function EnableFormInputs(f){
	$(f+" :input").each(function(){
		this.disabled=0;
	});
}

function ShowModalResult(obj){
	$("#modalResult").dialog({
//		autoOpen: false,
		bgiframe: true,
		dialogClass: "modalPopup",
		height: obj.height,
		width: obj.width,
		hide: 300,
		show: 300,
		title: obj.title,
		modal: true,
		overlay: { 
			opacity: 0.5, 
			background: "black" 
		},
		buttons: obj.buttons,
		open: function(){
			$('#modalResult').width("auto");
			if(obj.fix_height){
				$('#modalResult').height(obj.height-$('.modalPopup .ui-dialog-titlebar').outerHeight()+20);
			}
			return false;
//			if ( !$.browser.msie || $.browser.version != '6.0' ){
//				alert(1);
//				$('.ui-dialog').css("position","fixed");
//			}
//			else {
//				$('.ui-dialog').css("top",expression((document.documentElement.scrollTop || document.body.scrollTop) + Math.round(17 * (document.documentElement.offsetHeight || document.body.clientHeight) / 100) + 'px'));
//			}
		},
		close: function(){
			if(obj.close_act=='reload'){
				window.location.reload(true);
			}
			$("#loader_pic").dialog('close');
			$("#"+obj.div).dialog('close');
		}
	});
}

// DEPRECATED! PREPARED FOR DELECTION!
/*/
function Open_Add_Score_From_Wish_Form(id, sid, _title){
	if(IsNotLogged){
		location.href=redirect_url;
		return false;
	}
	
	$("#addScore").dialog({
		autoOpen: false,
		bgiframe: true,
		height: "auto",
		width: 475,
		hide: 300,
		show: 300,
		title: 'Add <span class="orange">'+_title+'</span><br>to Your Personal Scor`dit Feed!',
		modal: true, 
		overlay: { 
			opacity: 0.3, 
			background: "black" 
		},
		open: function(){
			$('#addScore').width("auto");
			return false;
		}
	});
	$("#addScore").dialog('open');
	$("#addscore_id").val(id);
	$('#scordit_from_wish_form').find('#comment').val($("#wish_edit_comment_"+sid).html());
	$('#scordit_from_wish_form').find('#addscore_sid').val(sid); 
	_current_item_title = _title;
	return false;
}

function Add_Score_From_Wish(_url, _url_2){
	$("#loader_pic").dialog('open');
	var _data = GetFormInputs("#scordit_from_wish_form");
	$.ajax({
		type: "POST",
		dataType: 'json',
		url: _url,
		data: _data,
		success: function(json,stat){
			if(json.error){
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Uh <span class="orange">Oh</span>'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html(json.message);
			}
			else {
				if(_data.pic){
					//alert("image found doing ajax upload"+_data.pic);
					//alert('jquery value hunt =='+$('#scordit_from_wish_form').find('#pic_2').val());
					//alert('posting to= '+_url_2+_data.id+'\n\r'+$('#pic_2').val());
					ajaxFileUpload(_url_2+_data.id, 'pic_2');
				}
				else if($("#wish_edit_pic_"+_data.sid).html() == 'false') {
					var _name = $('#wish_edit_name_'+_data.sid).html();
					$.ajax({
						type: "POST",
						dataType: 'html',
						url: _site_url+'/scordit/get_google_images',
						data: {'id': _data.id, 'key': _name},
						success: function(result,stat){
							$("#image_choose").dialog({
								autoOpen: false,
								bgiframe: true,
								height: 250,
								width: 900,
								position: 'center',
								hide: 300,
								show: 300,
								modal: true, 
								title: 'You didn\'t add a picture for <span class="orange">'+_name+'</span>. Maybe one of these will work?', 
								overlay: { 
									opacity: 0.7, 
									background: "black" 
								},
								buttons: {
									'None of these. I don\'t need a picture.': function() {
										$(this).dialog('close');
										window.location.reload(true);
									}
								},
								close: function(){
									//alert('made it to failure reload');
									window.location.reload(true);
								}
							});
							$("#loader_pic").dialog('close');
							$("#image_choose").dialog('open');
							$("#image_choose").html(result);
						}
					});

				}else{
				//alert("made it to final window close");
					 window.location.reload(true);
				}
			}
		}
	});
	return false;
}

function Open_Add_Wish_From_Score_Form(_id,_title){
	
	if(IsNotLogged){
		location.href=redirect_url;
		return false;
	}
	$("#addWishFromScore").dialog({
		autoOpen: false,
		bgiframe: true,
		height: 'auto',
		width: 475,
		hide: 300,
		show: 300,
		title: 'Add <span class="orange">'+_title+'</span><br>to Your Personal Wish`dit Feed!',
		modal: true, 
		overlay: { 
			opacity: 0.3, 
			background: "black" 
		},
		open: function(){
			$('#addWishFromScore').width("auto");
			return false;
		}
	});
	$("#addWishFromScore").dialog('open');
	$("#addwishfromscore_id").val(_id);
	_current_item_title = _title;
	return false;
}

function Add_Wish_From_Score(_url,result_Popup,_title,_act,_buttons){
	$("#loader_pic").dialog('open');
	var _data = GetFormInputs("#wishdit_from_score_form");
	$.ajax({
		type: "POST",
		dataType: 'json',
		url: _url,
		data: _data,
		success: function(json,stat){
			if(json.error){
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Uh <span class="orange">Oh</span>'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html(json.message);
			}
			else {
				if(result_Popup==true){
					$("#loader_pic").dialog('close');
					$("#modalResult").html('&nbsp;');
					ShowModalResult({
						height: "auto",
						width: 350,
						title: '<span class="orange">'+_title+'</span><br>has been added to your wish\'dit list!',
						close_act: _act,
						div: 'addWishFromScore',
						buttons: _buttons
					});
				}
				else window.location.reload(true);
			}
		}
	});
	return false;
}

function Open_Add_Score_From_Score_Form(id,_title){
	if(IsNotLogged){
		location.href=redirect_url;
		return false;
	}
	$("#addScoreFromScore").dialog({
		autoOpen: false,
		bgiframe: true,
		height: 'auto',
		width: 475,
		hide: 300,
		show: 300,
		title: 'Add <span class="orange">'+_title+'</span><br>to Your Personal Scor`dit Feed!',
		modal: true, 
		overlay: { 
			opacity: 0.3, 
			background: "black" 
		},
		open: function(){
			$('#addScoreFromScore').width("auto");
			return false;
		}
	});
	$("#addScoreFromScore").dialog('open');
	$("#addscorefromscore_id").val(id);
	_current_item_title = _title;
	return false;
}

function Add_Score_From_Score(_url,result_Popup,_title,_act,_buttons){
	$("#loader_pic").dialog('open');
	var _data = GetFormInputs("#scordit_from_score_form");
	$.ajax({
		type: "POST",
		dataType: 'json',
		url: _url,
		data: _data,
		success: function(json,stat){
			if(json.error){
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Uh <span class="orange">Oh</span>'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html(json.message);
			}
			else {
				if(result_Popup==true){
					$("#loader_pic").dialog('close');
					ShowModalResult({
						height: "auto",
						width: 350,
						title: '<span class="orange">'+_title+'</span><br>has been added to your scor\'dit list!',
						close_act: _act,
						div: 'addScoreFromScore',
						buttons: _buttons
					});
					$("#modalResult").dialog('open');
					$("#modalResult").html('&nbsp;');
				}
				else window.location.reload(true);
			}
		}
	});
	return false;
}
//*/

function Open_Edit_Item_Form(_id,_title){
	if(IsNotLogged){
		location.href=redirect_url;
		return false;
	}
	$("#editItem").dialog({
		autoOpen: false,
		bgiframe: true,
		height: 'auto',
		width: 475,
		hide: 300,
		show: 300,
		title: 'Edit <span class="orange">'+_title+'</span>.',
		modal: true, 
		overlay: { 
			opacity: 0.3, 
			background: "black" 
		},
		open: function(){
			$('#editItem').width("auto");
			return false;
		}
	});
	$("#editItem").dialog('open');
	$("#edititem_id").val(_id);
	$("#edit_item_name_field").val($("#item_edit_name_"+_id).html());
	$("#edit_item_foundat_field").val($("#item_edit_foundat_"+_id).html());
	$("#edit_item_category_1_field").val($("#item_edit_category_1_"+_id).html());
	$("#edit_item_category_2_field").val($("#item_edit_category_2_"+_id).html());
	$("#edit_item_comment_field").val($("#item_edit_comment_"+_id).html());
	_current_item_title = _title;
	return false;
}

function Edit_Item(){
	$("#loader_pic").dialog('open');
	var _data = GetFormInputs("#edit_item_form");
	$.ajax({
		type: "POST",
		dataType: 'json',
		url: _site_url+'/scordit/item_edit_check_edit',
		data: _data,
		success: function(json,stat){
			if(json.error){
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Uh <span class="orange">Oh</span>'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html(json.message);
			}
			else {
				if(_data.pic) {
					ajaxFileUpload(_site_url+'/scordit/update_item_pic/'+_data.id, 'edit_item_pic_field');
				}
				else window.location.reload(true);
			}
		}
	});
	return false;
}

function Open_Edit_Score_Form(_id,_title){
	if(IsNotLogged){
		location.href=redirect_url;
		return false;
	}
	$("#editScore").dialog({
		autoOpen: false,
		bgiframe: true,
		height: 'auto',
		width: 475,
		hide: 300,
		show: 300,
		title: 'Edit <span class="orange">'+_title+'</span>.',
		modal: true, 
		overlay: { 
			opacity: 0.3, 
			background: "black" 
		},
		open: function(){
			$('#editScore').width("auto");
			return false;
		}
	});
	$("#editScore").dialog('open');
	$("#editscore_id").val(_id);
	$("#edit_score_foundat_field").val($("#item_edit_foundat_"+_id).html());
	$("#edit_score_comment_field").val($("#item_edit_comment_"+_id).html());
	_current_item_title = _title;
	return false;
}

function Edit_Score(){
	$("#loader_pic").dialog('open');
	var _data = GetFormInputs("#edit_score_form");
	$.ajax({
		type: "POST",
		dataType: 'json',
		url: _site_url+'/scordit/score_edit_check_edit',
		data: _data,
		success: function(json,stat){
			if(json.error){
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Uh <span class="orange">Oh</span>'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html(json.message);
			}
			else {
				window.location.reload(true);
			}
		}
	});
	return false;
}

function Open_Edit_Wish_Item_Form(_id,_title){
	//////////////////////////edit item comparison///////////////////////
	/*
	$("#editItem").dialog('open');
	$("#edititem_id").val(_id);
	$("#edit_item_name_field").val($("#item_edit_name_"+_id).html());
	$("#edit_item_foundat_field").val($("#item_edit_foundat_"+_id).html());
	$("#edit_item_category_1_field").val($("#item_edit_category_1_"+_id).html());
	$("#edit_item_category_2_field").val($("#item_edit_category_2_"+_id).html());
	$("#edit_item_comment_field").val($("#item_edit_comment_"+_id).html());
	_current_item_title = _title;
	return false;
	*/
	///////////////////////////end of edit item comparasion/////////////////
	
	$("#editWishItem").dialog({
		autoOpen: false,
		bgiframe: true,
		height: 'auto',
		width: 475,
		hide: 300,
		show: 300,
		title: 'Edit <span class="orange">'+_title+'</span>.',
		modal: true, 
		overlay: { 
			opacity: 0.3, 
			background: "black" 
		},
		open: function(){
			$('#editWishItem').width("auto");
			return false;
		}
	});
	$("#editWishItem").dialog('open');
	$('#editwish').val(_id);
	$("#editwishitem_id").val(_id);
	$("#editwishitem_item_id").val($("#wish_edit_id_"+_id).html());
	$("#edit_wishitem_name_field").val($("#wish_edit_name_"+_id).html());
	$("#edit_wishitem_comment_field").val($("#wish_edit_comment_"+_id).html());
	_current_item_title = _title;
	return false;
}

function Edit_Wish_Item(){
	
	$("#loader_pic").dialog('open');
	var _data = GetFormInputs("#edit_wish_item_form");
	$.ajax({
		type: "POST",
		dataType: 'json',
		url: _site_url+'/scordit/wish_item_edit_check_edit',
		data: _data,
		success: function(json,stat){
			if(json.error){
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Uh <span class="orange">Oh</span>'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html(json.message);
			}
			else {
				if(_data.pic) {
					//alert('ajaxu upload off image = '+_data.pic+' for id = '+_data.id+' hitting this field ='+$('#edit_wishitem_pic_field').attr('id'));
					ajaxFileUpload(_site_url+'/scordit/update_item_pic/'+_data.item_id, 'edit_wishitem_pic_field');
				}
				else window.location.reload(true);
			}
		}
	});
	return false;
}

function Open_Edit_Wish_Form(_id,_title){
	if(IsNotLogged){
		location.href=redirect_url;
		return false;
	}
	$("#editWish").dialog({
		autoOpen: false,
		bgiframe: true,
		height: 'auto',
		width: 475,
		hide: 300,
		show: 300,
		title: 'Edit <span class="orange">'+_title+'</span>.',
		modal: true, 
		overlay: { 
			opacity: 0.3, 
			background: "black" 
		},
		open: function(){
			$('#editWish').width("auto");
			return false;
		}
	});
	$("#editWish").dialog('open');
	$("#editwish_id").val(_id);
	$("#edit_wish_comment_field").val($("#wish_edit_comment_"+_id).html());
	_current_item_title = _title;
	return false;
}

function Edit_Wish(){
	$("#loader_pic").dialog('open');
	var _data = GetFormInputs("#edit_wish_form");
	$.ajax({
		type: "POST",
		dataType: 'json',
		url: _site_url+'/scordit/wish_edit_check_edit',
		data: _data,
		success: function(json,stat){
			if(json.error){
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Uh <span class="orange">Oh</span>'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html(json.message);
			}
			else {
				window.location.reload(true);
			}
		}
	});
	return false;
}

function Open_Add_Comment_Form(_id,_title){
	if(IsNotLogged){
		location.href=redirect_url;
		return false;
	}
	$("#addComment").dialog({
		autoOpen: false,
		bgiframe: true,
		height: "auto",
		width: 475,
		hide: 300,
		show: 300,
		title: 'Add a comment on<br>'+_title+'',
		modal: true, 
		overlay: { 
			opacity: 0.3, 
			background: "black" 
		},
		open: function(){
			$('#addComment').width("auto");
			return false;
		}
	});
	$("#addComment").dialog('open');
	$("#addcomment_id").val(_id);
	_current_item_title = _title;
	return false;
}

function Add_Comment(_url){
	$("#loader_pic").dialog('open');
	var _data = GetFormInputs("#scordit_comment_form");
	$.ajax({
		type: "POST",
		dataType: 'json',
		url: _url,
		data: _data,
		success: function(json,stat){
			if(json.error){
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Uh <span class="orange">Oh</span>'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html(json.message);
			}
			else {
				window.location.reload(true);
			}
		}
	});
	return false;
}

function Open_Edit_Comment_Form(_id){
	if(IsNotLogged){
		location.href=redirect_url;
		return false;
	}
	$("#editComment").dialog({
		autoOpen: false,
		bgiframe: true,
		height: "auto",
		width: 475,
		hide: 300,
		show: 300,
		title: 'Edit your comment',
		modal: true, 
		overlay: { 
			opacity: 0.3, 
			background: "black" 
		},
		open: function(){
			$('#editComment').width("auto");
			return false;
		}
	});
	$("#editComment").dialog('open');
	$("#edit_comment_field").val($("#comment_text_"+_id).html());
	$("#editcomment_id").val(_id);
	return false;
}

function Edit_Comment(){
	$("#loader_pic").dialog('open');
	var _data = GetFormInputs("#scordit_edit_comment_form");
	$.ajax({
		type: "POST",
		dataType: 'json',
		url: _site_url+'/scordit/comment_edit_check_edit',
		data: _data,
		success: function(json,stat){
			if(json.error){
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Uh <span class="orange">Oh</span>'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html(json.message);
			}
			else {
				window.location.reload(true);
			}
		}
	});
	return false;
}

function Add_Sticker(_url){
	$("#loader_pic").dialog('open');
	var _data = GetFormInputs("#sticker_add_form");
	$.ajax({
		type: "POST",
		dataType: 'json',
		url: _url,
		data: _data,
		success: function(json,stat){
			if(json.error){
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Uh <span class="orange">Oh</span>'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html(json.message);
			}
			else {
				$("#loader_pic").dialog('close');
				$("#addSticker").dialog('close');
			}
		}
	});
	return false;
}

function FlagAsInappropriate(_id,_type,_url){
	if(IsNotLogged){
		location.href=redirect_url;
		return false;
	}
	$("#loader_pic").dialog('open');
	$.ajax({
		type: "POST",
		dataType: 'json',
		url: _url,
		data: {'id': _id, 'type': _type},
		success: function(json,stat){
			if(json.error){
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Uh <span class="orange">Oh</span>'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html(json.message);
			}
			else {
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Thank <span class="orange">you</span>!'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html('');
			}
		}
	});
	return false;
}

function DeleteYourComment(_id){
	$("#loader_pic").dialog('open');
	$.ajax({
		type: "POST",
		dataType: 'json',
		url: _site_url+'/scordit/delete_comment',
		data: {'id': _id},
		success: function(json,stat){
			if(json.error){
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Uh <span class="orange">Oh</span>'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html(json.message);
			}
			else {
				window.location.reload(true);
			}
		}
	});
	return false;
}

function DeleteItem(_id,_url){
	$("#loader_pic").dialog('open');
	$.ajax({
		type: "POST",
		dataType: 'json',
		url: _url,
		data: {'id': _id},
		success: function(json,stat){
			if(json.error){
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Uh <span class="orange">Oh</span>'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html(json.message);
			}
			else {
				window.location.reload(true);
			}
		}
	});
	return false;
}

function scordit_Image_Suggest(_id,_url, success_message, reloadOnClose){
	$("#loader_pic").dialog('open');
	$.ajax({
		type: "POST",
		dataType: 'json',
		url: _site_url+'/scordit/update_item_pic_from_url',
		data: {'id': _id, 'url': _url},
		success: function (data, status)
		{
			if ( success_message ) {
				StdMessage(success_message, '', false, '', reloadOnClose);
			} else {
				window.location.reload();
			} //IF
			
//			alert('from ajaxfileupload() ='+data);
		},
		error		: function () {
			StdMessage('Uh <span class="orange">Oh</span>', 'Ajax request failed. Try again later.', false);
		}//FUNC error
	});
	return false;
}

function calculateBoxSize(_val,_width){
	var div = document.createElement('DIV'); div.id = "_test_div";
	$("body").append(div);
	$("#_test_div").width((_width-44));
	$("#_test_div").addClass("ui-dialog-testdiv");
	$("#_test_div").html(_val);
	var h = $(div).height();
//	$("#_test_div").remove();
	alert(h);
	return (h+38);
}

function urlencode( str ) {
	// http://kevin.vanzonneveld.net
	// +	 original by: Philip Peterson
	// +	 improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +			input by: AJ
	// +	 improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// %					note: info on what encoding functions to use from: http://xkr.us/articles/javascript/encode-compare/
	// *		 example 1: urlencode('Kevin van Zonneveld!');
	// *		 returns 1: 'Kevin+van+Zonneveld%21'
	// *		 example 2: urlencode('http://kevin.vanzonneveld.net/');
	// *		 returns 2: 'http%3A%2F%2Fkevin.vanzonneveld.net%2F'
	// *		 example 3: urlencode('http://www.google.nl/search?q=php.js&ie=utf-8&oe=utf-8&aq=t&rls=com.ubuntu:en-US:unofficial&client=firefox-a');
	// *		 returns 3: 'http%3A%2F%2Fwww.google.nl%2Fsearch%3Fq%3Dphp.js%26ie%3Dutf-8%26oe%3Dutf-8%26aq%3Dt%26rls%3Dcom.ubuntu%3Aen-US%3Aunofficial%26client%3Dfirefox-a'
																	 
	var histogram = {}, histogram_r = {}, code = 0, tmp_arr = [];
	var ret = str.toString();
	
	var replacer = function(search, replace, str) {
		var tmp_arr = [];
		tmp_arr = str.split(search);
		return tmp_arr.join(replace);
	};
	
	// The histogram is identical to the one in urldecode.
	histogram['!']	 = '%21';
	histogram['%20'] = '+';
	
	// Begin with encodeURIComponent, which most resembles PHP's encoding functions
	ret = encodeURIComponent(ret);
	
	for (search in histogram) {
		replace = histogram[search];
		ret = replacer(search, replace, ret) // Custom replace. No regexing
	}
	
	// Uppercase for full PHP compatibility
	return ret.replace(/(\%([a-z0-9]{2}))/g, function(full, m1, m2) {
		return "%"+m2.toUpperCase();
	});
	
	return ret;
}

function ajaxFileUpload(_url, _element, success_message, is_pagereload)
{
	/*
		prepareing ajax file upload
		url: the url of script file handling the uploaded files
		fileElementId: the file type of input element id and it will be the index of	$_FILES Array()
		dataType: it support json, xml
		secureuri:use secure protocol
		success: call back function when the ajax complete
		error: callback function when the ajax failed
	*/
	
	$.ajaxFileUpload({
		url: _url, 
		secureuri:false,
		fileElementId: _element,
		dataType: '_some_data',
		success: function (data, status)
		{
			
			if ( success_message ) {
        if(is_pagereload)
          StdMessage(success_message, '', false, '', true);
        else
          StdMessage(success_message, '', true);
			} else {
				window.location.reload();
			} //IF
			
//			alert('from ajaxfileupload() ='+data);
		},
		error		: function () {
			StdMessage('Uh <span class="orange">Oh</span>', 'Ajax request failed. Try again later.', false);
		}//FUNC error
	})
	return true;
}

function checkFileUpload(_url, _element, _form)
{
	
	$.ajaxFileUpload({
		url: _url, 
		secureuri:false,
		fileElementId: _element,
		dataType: 'json',
		success: function (json, status)
		{
			if(json.error){
				$("#loader_pic").dialog('close');
				ShowModalResult({
					height: "auto",
					width: 350,
					title: 'Uh <span class="orange">Oh</span>'
				});
				$("#modalResult").dialog('open');
				$("#modalResult").html(json.message);
			}
			else {
				$(_form).unbind("submit");
				$(_form).submit();
			}
		},
		error: function (data, status, e)
		{
			alert('Error: '+e+"\n"+'Data: '+data);
		}
	})
	return true;
}	

/*--------------------------------------------------------------------------------*\
|	StdMessage
|----------------------------------------------------------------------------------
| Displays standart text dialog.
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|	Params:
|		title		string	- Title of dialog.
|		[text]		string	- Text to display in dialog.
|
|		[timeout] 	int	- Set to non-zero value to refresh page 
|						after given count of milliseconds.
|
|		[width] 	int	- Custom width of dialog.
|	Return:
|				bool	- Always false.
\*--------------------------------------------------------------= by Mr.V!T =-----*/
function StdMessage (title, text, dotimeout, width, reload_on_close) {
	
	var timeout = default_stdmsg_showtime;
	if ( !timeout ) timeout = 2000;
	
	if ( !text )	
		var text = '';
	if ( !width )	
		var width = 500;
		
	$("#loader_pic").dialog('close');

	ShowModalResult({
		height	: "auto",
		width	: width,
		title	: title,
		close	: function(){
			if ( dotimeout || reload_on_close)
      {
				window.location.reload();
        window.location.href = window.location.href;
      }
		} //FUNC close
	}); 
	
	$("#modalResult").html(text);
	$("#modalResult").dialog('open');

  if(reload_on_close)
  {
    $(".ui-dialog-titlebar-close").click(function(){
      window.location.reload();
    });
  }

	if ( dotimeout ) {
		setTimeout( "window.location.reload();", timeout); 
		setTimeout( "window.location.href = window.location.href;", timeout); 
	} //IF need to reload
	
} //FUNC StdMessage

/*--------------------------------------------------------------------------------*\
|	DoAjax
|----------------------------------------------------------------------------------
| Creates ajax request and performs selected action depending or result status
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|	Params:
|		data		array		- Data to send.
|		cotroller	string		- Destination controller.
|		success_func	function	- Function to take on success.
|	Return:
|		VOID
\*--------------------------------------------------------------= by Mr.V!T =-----*/
function DoAjax (data, controller, success_func) {
	$("#loader_pic").dialog('open');
	$.ajax({
		type		: 'POST',
//		dataType	: 'html',
		dataType	: 'json',
		url		: controller,
		data		: data,
		
		success		: function (json, stat) {
/*/			
			alert(json);
/*/			
			if ( json.error ) {
				StdMessage('Uh <span class="orange">Oh</span>', json.message, false);
			} else { //IF was error
				success_func(json);	
			} //IF no errors happen
//*/			
		}, //FUNC success
		error		: function () {
			StdMessage('Uh <span class="orange">Oh</span>', 'Ajax request failed. Try again later.', false);
		}//FUNC error
		
	}); //AJAX
} //FUNC DoAjax

/*--------------------------------------------------------------------------------*\
|	SimpleAjaxRequest
|----------------------------------------------------------------------------------
| Does simple ajax request with give data, and displays error/success box with 
| given text if necessary
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|	Params:
|		data		array	- Data to send.
|		cotroller	string	- Destination controller.
|		[success_text]	string	- Text to display in case of success.
|	Return:
|		VOID
\*--------------------------------------------------------------= by Mr.V!T =-----*/
function SimpleAjaxRequest (data, controller, success_text) {
	
	DoAjax(data, controller, function () {
		if ( success_text ) {
			StdMessage(success_text, '', true);
		} else { //IF need popup
//			window.location.reload();
			window.location.href = window.location.href;
		} //IF no pupup needed
	});
	
} //FUNC SimpleAjaxRequest

/*--------------------------------------------------------------------------------*\
|	CommonDialog
|----------------------------------------------------------------------------------
| Opens commond dialog speciefed by id. 
| Must be first be prepared by jQuery.Smartmodal plugin, like this:
|	$('#'+dialog_id).css('display', 'block');
|	$('#'+dialog_id).dialog({ autoOpen: false });
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|	Params:
|		dialog_id	string	- Dialog ID. (Usually id="" attribute).
|		title		string	- Title to display in dialog.
|		width		int	- Width of dialog.
|	Return:
|		NULL
\*--------------------------------------------------------------= by Mr.V!T =-----*/
function CommonDialog (dialog_id, title, width) {

	if ( !width ) width = 500;

	$("#loader_pic").dialog('close');

	$('#'+dialog_id).dialog({
		autoOpen	: false,
		bgiframe	: true,
		height		: 'auto',
		width		: width,
		hide		: 300,
		show		: 300,
		title		: title,
		modal		: true, 
		overlay		: { 
					opacity		: 0.3, 
					background	: "black" 
				}, //:orverlay
		open		: function(){
					$('#'+dialog_id).width("auto");
					return false;
				} //FUNC open
	}); //OBJECT dialog
	
	$('#'+dialog_id).dialog('open');
	
} //FUNC CommonDialog

/*--------------------------------------------------------------------------------*\
|	inlineLogin
|----------------------------------------------------------------------------------
| Makes ajax request with data from specified login form.
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|	Params:
|		form_id		string	- ID of form to submit.
|	Return:
|				bool	- Always FALSE.
\*--------------------------------------------------------------= by Mr.V!T =-----*/
function inlineLogin (form_id) {

	var _data = GetFormInputs('#'+form_id);
	DoAjax(_data, '/auth/login_check', function (json) {
		window.location.href = json.redirect_url;
	});

	return false;
} //FUNC inlineLogin

/*--------------------------------------------------------------------------------*\
|	randomString
|----------------------------------------------------------------------------------
| Generates random string with given length, based on given caracters.
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|	Params:
|		string_length	int	- Length of string needed.
|		chars		string	- Set of characters to use.
|	Return:
|				string	- String of random chars.
\*--------------------------------------------------------------= by Mr.V!T =-----*/
function randomString(string_length, chars) {
	var randomstring = '';
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}
	return randomstring;
} //FUNC randomString

/*--------------------------------------------------------------------------------*\
|	randomString_AlNum
|----------------------------------------------------------------------------------
| Generates random string with given length, based on Alpha and Numeric characters.
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|	Params:
|		string_length	int	- Length of string needed.
|	Return:
|				string	- String of random chars.
\*--------------------------------------------------------------= by Mr.V!T =-----*/
function randomString_AlNum(string_length) {
	var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';
	return randomString(string_length, chars);
} //FUNC randomString

/*--------------------------------------------------------------------------------*\
|	randomString_CapsNum
|----------------------------------------------------------------------------------
| Generates random string with given length, based on Capitalized Alpha and Numeric 
| characters.
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|	Params:
|		string_length	int	- Length of string needed.
|	Return:
|				string	- String of random chars.
\*--------------------------------------------------------------= by Mr.V!T =-----*/
function randomString_CapsNum(string_length) {
	var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZ';
	return randomString(string_length, chars);
} //FUNC randomString

/*--------------------------------------------------------------------------------*\
|	CLASS zPagination
|----------------------------------------------------------------------------------
| Creates and controls pages based on given data array or object. Uses jQuery.
| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|	Params:
|		data		array/object	- Data to display as pages.
|
|		[parameters]	array/object	- Parameter to pass in item 
\*--------------------------------------------------------------= by Mr.V!T =-----*/
var zPagination = function (data, parameters) {
	this.data	= data;
	this.Count	= 0;
	
	
	this.KEY	= randomString_AlNum(8);
	
	for (tmp in data) this.Count++;
	if (parameters) this.parameters = parameters;
} //CONSTRUCTOR ajaxReturn

zPagination.prototype = {
	KEY		: {},
	
	data		: {},
	parameters	: '',
	
	Count		: 0,
	PerPage		: 0,
	Pages		: 0,
	
	Page		: 0,
	
	ItemCallback	: function (data, parameters) { return ''; },
	
	From		: function (page) {
		return (page-1) * this.PerPage + 1;
	}, //FUNC From
	
	To		: function (page) {
		var tmp = this.From(page) + this.PerPage - 1;
		if (tmp > this.Count) tmp = this.Count;
		return tmp;
	}, //FUNC To
	
	DrawPage	: function (page) {
		
		var tbody = '';
		
		var page_display = (page == 1)? '' : 'style="display:none"';
		tbody += '<div id="pag'+this.KEY+'_'+page+'" '+page_display+'>';
		
		tbody += '<div class="java_pagination_top" align="left">Viewing page '+page+' from '+this.Pages+'</div>';
		tbody += '<div class="java_pagination_body">';
		
		
		for (i = this.From(page)-1; i <= this.To(page)-1; i++ ) {
			if (this.data[i])
				tbody += this.ItemCallback(this.data[i], this.parameters);
		} //FOR each needed item
		
		tbody += '</div>';
		
		tbody += this.DrawPagination(page);
		tbody += '</div>';
		
		return tbody;
	}, //FUNC DrawPage
	
	DrawPagination	: function (page) {
		var tbody = '<div class="java_pagination_bottom">&nbsp;';
		
		if ( page != 1 )
			tbody += '<a href="#" onclick="$(\'#pag'+this.KEY+'_'+page+'\').hide(); $(\'#pag'+this.KEY+'_'+(page-1)+'\').show(); return false;">Back</a>';
		
		if ( page != this.Pages ) {
			if ( page != 1 ) tbody += '&nbsp;|&nbsp;';
			tbody += '<a href="#" onclick="$(\'#pag'+this.KEY+'_'+page+'\').hide(); $(\'#pag'+this.KEY+'_'+(page+1)+'\').show(); return false;">More</a>';
		} //IF more pages come
		
		tbody += '</div>';
		
		return tbody;
	}, //FUNC DrawPagination
	
	get		: function (item_callback) {
		
		if ( item_callback ) this.ItemCallback = item_callback;

		this.Pages = Math.ceil(this.Count / this.PerPage);
		
		var tbody = '';
		for (ti = 1; ti <= this.Pages; ti++ ) {
			tbody += this.DrawPage(ti);
		} //FOR each page

		return tbody;
	} //FUNC Get
} //CLASS

/** DEPRECIATED
function fbtwIsNewOne(is_newmember)
{
  document.cookie = "isSCNewMember="+is_newmember+"; path=/";
}
*/
function facebook_signin()
{
  //fbtwIsNewOne(is_newmember);
  //alert(ScorReqCache.type);
  FB.Connect.requireSession();
  FB.Facebook.get_sessionState().waitUntilReady(function()
  {
	  
      var user = FB.Facebook.apiClient.get_session() ? FB.Facebook.apiClient.get_session().uid : null;

      if (!user)
        return;
      else {
	      
	DoAjax({}, '/auth/fblogin_ajax', 
	      	function(json) {
			$("#loader_pic").dialog('close');
			$("#modalResult").dialog('close');
			IsNotLogged = false;
			
			if ( !ScorReqCache ) { 
				window.location = '/profile/index/';
				return false;
			} //IF no cache
			
			$('#recall_action').val("ScorDialog('"+ScorReqCache.type+"', '"+ScorReqCache.item_id+"', '"+ScorReqCache.name+"', '"+ScorReqCache.categories+"', '"+ScorReqCache.images+"');");
			$('#recall_form').submit();
			
		} //FUNC onSuccess
	);
		     
	      
//        window.location = '/auth/fblogin';
	      
      } //IF 
  });
 }

function twitter_signin()
{
  //fbtwIsNewOne(is_newmember);
  window.open('/auth/twconnect/', 'twitter_connect', 'left=200,top=50,width=800,height=600,toolbar=0,resizable=0,scrollbars=1,location=0');
}

function scLogoutAction()
{
  FB.Connect.ifUserConnected(fbLogoutAction, simpleLogoutAction);
}

function fbLogoutAction()
{
  FB.Connect.logout(simpleLogoutAction);
}

function simpleLogoutAction()
{
  window.location = '/auth/logout';
}

function facebook_post_sw(score_id,update_message)
{ 
  FB.Connect.requireSession();
  FB.Facebook.get_sessionState().waitUntilReady(function()
  {
      var user = FB.Facebook.apiClient.get_session() ? FB.Facebook.apiClient.get_session().uid : null;

      if (!user)
        return;
      else
      { 
        FB.Connect.showPermissionDialog("publish_stream", function(){
          $.getJSON("/scordit/get_scoremsg", { score_id: score_id }, function(json){
            if(json.status == "done")
              FB.Connect.streamPublish(json.message,null,null,null,null,function(post_id,exc){
                var updmsg = (post_id!="null")?update_message:"Page reloading...";
                StdMessage(updmsg, '', true);
              });
          });

        });
      }
        
  });
 }

 function twitter_post_sw(score_id,update_message)
 {
   $.getJSON("/scordit/twupdate_scoremsg", { score_id: score_id }, function(json){
      if(json.status == "done")
        StdMessage(update_message, '', true);
      else
      {
        var str = score_id + "|" + window.location;
        alert(str);
        document.cookie = "twScordit="+str+"; path=/";
        twitter_signin();
      }
    });
 }

function facebook_scor_dialog(fcallback)
{
  FB.Connect.requireSession();
  FB.Facebook.get_sessionState().waitUntilReady(function()
  {
      var user = FB.Facebook.apiClient.get_session() ? FB.Facebook.apiClient.get_session().uid : null;

      if (!user)
        return;
      else
      {
        DoAjax({}, '/auth/fblogin_ajax',
	      	function(json) {
            IsNotLogged = false;
            $("#loader_pic").dialog('close');
            $("#modalResult").dialog('close');
            setTimeout(fcallback,100);
          }
        );
      }

  });
 }

 function twitter_scor_dialog(fcallback)
 {
      var str = window.location + "|" + fcallback;
      document.cookie = "twfcallback="+str+"; path=/";
      twitter_signin();
 }

 function twitter_scor_dialog_callback()
 {
   var ck = "twfcallback";
    if (document.cookie.length>0){
      var ck_start = document.cookie.indexOf(ck + "=");
      if (ck_start!=-1)
      {
        ck_start=ck_start + ck.length+1;
        ck_end=document.cookie.indexOf(";",ck_start);
        if (ck_end==-1) ck_end=document.cookie.length;
        var ck_value = unescape(document.cookie.substring(ck_start,ck_end));
        ck_arr = ck_value.split("|");
        if(ck_arr.length>1)
          setTimeout(ck_arr[1],100);

        document.cookie = ck + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
      }
    }
 }