var m_nicEditorObj = null;

function createNicEditor(icoPath){
	m_nicEditorObj = new nicEditor({iconsPath : icoPath}).panelInstance('comment');
}

function strip_tags (str, allowed_tags) {
    var key = '', allowed = false;
    var matches = [];
    var allowed_array = [];
    var allowed_tag = '';
    var i = 0;
    var k = '';
    var html = '';
 
    var replacer = function (search, replace, str) {
        return str.split(search).join(replace);
    };
 
    // Build allows tags associative array
    if (allowed_tags) {
        allowed_array = allowed_tags.match(/([a-zA-Z0-9]+)/gi);
    }
 
    str += '';
 
    // Match tags
    matches = str.match(/(<\/?[\S][^>]*>)/gi);
 
    // Go through all HTML tags
    for (key in matches) {
        if (isNaN(key)) {
            // IE7 Hack
            continue;
        }
 
        // Save HTML tag
        html = matches[key].toString();
 
        // Is tag not in allowed list? Remove from str!
        allowed = false;
 
        // Go through all allowed tags
        for (k in allowed_array) {
            // Init
            allowed_tag = allowed_array[k];
            i = -1;
 
            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+'>');}
            if (i != 0) { i = html.toLowerCase().indexOf('<'+allowed_tag+' ');}
            if (i != 0) { i = html.toLowerCase().indexOf('</'+allowed_tag)   ;}
 
            // Determine
            if (i == 0) {
                allowed = true;
                break;
            }
        }
 
        if (!allowed) {
            str = replacer(html, "", str); // Custom replace. No regexing
        }
    }
 
    return str;
}

function trim(string){
	return string.replace(/(^\s+)|(\s+$)/g, "");
}

function showErrorMessage(message){
	$('<div style="font-size: 9pt;padding-top:20px;">' + message + '</div>').dialog({
		modal:true,
		title:"Error",
		close: function(ev, ui){
			$(this).remove();
		},
		buttons:{
			"Close": function(){$(this).dialog('close');}
		}});
}

function showSuccessMessage(message){
	$('<div style="font-size: 9pt;padding-top:20px;">' + message + '</div>').dialog({
		modal:true,
		title:"Success",
		close: function(ev, ui){
			$(this).remove();
		},
		buttons:{
			"Close": function(){$(this).dialog('close');}
		}});
}


var _sending = false;
function contactSubmit(url){
	if(_sending){
		return false;
	}
	_sending = true;
	m_nicEditorObj.nicInstances[0].saveContent();
	var error = false;
	$(".required").each(function(index){
		var el = $(this);
		el.removeClass('error');
		if(trim(el.val()) == ''){
			el.addClass('error');
			error = true;
		}
	});
	$('.nicEdit-main').parent().removeClass('error');
	if(trim(strip_tags($('#comment').val())) == ''){
		$('.nicEdit-main').parent().addClass('error');
		error = true;
	}
	if(error){
		_sending = false;
		showErrorMessage('Please fill in all the required fields.');
		return false;
	}
	var email = $('input[name=email]');
	var regMail = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	if(!regMail.test(email.val())){
		_sending = false;
		showErrorMessage('Please specify correct email address.');
		email.addClass('error');
		return false;
	}
	var name=$('input[name=name]');
	var company=$('input[name=company]');
	var comment=$('#comment');
	
	$('img#sending').css('display', '');
	//console.log(url);
	$.post( url,
			{email: email.val(),
			name: name.val(),
			company: company.val(),
			comment: comment.val()},
			function(data){
				_sending = false;
				if(data.errorCode !=0 ){
					showErrorMessage('Error: ' + data.message + '<br />Please, try again.');
					switch(data.errorCode){
						case 1: name.addClass('error');
								break;
						case 2:
						case 3: email.addClass('error');
								break;
						case 4: $('.nicEdit-main').parent().addClass('error');
								break;
					}
				} else {
					showSuccessMessage('Your message has been sent. We will return your message within 3-5 business days.');
					email.val('');
					name.val('');
					company.val('');
					comment.val('');
					m_nicEditorObj.nicInstances[0].setContent('');
				}
				$('img#sending').css('display', 'none');
			}, 'json');
	
	return false;
}

/*
if(i_nicEditorObj != null){
    for(var i=0; i<i_nicEditorObj.nicInstances.length; i++){
        i_nicEditorObj.nicInstances[i].saveContent();
    }
}*/
