var defaultArr = {
	inputId :'input_form_field',
	actionResultClass: 'action_result',
	shortUrlRoot: 'http://key.moosecatch.com/'
};

var errorArr = new Array();
errorArr[0]=	'Can not find message';


document.observe('dom:loaded', function() {
	
	//observer for shareing message by email
	if($('email_send_btn'))
		$('email_send_btn').observe('click', shareMsgByEmailOrSms);
	
	if($('sms_send_btn'))
		$('sms_send_btn').observe('click', shareMsgByEmailOrSms);
	
	//observers for sharing button
	if($('feed')){
		if($('feed').select('.auto_load')){
			$('feed').select('.auto_load').each(function (el){
				$(el).observe('click', loadMessageForSharing);
			});
		}
	}
});


/**
 * this funtion fires when a company change their password
 * 
 * @param button
 * @return
 */
function changePassword() {
	if($('new_pass').value == $('match_new_pass').value) {
		//create the ajax request
		var oldpass = $('old_pass').value;
		var newpass = $('new_pass').value;
		
		new Ajax.Request('/include/rpc.php',
		{
			method:'get',
		    parameters:{mode: 'change_password', opass: oldpass, npass: newpass},
		    onComplete:function(response){
		    	var re = response.responseText;
		    	if(re == 0){
		    		alert('Your password has been changed');
		    	} else {
		    		alert(re);
		    	}
		    },
	  		onFailure: function(){ alert('Something went wrong...') }
		});	
	} else {
		alert('sorry, the new passwords does not match');
	}
}


/**
 * this funtion fires when the save button is pressed in post tab
 * 
 * message text will be sent together with tags info to DB
 * @param button
 * @return
 */
function saveMessage(){

	//after that get the input text
	if($(defaultArr.inputId)){
		var message = $(defaultArr.inputId).value;
		if(message == '') {
			alert('you have to write something');
		} else {
			
			//get the valid to date
			var date = '';
			if($('testinput')) {
				date = $('testinput').value;
			}

			//create the ajax request
			new Ajax.Request('/include/rpc.php',
			{
				method:'get',
			    parameters:{mode: 'save_message', text: message, valid_to: date},
			    onComplete:function(response){
			    	var re = response.responseText;
			    	
			    	if (!(re == -1)){
			    		$(defaultArr.inputId).value = '';
			    		var timedistance = 'Right now';
			    		displayNewPost(message, date, timedistance, re);
			    		//alert("Your new message has been sent to all your customer subscribers.");
			    	}	
			    },
		  		onFailure: function(){ alert('Something went wrong...') }
			});	
		}
	}else {
		return alert(errorArr[0]);
	}
}


/* the shrink button clicked */
function shrink_url() {
	
	var fullURL = '';
	var httpHead = '';
	
	//get the original url
	if($('link_shrink'))
		fullURL = $('link_shrink').value;
	
	//check if http is added or not
	httpHead = fullURL.split(':');
	if(httpHead[0] !='http' && httpHead[0] !='https')
		fullURL = 'http://' + fullURL;
	
	new Ajax.Request('/include/rpc.php',
	{
		method:'get',
	    parameters:{mode: 'shrink_url', 
					full_url: fullURL, 
					},
    	onComplete:function(response){
	    	var re = response.responseText;
	    	
	    	if (re != '-1'){
	    		var shortUrl = defaultArr.shortUrlRoot + re + '/';
	    		//paste the shrinked url to the textarea
	    		$('input_form_field').value = $('input_form_field').value + shortUrl;
	    	} 
	    },
  		onFailure: function(){ if($('setting_result')) $('setting_result').update = 'Something went wrong.'; }
	});

	
	
	
}

function loadMessageForSharing(event){
	var el = event.element();
	if(el.up('a')){
		var rawUrl = el.up('a').href.split('#');
		var messageId = rawUrl[1];
	}else return;
		
	new Ajax.Request('/include/rpc.php',
	{
		method:'get',
	    parameters:{mode: 'load_message', 
					message_id: messageId, 
					},
	    onComplete:function(response){
	    var re = response.responseText;
	    
	    if (re != 1){
	    	
	    	var textLen = re.length;
	    	var textLeft = 0;
	    	
	    	if(textLen <= 160)
	    		var textLeft = 160 - textLen;
	    	
	    	
	    	if($('email_message')) 
				$('email_message').innerHTML = re;
			if($('email_msg_id')) {
				$('email_msg_id').value = messageId;
			}
	    	
			if($('sms_message')) {
				$('sms_message').innerHTML = re;
			}
			if($('sms_msg_id')) {
				$('sms_msg_id').value = messageId;
			}
			if($('own_sms_message'))
				$('own_sms_message').onkeypress=function(){countChars($('own_sms_message'),textLeft)};
				
			
	    }},
  		onFailure: function(){ if($('setting_result')) $('setting_result').update = 'Something went wrong.'; }
	});
	
}

function displayNewPost(m, d, t, re){
	var post_id = re;
	var date = d;
	var timedistance = t;
	var message = m;
	var re = new RegExp('http\:\/\/(.*?)([ ]|$)|www.(.*?)([ ]|$)');
	
	if (message.match(re)) {
		var theLinkArr = new Array();
		theLinkArr = message.match(re)
		alert(theLinkArr[0])
		message = message.replace(re, theLinkArr[0].link(theLinkArr[0]));
	  } 
	  
	//set the date to ''
	if(date == '') {
		date = '';
	} else {
		var date = '<span class="ligth">Valid through: ' + date + '</span>';
	}
	
	//make the last post's fontsize smaller
	var bigtd = document.getElementsByTagName('td');
	for (var i=0; i < bigtd.length; i++) {
		if(bigtd[i].className == 'big') {
			bigtd[i].className = ('');
		}
	}
	
	//find the post list ul
	if($('feed')){

		var tr1 = $('feed').insertRow(0);
		tr1.title = post_id;
		var td_ago = tr1.insertCell(0);
		var td_mess = tr1.insertCell(1);
		
		message = '<div class="message_top">' + message + '</div><div class="message_bottom"></div>';
		timedistance = '<abbr class="ago">' + timedistance + '</abbr>';
		td_ago.className = 'box_ago';
		td_mess.className = 'big';
		td_mess.update(message);
		td_ago.update(timedistance);
		
		var tr2 = $('feed').insertRow(1);
		tr2.title = post_id;
		var empty = tr2.insertCell(0);
		var td_date = tr2.insertCell(1);
		//var td_share = tr2.insertCell(2);
		
		td_date.update(date);
		var del = '<span class="share_span"><img src="/images/delete.PNG" alt="Delete this post" title="Delete this post" onclick="javascript:deletePost('+post_id+');">';
		var facebook = '<a href="http://www.facebook.com/share.php?u=http://moosecatch.com/dynamicpost/'+post_id+'/" onclick="return fbs_click('+post_id+')" target="_blank"><img src="/images/facebook10.png" alt="facebook icon" /></a>';
		var twitter = '<a href="http://twitter.com/home?status='+escape(message)+'"><img src="/images/twitter12.png" title="Tweet this" alt="Tweet this"></a></span>';
		
		td_date.update(date + del+" "+facebook+" "+twitter);
		
		var tr3 = $('feed').insertRow(2);
		tr3.title = post_id;
		tr3.className = 'space';
		
	}
}

/**
 * this funtion fires when the company change themes
 *
 * @param 
 * @return 
 */
function changeTheme(e) {
	var id = e.id;
	
	new Ajax.Request('/include/rpc.php',
	{
		method:'get',
	    parameters:{mode: 'change_theme',  
					theme: id, 
					},
	    	onComplete:function(response){
	    	var re = response.responseText;
	    	
	    	if (re == 0){
				$('alt').href = '/css/' + id + '.css';
	    	} 
	    },
  		onFailure: function(){ if($('setting_result')) $('setting_result').update = 'Something went wrong.'; }
	});
	
}

/**
 * this funtion fires when the service status is changed in form.php
 *
 * @param 
 * @return 
 */
function serviceUpdate(e) {
	var check = e.checked;
	var id = e.name;
	
	new Ajax.Request('/include/rpc.php',
	{
		method:'get',
	    parameters:{mode: 'service_update', 
					checked: check, 
					service_id: id, 
					},
	    	onComplete:function(response){
	    	var re = response.responseText;
	    	
	    	if (re == 0){

	    	} 
	    },
  		onFailure: function(){ if($('setting_result')) $('setting_result').update = 'Something went wrong.'; }
	});
}

/**
 * this funtion fires when the register button is pressed
 *
 * @param 
 * @return 
 */
/*function register() {
	$('register').style.display = 'block';
	$('center').style.display = 'none';
	$('action').style.display = 'none';
}
*/

/**
 * this funtion fires when the save button is pressed in form.php
 * all the informatio will be sent to DB
 * @param 
 * @return 
 */
function settingsSave(e, p) {
	var element = e.id;
	var value = p;

	/*
	var name = $('name').value;
	var email = $('email').value;
	var phone = $('phone').value;
	var contactperson = $('contactperson').value;
	var homepage = $('homepage').value;
//	var image = $('image').value;
	var openinghours = $('openinghours').value;
	var adress = $('adress').value;
	var description = $('description').value;
	*/
	new Ajax.Request('/include/rpc.php',
	{
		method:'get',
	    parameters:{mode: 'store_info', 
					element: element, 
					value: value, 
					},
	    	onComplete:function(response){
	    	var re = response.responseText;
	    	
	    	if (re == 0){
				if($('setting_result')) $('setting_result').update = 'The new information is stored.';
	    	} 
	    },
  		onFailure: function(){ if($('setting_result')) $('setting_result').update = 'Something went wrong.'; }
	});
}

/**
 * this funtion fires when 
 *
 * @param 
 * @return 
 */
function deletePost(id) {
	
	var input_box = confirm("Are you sure you want to delete the post? It will only be deleted here in the feed.");
	if (input_box==true) {
	
	new Ajax.Request('/include/rpc.php',
	{
		method:'get',
	    parameters:{mode: 'delete_post', 
					post: id, 
					},
	    	onComplete:function(response){
	    	var re = response.responseText;
	    	
	    	if (re == 0){
				//alert(id + 'is deleted');
				var trList = document.getElementsByTagName('tr');
				var table = $('feed');
				for(var i = 0; i < trList.length; i++ ){
					if(trList[i].title == id) {
						table.deleteRow(trList[i].rowIndex);
						table.deleteRow(trList[i].rowIndex);
						table.deleteRow(trList[i].rowIndex);
						break;
					}
				}
	    	} 
	    },
  		onFailure: function(){ if($('setting_result')) $('setting_result').update = 'Something went wrong.'; }
	});
	} 
}

/**
 * this funtion fires when someone tries to subscribe to a company
 *
 * @param 
 * @return 
 */
function userSubscribe(){
	var contact;
	
	//if it is in form.php
	var list = document.getElementsByName('sub_input');
	var contactList = new Array();;

	for(var i=0; i < list.length; i++) {
		if(!(list[i].value == '')) {
			
			//clear the 'not valid'
			document.getElementsByName('1')[0].innerHTML = "";
			document.getElementsByName('2')[0].innerHTML = "";
			document.getElementsByName('3')[0].innerHTML = "";
			document.getElementsByName('4')[0].innerHTML = "";
			document.getElementsByName('5')[0].innerHTML = "";
			
			// validation check @
			var str = list[i].value;
			var nr = parseInt(str);
			
			var at = str.indexOf('@');
			if (at<0 || nr < 10 ){ //does not contain
				var p = document.getElementsByName(list[i].id);
				p[0].innerHTML = 'not valid';
			} else { //if this is the first contact
				if(contact == null) {
				contact = list[i].value;
				doRequest(contact);
			} else { //if contact already contains contacts
				contact = contact + ',' + list[i].value;
				doRequest(contact);
			}
			}
		}
	}
	
	//if it is in profile.php
	if($('input_subscribe')){ 
		contact = $('input_subscribe').value; 
		doRequest(contact);
	}
	
	//if it is in undergoing.php
	if($('input_subscribe_undergoing')){ 
		contact = $('input_subscribe_undergoing').value; 
		doRequest(contact);
	}
}

/**
 * this funtion fires when the validation has passed through userSubscribe()
 *
 * @param 
 * @return 
 */
function doRequest(contact) {
	
		//get company id
	if($('sub_cid')){ var cId = $('sub_cid').value;	}
	
	new Ajax.Request('/include/rpc.php',
	{
		method:'get',
	    parameters:{mode: 'subscribe', contact: contact, company_id: cId},
	    onComplete:function(response){
	    	var re = response.responseText;
	    	
	    	var result ='';
	    	
	    	if (re == 0){
	    		result=	'You have been subscribed successfully!';
	    		for(var i=0; i < list.length; i++) {
						clearInput(list[i]);
				}
	    	} else if (re == 2){
	    		result='You have been unsubscribed successfully!';
	    	} else {
	    		result=re;
	    	}
	    	/*
	    	//display the result
	    	//close the input div
	    	if($('subscribe')){
	    		$('subscribe_result').update(result);
	    		$('subscribe').hide();
	    		$('subscribe_result').show();
	    		setTimeout("switchView('subscribe_wrapper',3);", 5000);
	    		
	    	}
	    	*/
	    	alert(result);
	    },
  		onFailure: function(){ if($('setting_result')) $('setting_result').update = 'Something went wrong.'; }
	});
	
}

function clearInput(e) {
	e.value = '';
}

function shareMsgByEmailOrSms(el){
	
	var element = el.element();
	var elememt_id = element.id;
	var mode='';
	var messageId = 0;
	var own_message = '';
	var to = '';
	var callbackBoxId ='';
	var countryCode ='';
	
	//tell if its email or sms subscribtion
	if(elememt_id == 'email_send_btn'){
		mode = 'share_by_email';
		messageId = $('email_msg_id').value;
		own_message = $('own_email_message').value;
		to = $('email_addr').value;
		callbackBoxId = 'emailbox';
		
	}else if(elememt_id == 'sms_send_btn'){
		mode = 'share_by_sms';
		messageId = $('sms_msg_id').value;
		own_message = $('own_sms_message').value;
		if($('sender_name'))
			own_message += "--" + $('sender_name').value;
		if($('country_code'))
			countryCode = $('country_code').value;
		to = $('phone_number').value;
		callbackBoxId = 'smsbox';
	}
	

	new Ajax.Request('/include/rpc.php',
	{
		method:'get',
	    parameters:{mode: mode, contact_info: to, own_message: own_message, message_id:messageId, country_code:countryCode},
	    onLoading: function() {
	    	//add ajax loading image
	    	if($(callbackBoxId)){
	    		$(callbackBoxId).setStyle({
		    		textAlign:'center'
		    	});
	    		var image = new Element('img',{'src': '/images/ajax-loader.gif', 'alt': 'Loading...please wait'});
	    		$(callbackBoxId).update(image);	    		
	    	}
	    },
	    onComplete:function(response){
	    	var re = response.responseText;
	    	var result ='';
	    	
	    	if (re == 0){
	    		result=	'The post has been shared successfully.';
	    	}else {
	    		result=re;
	    	}
	    	if($(callbackBoxId)){
	    		var p = new Element('p').update(
    					new Element('a', {'href': '#', 
    										'class': 'lbAction', 
    										'rel':'deactivate',
    										'onClick': 'window.location.reload()'}).update('Close')
    				);
	    		$(callbackBoxId).update(result);
	    		$(callbackBoxId).appendChild(p);
	    		$(callbackBoxId).setStyle({
		    		textAlign:'left'
		    	});
	    		
	    	}
	    	
	    },
  		onFailure: function(){ if($('setting_result')) $('setting_result').update = 'Something went wrong.'; }
	});
	
	
}

