
$(".rollover").find("tr:not(.norollover)").find("td:not(.norollover)").live('mouseover',function(e){
	$(this).parent().css('background-color','#f1f1f1');
});

$(".rollover").find("tr:not(.norollover)").find("td:not(.norollover)").live('mouseout',function(e){
	$(this).parent().css('background-color','');
});

String.prototype.trim = function(){
	return this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, "");
};

jQuery.fn.exists = function() {
	return jQuery(this).length>0;
};

jQuery.fn.hasvalue = function() {
	return jQuery(this).val().trim() != '';
};

function isFunction(f) {
	return f && typeof(f) == 'function';
}

function name_checked(root_id,name_prefix) {
	return $('#'+root_id).find("[name^='"+name_prefix+"']:checked").exists();
}
function input_checked(root_id) {
	return $('#'+root_id).find("input:checked").exists();
}

function text_filled(root_id) {
	var root = $('#'+root_id);
	if (root.find("input").exists()) {
		return root.find("input").hasvalue();
	}
	if (root.find("textarea").exists()) {
		return root.find("textarea").hasvalue();
	}
	return false;
}

function dologin() {
	lock_ui();
	post_ajax_form('dologin.php','#loginform',function(data) {
		if (data['login'] == 'ok') {
			do_lock_ui_forever(function () {
				location.href = mkurl('welcome.php',{ 'sk' : data['key']},true);
			});
		}
	});
}

function check_submit_key(e) {
	var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
	if(key == 10 || key == 13) {
		return true;
	}
	return false;
}

function mkurl(php_page, params, url_for_redirect, change_domain) {
	if (!change_domain && php_page.substr(0,1) != '/')
		php_page = '/fe/' + php_page;
	var url = php_page + "?a=" + (url_for_redirect?'0':'1') + "&x=" + Math.random();
	if (!params || params['sk'] == undefined) {
		url += '&sk=' + skey();
	}
	if (params) {
		for (var idx in params) {
			url += '&' + idx + '=' + params[idx];
		}
	}
	return url;
}

function skey() {
	var skey = $('#skey').val();
	return skey;
}

var error_regexp = new RegExp('^{[ ]*"error[a-z]*"');
function data_is_error(data) {
	return error_regexp.exec(data) != null;
}

function render_ajax(php_page, cnt_div, params, callback, do_not_lock_ui) {
	if (!do_not_lock_ui)
		lock_ui();
	if (typeof(params) != 'undefined' && params != null && params != undefined) {
		$.post(mkurl(php_page) , params , function(data) {
			render_callback(cnt_div,data,callback);
			if (!do_not_lock_ui)
				unlock_ui();
		});
	} else {
		$.post(mkurl(php_page) , function(data) {
			render_callback(cnt_div,data,callback);
			if (!do_not_lock_ui)
				unlock_ui();
		});
	}
}
function render_callback(cnt_div,data,callback) {
	if (data_is_error(data)) {
		jserror = jQuery.parseJSON(data);
		if (jserror['errorcode'] == '-122')
			expire_session();
		else
			pperror_json(jserror);
		return false;
	}
	if ($(cnt_div).is("input")) {
		$(cnt_div).val(data);
	} else {
		$(cnt_div).empty().append(data);
	}
	if (isFunction(callback))
		callback.apply();
	return true;
}

function post_ajax(php_page, params, callback, avoid_unlock, error_callback) {
	lock_ui();
	$.post(mkurl(php_page), params, function(data) {
		post_ajax_callback(data,callback,error_callback);
		if (!avoid_unlock) {
			unlock_ui();
		}
	}, "json");
}
function post_ajax_form(php_page, form_id, callback, error_callback) {
	lock_ui();
	$.post(mkurl(php_page), $(form_id).serialize(), function(data) {
		post_ajax_callback(data,callback,error_callback);
		unlock_ui();
	}, "json");
}

function post_ajax_callback(data,callback,error_callback) {
	if (!data || (data['errorcode'] && data['errorcode'] != '0')) {
		if (data && data['errorcode'] == '-122') {
			expire_session();
		} else {
			pperror_json(data,function() {
				if (isFunction(error_callback))
					error_callback();
			});
		}
	} else {
		if (isFunction(callback))
			callback(data);
	}
}

function expire_session() {
	pperror_invalid_token();
	location.href = mkurl('/login.php');
}

function logout() {
	document.location = mkurl('login.php');
}

function invert_checkbox(a_checkbox) {
	$(a_checkbox).attr('checked',!$(a_checkbox).attr('checked'));
}

function mksuggest_text(textid,initial_value) {
	var oldid = textid;
	var newid = 'f_'+textid;
	var oldref = '#'+oldid;
	var newref = '#'+newid;
	$(oldref).attr("style","color: rgb(187, 187, 187);");
	$(oldref).focus(function() {
		if ($(this).attr('inited') != '1') {
			$(this).attr('inited','1');
			$(this).val('');
			$(this).attr('style','color: rgb(0,0,0)');
		}
	});
	$(oldref).blur(function() {
		if ($(this).val().trim() == '') {
			$(this).attr('inited','0');
			$(this).val($(this).attr('original_text'));
			$($(this).attr('ref')).val('');
			$(this).attr("style","color: rgb(187, 187, 187);");
		}
	});
	$(oldref).change(function() {
		if ($(this).attr('inited') == '1') {
			$($(this).attr('ref')).val($(this).val());
		}
	});
	var newhidden = $('<input type="hidden"></input>');
	newhidden.appendTo($(oldref).parent());
	$(oldref).attr("ref",oldref);
	$(oldref).attr("original_text",$(oldref).val());
	$(oldref).attr("id",newid);
	newhidden.attr('id',oldid);
	if (initial_value && initial_value.trim() != '') {
		$(newref).focus();
		$(newref).val(initial_value);
		$(newref).change();
	}
}

function open_help_dialog(help_div) {
	if ($(help_div).is(':data(dialog)')) {
		if ($(help_div).dialog('isOpen')) {
			$(help_div).dialog('close');
		} else {
			$(help_div).dialog('open');
		}
	} else {
		$(help_div).dialog({zIndex:9999, autoOpen:true, minWidth:300, minHeight:100, height:350, width:450, closeOnEscape: true});
		$(help_div).dialog('moveToTop');
	}
}

function toggle_div(div) {
	if ($(div+':visible').exists()) {
		$(div).fadeOut('slow');
	} else {
		$(div).fadeIn('slow');
	}
}
function toggle_rcolumn_help() {
	toggle_div('#rcolumn_help');
}


function label_resolve(text) {
	for (var i=1;i<arguments.length;i++) {
		text = text.replace('$'+i+'$',arguments[i]);
	}
	return text;
}

function dpdate(a_datepicker_id) {
	return $('#'+a_datepicker_id).datepicker('getDate');
}
function is_today(a_date) {
	return same_day(a_date,new Date());
}
function same_day(a_date,b_date) {
	if (a_date == null || b_date == null)
		return false;
	return (a_date.getYear() == b_date.getYear() && a_date.getMonth() == b_date.getMonth() && a_date.getDate() == b_date.getDate());
}

function get_date_time(a_datepicker_id,a_timeentry_id) {
	a_date = dpdate(a_datepicker_id);
	if (a_date == null)
		return null;
	var a_timeentry = $('#'+a_timeentry_id);
	a_time = a_timeentry.timeEntry('getTime');
	if (a_time == null)
		return null;
	return merge_date_time(a_date, a_time);
}

function get_date_obj(a_datepicker_id,a_timeentry_id) {
	var a_timeentry = $('#'+a_timeentry_id);
	a_date = dpdate(a_datepicker_id);
	if (a_date == null)
		return null;
	a_time = a_timeentry.timeEntry('getTime');
	if (a_time == null)
		a_time = new Date();
	return merge_date_time(a_date, a_time);
}

function merge_date_time(a_date,a_time) {
	var a_dt = new Date();
	a_dt.setMinutes(a_time.getMinutes());
	a_dt.setHours(a_time.getHours());
	a_dt.setDate(a_date.getDate());
	a_dt.setMonth(a_date.getMonth());
	a_dt.setFullYear(a_date.getFullYear());
	return a_dt;
}
function datetime_to_string(a_dt) {
	if (a_dt == null)
		return null;
	var strdt = 
		zpad(a_dt.getDate(),2) +
		zpad(a_dt.getMonth()+1,2) +
		a_dt.getFullYear().toString().substr(2,2) +
		zpad(a_dt.getHours(),2) +
		zpad(a_dt.getMinutes(),2);
	return strdt;
}
function date_to_string(a_d) {
	if (a_d == null)
		return null;
	var strd = 
		zpad(a_d.getDate(),2) +
		zpad(a_d.getMonth()+1,2) +
		a_d.getFullYear().toString().substr(2,2);
	return strd;
}
function time_to_string(a_t) {
	var strt =
		zpad(a_t.getHours(),2) +
		zpad(a_t.getMinutes(),2);
	return strt;
}
function zpad(a_num,count) {
	var a_str = a_num.toString();
	while (a_str.length < count) {
		a_str = '0' + a_str;
	}
	return a_str;
}


function switch_tab(page,div,params,callback,do_not_lock_ui) {
	if (div != undefined && div != null && $(div).exists()) {
		var all_btns = $('#pulsantiera').children('.pulsante_principale');
		all_btns.children('.sx').removeClass('puls_principale_active_border_sx').addClass('puls_principale_inactive_border_sx');
		all_btns.children('.dx').removeClass('puls_principale_active_border_dx').addClass('puls_principale_inactive_border_dx');
		all_btns.children('.middle').removeClass('puls_principale_active_center').addClass('puls_principale_inactive_center');
		$(div).children('.sx').addClass('puls_principale_active_border_sx');
		$(div).children('.dx').addClass('puls_principale_active_border_dx');
		$(div).children('.middle').addClass('puls_principale_active_center');
	}
	render_ajax(page,'#wrapper_contenuto',params,callback,do_not_lock_ui);
}


function binarySearch(haystack,needle) {
	if (haystack == undefined)
		return -1;
	if (haystack.length < 1)
		return -1;
	var low = 0, high = haystack.length - 1, i, comparison;
	while (low <= high) {
		i = Math.floor((low + high) / 2);
		comparison = haystack[i] - needle;
		if (comparison < 0) { low = i + 1; continue; };
		if (comparison > 0) { high = i - 1; continue; };
		return i;
	}
	return -1;
};

function open_dialog(php_page,_height,_width,params,can_be_smaller) {
	if (!params)
		params = new Array();
	var url = mkurl(php_page,params);
	lock_ui();
	$.post(url , function(data) {
		unlock_ui(function() {
			$.fancybox(data,{
				overlayShow:true,
				hideOnOverlayClick:false,
				hideOnContentClick:false,
				showCloseButton:false,
				enableEscapeButton:true,
				transitionIn:'fade',
				transitionOut:'fade',
				padding:0,
				margin:0,
				autoDimensions:false,
				autoScale:false,
				height:_height,
				width:_width,
				centerOnScroll:false,
				scrolling:'auto',
				overlayOpacity:0.5,
				onStart : function() { 
					if (fancybox_open() == false) {
						$('#fancybox-wrap').css({marginLeft: '-10000px'});
					}
				},
				onComplete : function() {
					if (fancybox_open() == false) {
						setTimeout('_fancybox_resize(false,'+can_be_smaller+')',10);
					} else {
						setTimeout('_fancybox_resize(true,'+can_be_smaller+')',10);
					}
				},
				onClosed : function() {
				}
			});
			_fancybox_resize(false,true);
		});
	});
}

function _fancybox_resize(animate,can_be_smaller) {
	if (!fancybox_open()) {
		return;
	}
	if (animate) {
		$.fancybox.resize(animate,!can_be_smaller);
	} else {
		$.fancybox.resize(false,!can_be_smaller);
		$('#fancybox-wrap').css({marginLeft: '0px'});
	}
}

function fancybox_open() {
	return !$('#fancybox-wrap').is(':hidden');
}

function close_dialog() {
	$("div[id^='help_']").each(function() {
		if ($(this).is(':data(dialog)')) {
			if ($(this).dialog('isOpen')) {
				$(this).dialog('close');
			}
		}
	});
	$.fancybox.close();
}

function open_change_group(id_group) {
	open_contacts_list('mgrp',{ 'mgrpid' : id_group , 'id-group' : id_group , 'group' : id_group });
}
function open_contacts_list(contacts_list_type,other_params) {
	if (!other_params) {
		other_params = new Array();
	}
	var x = 559;
	var y = 567;
	if (contacts_list_type == 'mgrp')
		y += 20;
	if (contacts_list_type == 'stc')
		y += 8;
	open_dialog('p/pcontacts_'+contacts_list_type+'.php',y,x,other_params);
}
function open_ml_edit_contact(id_contact,id_group,back_to_group) {
	do_open_edit_contact(510,id_contact,id_group,back_to_group);
}
function open_edit_contact(id_contact,id_group) {
	do_open_edit_contact(480,id_contact,id_group,undefined);
}
function do_open_edit_contact(height,id_contact,id_group,back_to_group) {
	var params;
	if (id_contact != undefined && id_contact != null) {
		params = {
			'op' : 'edit-contact',
			'id-contact' : id_contact
		};
		if (id_group != undefined && id_group != null)
			params['id-group'] = id_group;
	} else {
		if (id_group == undefined || id_group == null)
			params = { 'op' : 'new-contact' };
		else
			params = { 'op' : 'new-contact' , 'id-group' : id_group };
	}
	if (back_to_group)
		params['back-to-group'] = 1;
	open_dialog('p/edit_contact.php',height,440,params);
}
function open_groups_list(groups_list_type,params) {
	if (params && params != undefined && params != null) {
		params['type'] = groups_list_type;
	} else {
		params = { 'type' : groups_list_type }
	}
	open_dialog('p/groups.php',688,564,params);
}

function open_history_dtls(id_message) {
	open_dialog('p/message_status.php',637,544,{ 'id':id_message });
}

function open_email_stats(id_message) {
	open_dialog('p/ml_stats.php',397,544,{ 'id':id_message });
}

function open_contacts_reports(op,id,idl) {
	if (idl == undefined || idl == null)
		open_dialog('p/ml_contact_reports.php',637,544,{ 'op':op , 'id':id });
	else
		open_dialog('p/ml_contact_reports.php',637,544,{ 'op':op , 'id':id, 'idl':idl });
}

function insert_sms_template() {
	open_sms_template('ins');
}
function save_sms_template() {
	open_sms_template('mod');
}
function open_sms_template(op) {
	open_dialog('p/smstemplate.php',281,544,{ 'op':op });
}

function open_user_settings(params) {
	open_dialog('p/user_settings.php',473,741,params);
}
function open_change_password(params) {
	open_dialog('p/change_password.php',250,544,params);
}

function open_advanced(tabselect) {
	if (tabselect)
		open_dialog('p/advanced.php',463,585,{'tabselect':tabselect});
	else
		open_dialog('p/advanced.php',463,585);
}

function open_payment_dtls(paygw) {
	if (paygw == 'bb') {
		open_dialog('p/payment_bb.php',522,741);
	} else {
		open_dialog('p/payment_cc.php',322,741,{ 'paygw' : paygw });
	}
}

function open_shop_history_detail(id_shop_cart) {
	open_dialog('p/shop_history_detail.php',503,741,{ 'sc' : id_shop_cart });
}

function open_history_charts(fromdate,todate) {
	open_dialog('p/history_charts.php',507,741,{ 'from' : fromdate, 'to' : todate });
}

function open_sub_move_credits(id_user_sub) {
	open_dialog('p/sub_move_credits.php',468,545,{ 'id' : id_user_sub });
}

function open_import(id_group) {
	if (id_group != undefined && id_group != null && id_group > 0) {
		open_dialog('p/import.php',700,564,{ 'id-group' : id_group },true);
	} else {
		open_dialog('p/import.php',700,564,null,true);
	}
}
function open_mlimport(id_group) {
	if (id_group != undefined && id_group != null && id_group > 0) {
		open_dialog('p/import.php',750,564,{ 'id-group' : id_group },false);
	} else {
		open_dialog('p/import.php',750,564,null,false);
	}
}
function open_export_group(id_group) {
	open_dialog('p/export.php',192,545,{'op':'export_group','id':id_group});
}
function open_export_history(fromdate,todate) {
	open_dialog('p/export.php',259,545,{'op':'export_history','from':fromdate,'to':todate});
}

function ml_open_create_group_dialog() {
	open_dialog('p/groups.php',211,545,{'op':'create'});
}
function open_create_group_dialog() {
	open_dialog('p/groups.php',111,545,{'op':'create'});
}
function open_mail_compose_2_dialog(id) {
	open_dialog('p/cmp2_create_from.php',200,450,{'id':id});
}
function open_attachment_preview(id_attachment) {
	var width = $('#attachment_img_'+id_attachment).width();
	var height = $('#attachment_img_'+id_attachment).height();
	open_dialog('p/attachment_preview.php',height,width,{ 'id':id_attachment },true);
}
function open_full_template_preview(id_file,ml_id,category) {
	var width = $('#template_thumbnail_'+id_file).width();
	var height = $('#template_thumbnail_'+id_file).height();
	open_dialog('p/template_preview.php',height+5,width,{ 'id':id_file , 'ml_id':ml_id, 'c':category },true);
}
function open_sms_contract_dialog() {
	open_dialog('p/services.php',385,355);
}
function switch_tab_go_edit_mailing(params,callback) {
	var bv = $.browser.version.slice(0,1);
	var isie7 = 0;
	if ($.browser.msie && bv == 7)
		isie7 = 1;
	if (params)
		params['isie7'] = isie7;
	else
		params = { 'isie7' : isie7 };
	switch_tab('t/cmp4_edit_mailing.php',$('#tab_invio'),params,callback);
}

function go_edit_draft(id,op) {
	if (op == null || op == undefined)
		params = {'id':id};
	else
		params = {'op':op , 'id':id};
	switch_tab_go_edit_mailing(params);
}
function refresh_drafts_list() {
	switch_tab('t/cmp0_create.php',$('#tab_invio'));
}

(function($) {
	jQuery.fn.putCursorAtEnd = function() {
		return this.each(function() {
			$(this).focus();

			// If this function exists...
			if (this.setSelectionRange) {
				// ... then use it (Doesn't work in IE)
				this.setSelectionRange(999999, 999999);
			}
			if (document.selection) {
				// Create empty selection range
				var oSel = document.selection.createRange();
				oSel.collapse(true);
				oSel.moveStart ('character', $(this).val().length);
				oSel.moveEnd ('character', $(this).val().length);
				oSel.select ();
			} else {
				if (this.createTextRange) {
					var range = this.createTextRange();
					range.collapse(true);
					range.moveEnd('character', $(this).val().length);
					range.moveStart('character', $(this).val().length);
					range.select();
				} else {
					// ... otherwise replace the contents with itself (Doesn't work in Google Chrome)
					$(this).val($(this).val());
				}
			}

			// Scroll to the bottom, in case we're in a tall textarea (Necessary for Firefox and Google Chrome)
			this.scrollTop = 999999;
		});
	};
})(jQuery);




