var redirect_url;
redirect_url = false;

function loading(){	
}

function hide_loader(){
}

function show_hide_block(hide_block_id, show_block_id)
{
	$('#'+hide_block_id).hide('normal');
	$('#'+show_block_id).show('normal');
}

function message(mess, make_redirect)
{
	if(make_redirect == undefined)
		make_redirect = false;

	hide_loader();
	
	cool_popup('cool_popup', '', mess, 400, make_redirect);
} 

function cool_confirm(msg)
{
	if(confirm(msg))
		return true;
	else
		return false;
}

/* STYLED POPUP */
function cool_popup(popID, title, text, popWidth, c_r)
{
	if(c_r == undefined)
		c_r = false;

	var el_id = $('#'+popID).attr('id');
	if(el_id != undefined)
	{
		$('#'+popID+'_title').html(title);
		$('#'+popID+'_text').html(text);
		
	    //Fade in the Popup and add close button
	    $('#' + popID).fadeIn().css({ 'width': Number( popWidth ) });
	
	    //Define margin for center alignment (vertical   horizontal) - we add 80px to the height/width to accomodate for the padding  and border width defined in the css
	    var popMargTop = ($('#' + popID).height() + 80) / 2;
	    var popMargLeft = ($('#' + popID).width() + 80) / 2;
	
	    //Apply Margin to Popup
	    $('#' + popID).css({
	        'margin-top' : -popMargTop,
	        'margin-left' : -popMargLeft
	    });
	
	    //Fade in Background
	    $('body').append('<div id="fade"></div>'); //Add the fade layer to bottom of the body tag.
	    $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn(); //Fade in the fade layer - .css({'filter' : 'alpha(opacity=80)'}) is used to fix the IE Bug on fading transparencies 
	
	    return false;
	}
	else
	{
		alert(text);
		if(c_r)
			complete_redirect();
	}
}

function close_cool_popup()
{
    $('#fade , .popup_block').fadeOut(); //fade them both out
    $('#fade').remove();
    
    complete_redirect();
    
    return false;
}

function redirect_to(page, error)
{
	if(error != '')
	{
		redirect_url = page;
		message(error, true);
	}
	else
	{
		redirect_url = false;
		document.location.href=page;
	}	
}

function complete_redirect()
{
	if(redirect_url && redirect_url != '')
	{
		page = redirect_url;
		redirect_url = false;
		document.location.href=page;
	}
}

function dialog_error(dialog_msg_id, el_id, error)
{
	if(error)
	{
		$("#"+el_id).addClass('ui-state-error');
		$('#'+dialog_msg_id).text(error).effect("highlight",{},1500);
		return false;
	}
	return true;
}

function check_all(checkbox_class)
{
	$('.'+checkbox_class).attr('checked', true);
}

function uncheck_all(checkbox_class)
{
	$('.'+checkbox_class).attr('checked', false);
}

function check_show_error(error, field_id)
{
	if(error && error != true)
	{
		$('#'+field_id).css("backgroundColor","#FAA");
		$('#'+field_id).focus();
		message(error);
		return false;
	}
	else
	{
		$('#'+field_id).css("backgroundColor","#fff");
		return true;
	}
}

function check_phone_parts(p, len, n_id)
{
	if(p.length == len)
		if(n_id != '')
			$('#'+n_id).focus();
}

function check_logo()
{
	var file = $('#logo_upload').val();
	
	if(file != '')
		return true;
	else
		return false;
}

function show_popup(title, script, width, height)
{
	if(width == undefined)
		width = 750;
	if(height == undefined)
		height = 600;
	var A=script;
	window.open(A,title, "resizable=0,scrollbars=1,width="+width+",height="+height);
}

function field_not_empty(id)
{
	var v = $('#'+id).val();
	if(v == '')
		return false;
	else
		return true;
}

// check data functions
function check_email(email)
{
	var v_mail = /^([0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*@([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,9})$/;
	if( !v_mail.test(email) )
	{
		return false;
	}
	return true;
}

function check_zip(z)
{
	var f = 0;		
	if(z.length == 5)
	{
		i = z.toString( );
		var v_zip = /^[0-9]+$/;
		if( !v_zip.test(i) )
			f = 1;
	}
	else
		f = 1;
	
	if(f == 1)
		return 'Zip should be 5-digits number';
	else
		return false;
}

function check_state(s)
{	
	var f = 0;
	if(s.length == 2)
	{
		i = s.toString( );
		var v_s = /^[a-zA-Z]+$/;
		if( !v_s.test(i) )
			f = 1;
	}
	else
		f = 1;
	if(f == 1)
		return 'State should be 2 characters';
	else
		return false;
}

function check_contact_name(fn, f_l)
{
	var f = 0;
	
	i = fn.toString( );
	if(i.length == 0)
		return f_l+' Name field should not be empty!';

	var v_str = /^[a-zA-Z\'\-]+$/;
	if( !v_str.test(i) )
		f = 1;
	if(f == 1)
		return 'Wrong characters in '+f_l+' Name field. Allowed symbols : a-zA-Z\'-';
	else
		return false;
}

function check_address(a)
{
	var f = 0;
	i = a.toString( );
	if(i.length == 0)
		return 'Address field should not be empty!';
	
	var v_str = /^[a-zA-Z0-9 :;%!\#@\$&\/\,\(\)+\'\._-]+$/;
	if( !v_str.test(i) )
		f = 1;	
	if(f == 1)
		return 'Wrong characters in Address field. Allowed symbols : a-zA-Z0-9 :;%#!@$&/,()+.\'_-';
	else
		return false;
}

function check_address2(a)
{
	var f = 0;
	i = a.toString( );
	if(i.length == 0)
		return true;	
	var v_str = /^[a-zA-Z0-9 :;%!\#@\$&\/\,\(\)+\'\._-]+$/;
	if( !v_str.test(i) )
		f = 1;	
	if(f == 1)
		return 'Wrong characters in Address field. Allowed symbols : a-zA-Z0-9 :;%#!@$&/,()+.\'_-';
	else
		return false;
}

function check_city(c)
{
	var f = 0;
	i = c.toString( );
	if(i.length == 0)
		return 'City field should not be empty!';	
	var v_str = /^[a-zA-Z \-\'\.]+$/;
	if( !v_str.test(i) )
		f = 1;
	if(f == 1)
		return 'Wrong characters in City field. Allowed symbols : a-zA-Z \'.-';
	else
		return false;
}

function check_businessname(b_n)
{
	var f = 0;
	i = b_n.toString( );
	if(i.length == 0)
		return 'Business name field should not be empty!';	
	var v_str = /[\"]+/;
	if( v_str.test(i) )
		f = 1;
	if(f == 1)
		return 'Wrong characters in Business name field. Disallowed symbols : " ';
	else
		return false;
}

function check_number(num)
{
	if(num == null)
		return false;
		
	i = num.toString( );
	var v_num = /^[0-9]+$/;
	if( !v_num.test(i) )
		return false;
	else
		return true;
}

function check_phone_part(p, len)
{
	var f = 0;		
	if(p.length == len)
	{
		i = p.toString( );
		var v_p = /^[0-9]+$/;
		if( !v_p.test(i) )
			f = 1;
	}
	else
		f = 1;
	
	if(f == 1)
		return 'Phone part should be '+len+'-digits number';
	else
		return false;
}

// business profile page functions
function bookmark()
{
	var _1f=window.location.href;
	var _20=document.title;
	if(window.sidebar)
		window.sidebar.addPanel(_20,_1f,'');
	else
	{
		if(document.all)
			window.external.AddFavorite(_1f,_20);
		else
		{
			if(window.opera&&window.print)
			{
				var _21=document.createElement("a");
				_21.setAttribute("href",_1f);
				_21.setAttribute("title",_20);
				_21.setAttribute("rel","sidebar");
				_21.click();
			}
		}
	}
}

function mojoTabs(tab, id, div_id)
{
	var tabNavs = document.getElementById(id).getElementsByTagName('li');
	var tabDivs = document.getElementById(div_id).getElementsByTagName('div');
	var selTab = document.getElementById(tab+'-tab');
	var selDiv = document.getElementById(tab);

	for (var i = 0; i < tabNavs.length; i++)
		if(tabNavs[i].className != 'last')
			tabNavs[i].className = '';

	selTab.className = 'selected';
	for (var i = 0; i < tabDivs.length; i++)
		if (tabDivs[i].className.indexOf('block_text') != -1)
			tabDivs[i].style.display = 'none';
			
	selDiv.style.display = 'block';
}

function email_us(script)
{
	var A=script;
	window.open(A,'TaskList', 'resizable=0,scrollbars=1,width=580,height=600')
}

function tell_friends(script)
{
	var A=script;
	window.open(A,'EmailFriend', 'resizable=0,scrollbars=1,width=600,height=600')
}

function help_dialog(script)
{
	var A=script;
	window.open(A,'Help', 'resizable=0,scrollbars=1,width=800,height=600')
}

function check_tab_title_name(t)
{
	if (t.length > 15 || t.length < 3 )
		return 'Length of title must be between 3 and 15';
	var p = /^[a-z0-9]([0-9a-z _])+$/i;
	if(!p.test(t))
		return 'Title consist of a-z, 0-9, space, underscores.';
	return false;
}

function check_new_business_tab()
{
	var n = $("#new_tab_title").val();
	var e = check_tab_title_name(n);
	return dialog_error('validateTips', 'new_tab_title', e);
}

function show_hide_edit_business_tab(tab_id, show_hide)
{
	if(show_hide == 'show')
	{
		var file_name = 'fck_custom_config.js';
		if(fcka == 'yes')
			file_name = 'fckconfig.js';

		if(typeof(FCKeditorAPI) != 'undefined')
		{
			// check if fck object exists for this tab, if no than cretae 
			var oEditor = FCKeditorAPI.GetInstance('btab_'+tab_id+'_text');
			if(!oEditor)
			{
				oFCKeditor = new FCKeditor('btab_'+tab_id+'_text', '', 400)
				oFCKeditor.BasePath = fck_url
				oFCKeditor.Config["CustomConfigurationsPath"] = fck_url+file_name
				oFCKeditor.ReplaceTextarea()
			}
		}
		else
		{
			oFCKeditor = new FCKeditor('btab_'+tab_id+'_text', '', 400)
			oFCKeditor.BasePath = fck_url
			oFCKeditor.Config["CustomConfigurationsPath"] = fck_url+file_name
			oFCKeditor.ReplaceTextarea()
		}
				
		$('#btab_'+tab_id+'_show_block').hide('normal');
		$('#btab_'+tab_id+'_edit_block').show('normal');		
	}
	else
	{
		$('#btab_'+tab_id+'_edit_block').hide('normal');
		$('#btab_'+tab_id+'_show_block').show('normal');
	}
	
	hide_loader();
}

function check_change_url(b_t, f_id)
{
	var ask = false;
	if(b_t == 'company_info')
	{
		if($('#cc_category').val() != $('#oci').val())
			ask = true;
		if(ask)
		{
			$('#inp_cc_id').val('cat_ccurl');
			$('#block_type').val(b_t);
			$('#f_id').val(f_id);
			$('#change_url_dialog').dialog('open');
			return false;
		}
		if($('#ocomname').val() != $('#business').val())
			ask = true;
		if($('#ocity').val() != $('#city').val())
			ask = true;
		if($('#ostate').val() != $('#state').val())
			ask = true;
		if(ask)
		{
			$('#inp_cc_id').val('c_edit_ccurl');
			$('#block_type').val(b_t);
			$('#f_id').val(f_id);
			$('#change_url_dialog').dialog('open');
			return false;
		}
	}
	return true;
}

function show_categories_dialog()
{
	var msg = "Please consider the following issues before changing your business category. By changing your business category you are also changing the URL or address that your profile is listed under. Any search engines or directories that currently have your Local Mojo Local Site indexed will loose those rankings once the URL is changed. It is not recommended to change your business category after your profile is created unless there is good cause. \n\r\n\r Continue ?";
	if(cool_confirm(msg))
	{
		$("#services_dialog").dialog('close');	
		$("#categories_dialog").dialog('open');
	}
}

function check_categories()
{	
	var cat = $('#category').val();
	if(!check_number(cat))
	{
		if(!check_show_error('Please, select category', 'category'))	return false;
	}
	$('#cc_category').val(cat);
	return true;
}

function show_hide_edit_business_block(b_id, sh)
{
	if(sh == 'show')
	{
		if(b_id == 'mojo')
		{
			if(typeof(FCKeditorAPI) != 'undefined')
			{			
				var oEditor = FCKeditorAPI.GetInstance('mymojo');
				if(!oEditor)
				{
					oFCKeditor = new FCKeditor('mymojo', '', 400)
					oFCKeditor.BasePath = fck_url
					oFCKeditor.Config["CustomConfigurationsPath"] = fck_url+'fck_custom_config.js'
					oFCKeditor.ReplaceTextarea()
				}
			}
			else
			{
				oFCKeditor = new FCKeditor('mymojo', '', 400)
				oFCKeditor.BasePath = fck_url
				oFCKeditor.Config["CustomConfigurationsPath"] = fck_url+'fck_custom_config.js'
				oFCKeditor.ReplaceTextarea()				
			}
		}
		$('#'+b_id+'_show_block').hide('normal');
		$('#'+b_id+'_edit_block').show('normal');
	}
	else
	{
		$('#'+b_id+'_edit_block').hide('normal');
		$('#'+b_id+'_show_block').show('normal');
	}
	hide_loader();
}

function set_times(ot, ct)
{
	var wd = new Array("monday", "tuesday", "wednesday", "thursday", "friday");
	var wed = new Array("saturday", "sunday");
	for (var i = 0; i < wd.length; i++)
	{
	    $('#'+wd[i] + "open").val(ot);
	    $('#'+wd[i] + "close").val(ct);
	}
	for (var i = 0; i < wed.length; i++)
	{
	    $('#'+wed[i] + "open").val('');
	    $('#'+wed[i] + "close").val('');
	}
}

function set_image_title(i_id, t_url, f_url)
{
	$('#edit_image_id').val(i_id);
	$('#edit_image_url').val(f_url);
	var t = $('#photo_title_'+i_id).val();
	$('#epd_photo_title').val(t);
	update_photo(t_url, 'epd_photo_img');
	$('#edit_photo_dialog').dialog('open');	
}

function refresh_image_title(i_id, t)
{
	$('#photo_link_'+i_id).attr('title', t);
	$('#photo_title_'+i_id).val(t);
	$('#photo_link_'+i_id).tooltip({
		track: true,
		delay: 0,
		showURL: false,
		showBody: " - ",
		extraClass: "pretty",
		fixPNG: true,
		left: -120 
	});
}

function update_photo(pu, cid)
{
	$('#'+cid).empty();
	var i = new Image();
	i.src = pu;
	$('#'+cid).append(i);
}

function picnik_url(key, iu, eu, ru, iid)
{
	iu = encodeURIComponent(iu);
	eu = encodeURIComponent(eu);
	ru = encodeURIComponent(ru);
	var u = 'http://www.picnik.com/service/?_apikey='+key+'&_import='+iu+'&_export='+eu+'&_export_method=POST&_redirect='+ru+'&_export_title=Save&_image_id='+iid;
	redirect_to(u, '');
}

function send_photo_to_picnik(key, eu, ru)
{
	var iid = $('#edit_image_id').val();
	var c_id	 = $('#business_id').val();
	var iu = $('#edit_image_url').val();
	picnik_url(key, iu, eu, ru, iid+'_'+c_id);
}

function bind_attr_checkboxes()
{
	$('#attributes input:checkbox').click(function(){
		update_attributes();
	});
}

function init_pretty_tooltip()
{
	$('.pretty_tooltip').tooltip({
		track: true,
		delay: 0,
		showURL: false,
		showBody: " - ",
		extraClass: "pretty",
		fixPNG: true,
		left: -20 
	});			
}

function logo_upload_result(l_u, event, queueID, fileObj, response, data)
{
	if(response == 'false')
	{
		$('.no_logo_message').remove();
		time = new Date();
		var rand = time.getTime();
		var new_src = l_u+rand;
		update_photo(new_src, 'business_logo_img');
		update_photo(new_src, 'business_logo_img_edit');
    	$('.edit_logo_area').show();
	}
	else
		$('.logo_error').html(response);
}

function photo_upload_result(event, queueID, fileObj, response, data)
{
	if(response == 'false')
	{
	}
	else
		$('#photo_upload_error').html(response);		
}

function photo_upload_complete(event, data)
{
	window.location.reload( true );
}

/*
 * Script from NETTUTS.com [by James Padolsey]
 * @requires jQuery($), jQuery UI & sortable/draggable UI modules
 */
var iNettuts = {jQuery:$,
settings:{columns:'.column',widgetSelector: '.widget',handleSelector: '.widget-head',contentSelector: '.widget-content',
widgetDefault : {movable: true,removable: true,collapsible: true,editable: true,colorClasses : ['color-yellow', 'color-red', 'color-blue', 'color-white', 'color-orange', 'color-green']},widgetIndividual : {intro : {movable: false,removable: false,collapsible: false,editable: false}}
},init : function () {this.makeSortable();},
getWidgetSettings : function (id) {var $ = this.jQuery,settings = this.settings;
return (id&&settings.widgetIndividual[id]) ? $.extend({},settings.widgetDefault,settings.widgetIndividual[id]) : settings.widgetDefault;
},
addWidgetControls : function () {var iNettuts = this,$ = this.jQuery,settings = this.settings;
$(settings.widgetSelector, $(settings.columns)).each(function () {
var thisWidgetSettings = iNettuts.getWidgetSettings(this.id);
if (thisWidgetSettings.removable) {
$('<a href="#" class="remove">CLOSE</a>').mousedown(function (e) {e.stopPropagation();}).click(function (){
if(confirm('This widget will be removed, ok?')) {
$(this).parents(settings.widgetSelector).animate({opacity: 0
},function () {$(this).wrap('<div/>').parent().slideUp(function () {$(this).remove();});});}
return false;
}).appendTo($(settings.handleSelector, this));}
if (thisWidgetSettings.editable) {$('<a href="#" class="edit">EDIT</a>').mousedown(function (e) {e.stopPropagation();    
}).toggle(function () {$(this).css({backgroundPosition: '-66px 0', width: '55px'})
.parents(settings.widgetSelector)
.find('.edit-box').show().find('input').focus();
return false;
},function () {$(this).css({backgroundPosition: '', width: ''})
.parents(settings.widgetSelector)
.find('.edit-box').hide();
return false;
}).appendTo($(settings.handleSelector,this));
$('<div class="edit-box" style="display:none;"/>')
.append('<ul><li class="item"><label>Change the title?</label><input value="' + $('h3',this).text() + '"/></li>')
.append((function(){var colorList = '<li class="item"><label>Available colors:</label><ul class="colors">';
$(thisWidgetSettings.colorClasses).each(function () {colorList += '<li class="' + this + '"/>';});
return colorList + '</ul>';
})())
.append('</ul>')
.insertAfter($(settings.handleSelector,this));}
if (thisWidgetSettings.collapsible) {$('<a href="#" class="collapse">COLLAPSE</a>').mousedown(function (e) {e.stopPropagation();    
}).toggle(function () {$(this).css({backgroundPosition: '-38px 0'})
.parents(settings.widgetSelector)
.find(settings.contentSelector).hide();
return false;
},function () {$(this).css({backgroundPosition: ''})
.parents(settings.widgetSelector)
.find(settings.contentSelector).show();
return false;
}).prependTo($(settings.handleSelector,this));
}
});
$('.edit-box').each(function (){
$('input',this).keyup(function () {$(this).parents(settings.widgetSelector).find('h3').text( $(this).val().length>20 ? $(this).val().substr(0,20)+'...' : $(this).val() );});
$('ul.colors li',this).click(function (){var colorStylePattern = /\bcolor-[\w]{1,}\b/,
thisWidgetColorClass = $(this).parents(settings.widgetSelector).attr('class').match(colorStylePattern)
if (thisWidgetColorClass){$(this).parents(settings.widgetSelector)
.removeClass(thisWidgetColorClass[0])
.addClass($(this).attr('class').match(colorStylePattern)[0]);
}
return false;
});
});
},
makeSortable:function(){var iNettuts = this,$ = this.jQuery,settings = this.settings,
$sortableItems = (function(){var notSortable = null;
$(settings.widgetSelector,$(settings.columns)).each(function (i){
if (!iNettuts.getWidgetSettings(this.id).movable){
if(!this.id) {this.id = 'widget-no-id-' + i;}
notSortable += '#' + this.id + ',';
}
});
return $('> li:not(' + notSortable + ')', settings.columns);
})();
$sortableItems.find(settings.handleSelector).css({cursor: 'move'
}).mousedown(function (e) {$sortableItems.css({width:''});
$(this).parent().css({width: $(this).parent().width() + 'px'});
}).mouseup(function () {if(!$(this).parent().hasClass('dragging')) {$(this).parent().css({width:''});} else {$(settings.columns).sortable('disable');}});
$(settings.columns).sortable({
items: $sortableItems,connectWith: $(settings.columns),handle: settings.handleSelector,placeholder: 'widget-placeholder',forcePlaceholderSize: true,revert: 300,delay: 100,opacity: 0.8,containment: 'document',
start: function (e,ui) {$(ui.helper).addClass('dragging');},
stop: function (e,ui) {$(ui.item).css({width:''}).removeClass('dragging');$(settings.columns).sortable('enable');sort_dragged_blocks();}
});
}
};
