var languages_available = new Array();
var translations = new Array();
var translate = function(slide, language, id){

	if(translations[id]['current_language']['language'] == language['language']){
		//If current is ours, reset English
		jQuery(slide).find('.carousel_company_name').html(translations[id]['english']['name']);
		jQuery(slide).find('.carousel_item_title').html(translations[id]['english']['title']);
		jQuery(slide).find('.carousel_item_content').html(translations[id]['english']['content']);
		jQuery(slide).find('#translation_'+id+language['language']).html(translations[id]['current_language']['language_translated']);
		translations[id]['current_language'] = {'language':'english', 'language_translated':'English'};
	}else if(translations[id]['current_language']['language'] == 'english'){
		//Else if current is English set our language
		jQuery(slide).find('.carousel_company_name').html(translations[id][language['language']]['name']);
		jQuery(slide).find('.carousel_item_title').html(translations[id][language['language']]['title']);
		jQuery(slide).find('.carousel_item_content').html(translations[id][language['language']]['content']);
		jQuery(slide).find('#translation_'+id+language['language']).html(translations[id]['current_language']['language_translated']);
		translations[id]['current_language'] = language;
	}else{
		//If current is neither ours, nor English reset to english first, then set ours
		jQuery(slide).find('.carousel_company_name').html(translations[id][language['language']]['name']);
		jQuery(slide).find('.carousel_item_title').html(translations[id][language['language']]['title']);
		jQuery(slide).find('.carousel_item_content').html(translations[id][language['language']]['content']);
		jQuery(slide).find('#translation_'+id+translations[id]['current_language']['language']).html(translations[id]['current_language']['language_translated']);
		translations[id]['current_language'] = {'language':'english', 'language_translated':'English'};
		jQuery(slide).find('#translation_'+id+language['language']).html(translations[id]['current_language']['language_translated']);
		translations[id]['current_language'] = language;
	}
};

$(document).ready(function() {
	jQuery('.slider').fadeIn(300);
	  if ($("#carousel").length) {
			 $(function() {
			 $('#carousel')
				   .cycle({ 
				   fx:     'fade', 
				   speed:  500, 
				   timeout: 8000, 
				   next:   '#carousel_next', 
				   prev:   '#carousel_prev',
				   pause: 1
				   //pager:  '#nav' 
			 });
			 });
	       };
	       
	  if ($("#testimonials").length) {
			 $(function() {
			 $('#testimonials')
				   .cycle({ 
				   fx:     'fade', 
				   speed:  500, 
				   timeout: 20000, 
				   next:   '#testimonials_next', 
				   prev:   '#testimonials_prev'
				   //pager:  '#nav' 
			 });
			 });
	       };
	       
	  if ($("#banners").length) {
			 $(function() {
			 $('#banners')
				   .cycle({ 
				   fx:     'fade', 
				   speed:  500, 
				   timeout: 8000, 
				   next:   '#banners_next', 
				   prev:   '#banners_prev'
				   //pager:  '#nav' 
			 });
			 });
	       };


	var m = window.location.pathname.match(/\b([a-z]{2})\/.*/);
	var default_lang = 'en';
	if(m && m.length > 1) default_lang = m[1];
	
	//this section is for the translation
	jQuery('div.carousel div.slide').each(function(){
		var m = jQuery(this).attr('id').match(/citem_(\d+)/i);
		var company_id = m[1];
		if(!company_id) return;

		translations[company_id] = new Array();
		translations[company_id]['current_language'] = {'language':'english', 'language_translated':'English', 'code':'en'};

		(function(slide, company_id){

			jQuery.getJSON('/magazine/json_ad/'+company_id, function(data){
				//Getting the english content
				translations[company_id]['english'] = {
							'name' : jQuery.trim(data['name']),
							'title' : jQuery.trim(data['subheading']),
							'content' : jQuery.trim(data['body'])
						};
			});

			languages_available[company_id] = {};
			jQuery.getJSON('/translations/json_languages/'+company_id, function(languages){
			
			if(languages.length == 0)
				jQuery(slide).find('.carousel_language').append('<div>Translation not available</div>');
			else if(languages.length == 1) 
				jQuery(slide).find('.carousel_language').append('<div>Available translation: </div>');
			else if(languages.length > 1)
				jQuery(slide).find('.carousel_language').append('<div>Available translations: </div>');

			for(i in languages){
				languages_available[company_id][languages[i]['language']] = true;
				var lang_label = languages[i]['language_translated'];
				if(default_lang == languages[i]['code']){
					translations[company_id]['current_language'] = languages[i];
					lang_label = 'English';
				}
				var link = jQuery("<a class='button_"+languages[i]['language']+"' id='translation_"+company_id+languages[i]['language']+"' href='javascript:void(0)'>"+lang_label+"</a>");

				(function(language){
					jQuery(link).click(function(){
						jQuery('div.carousel div.slide').each(function(i,v){
							var m = jQuery(this).attr('id').match(/citem_(\d+)/i);
							var id = m[1];
							if(!id) return;
						
							(function(slide, id){
								if(!languages_available[id][language['language']]) return;
								if(translations[id][language['language']])
									translate(slide, language, id);
								else
									jQuery.getJSON('/translations/json_translation/'+language['language']+'/'+id, function(translation){
										if(translation[0].content.length > 300)
											translation[0].content = translation[0].content.substr(0,300);
										translations[id][language['language']] = translation[0];
										translations[id][language['language']]['content'] += "<a href=\"/"+language['code']+"/magazine/ad/"+id+"\"> ... Read More</a>";
										translate(slide, language, id);
									});
							})(v, id);
						});
					});
				})(languages[i]);
				jQuery(slide).find('.carousel_language').append(link);
			}
		});})(this, company_id);
	});
});

/**
 * Function : dump()
 * Arguments: The data - array,hash(associative array),object
 *    The level - OPTIONAL
 * Returns  : The textual representation of the array.
 * This function was inspired by the print_r function of PHP.
 * This will accept some data as the argument and return a
 * text that will be a more readable version of the
 * array/hash/object that is given.
 * Docs: http://www.openjs.com/scripts/others/dump_function_php_print_r.php
 */
function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	
	//The padding given at the beginning of the line.
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	
	if(typeof(arr) == 'object') { //Array/Hashes/Objects 
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { //If it is an array,
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else { //Stings/Chars/Numbers etc.
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
}

