
new function($){
	var WorldService={
		o:{author:'BBC World Service',version:'0.0.1'}
	};
	$.ws=WorldService;
}(jQuery);


var general = new function() {

	this.get_el_by_id = function(el_id) {
		if (document.getElementById) {
			return document.getElementById(el_id);
		}
		else if (document.all) {
			return document.all[el_id];
		}
		else if (document.layers) {
			return document.layers[el_id];
		}
		else {return false;}
	}

	this.get_els_by_class = function (obj, tag, class_name) {
	    var array_els = (tag == "*" && obj.all)? obj.all : obj.getElementsByTagName(tag);
    	var array_rtn_els = new Array();
	    class_name = class_name.replace(/\-/g, "\\-");
    	var o_reg_exp = new RegExp("(^|\\s)" + class_name + "(\\s|$)");
	    var o_el;
    	for (var i in array_els) {
        	o_el = array_els[i];
	        if (o_reg_exp.test(o_el.className)) {
    	        array_rtn_els.push(o_el);
        	}   
	    }
    	return array_rtn_els;
	}	
	
	this.get_next_sibling = function(el) {
		var el=el.nextSibling;
		while (el.nodeType!=1){
			el = el.nextSibling;
		}
		return el;
	}

	this.is_node = function(el) {
		if (el.nodeType==1){
			return true;
		}
		return false;
	}

	this.toggle_el = function(el) {
		if (this.is_node(el)){	
			el.style.display = (el.style.display == "block")? "none":"block";
		}
	}
	
	this.close_el = function(el) {
		if (this.is_node(el)){	
			el.style.display = "none";
		}
	}

	this.open_el = function(el) {
		if (this.is_node(el)){	
			el.style.display = "block";
		}
	}

	this.toggle_id = function(el_id) {
		if (toggle = this.get_el_by_id(el_id)) {
			toggle.style.display = (toggle.style.display == "block")? "none":"block";
		}
	}
	
	this.close_id = function(el_id) {
		if (toggle = this.get_el_by_id(el_id)) {
			toggle.style.display = "none";
		}
	}

	this.open_id = function(el_id) {
		if (toggle = this.get_el_by_id(el_id)) {
			toggle.style.display = "block";
		}
	}
	
	this.popup_page = function(url,page_name,params) {
		popup_win = window.open(url,page_name,params);
		popup_win.focus();
	}
	
	this.copy_href_to_onclick_fn_by_class = function(mod_class,fn_name,target_name) {
		var class_mods_arr = this.get_els_by_class(document,"*", mod_class);
		for (var i in class_mods_arr) {
//			class_mods_arr[i].onclick = function() {eval(fn_name + "('"+class_mods_arr[i].href+"');"); return false;}
			class_mods_arr[i].onclick = function() {eval(fn_name + "(this.href);"); return false;}
			if (target_name) {
				class_mods_arr[i].target = target_name;
			}
		}
	}

	this.add_onclick_fn_by_class = function(mod_class,fn_name,target_name) {
		var class_mods_arr = this.get_els_by_class(document,"*", mod_class);
		for (var i in class_mods_arr) {
			class_mods_arr[i].onclick = function() {eval(fn_name + "();"); return false;}
			if (target_name) {
				class_mods_arr[i].target = target_name;
			}
		}
	}

	this.replace_link_with_flash_audio_by_class = function(flash_class,swf_url_query,flash_r,flash_h,flash_w) {
		var class_mods_arr = this.get_els_by_class(document,"*", flash_class);	
		for (var i in class_mods_arr) {
			var audio_url = class_mods_arr[i].getElementsByTagName("a");
			audio_url = audio_url[0].href;
			var flash_url = swf_url_query + audio_url;
			var no_flash = class_mods_arr[i].innerHTML;
			var flash_obj = bbcws.html.flash.placeMovie({requiredVersion:flash_r, flWidth:flash_w, flHeight:flash_h, flName:flash_url, noFlashContent:no_flash}); 
			class_mods_arr[i].innerHTML = flash_obj;
		}
	}	
	
	this.opener_focus_location = function (loc){
		if (window.opener && !window.opener.closed){
			if (loc) {window.opener.location = loc;}
			window.opener.focus();
// not working in ff			window.blur();
		}
		else {
			if (loc) {window.open(loc);}
		}
	}
	this.opener_focus = function (loc){
		if (window.opener && !window.opener.closed){
			window.opener.focus();
// not working in ff			window.blur();
		}
		else {
			if (loc) {window.open(loc);}
		}
	}
	
}

/*popups*/

var set_popup_controls = function() {

	var popup_controls_id = "popup-controls";
	general.open_id(popup_controls_id);
	
	var print_popup = "print-popup";
	if (print_popup = general.get_el_by_id(print_popup)) {
		print_popup.onclick = function() {print(); return false;}
	}

	var close_popup = "close-popup";	
	if(close_popup = general.get_el_by_id(close_popup)) {
		close_popup.onclick = function() {close(); return false;}
	}
}

var set_popup_links = function() {

	var mod_class = "popup1";
	var fn_name = "open_popup1";	
	var target_name = "popup1";	

	general.copy_href_to_onclick_fn_by_class(mod_class,fn_name,target_name);
}

var open_popup1 = function(url) {

	general.popup_page(url,'popup1','width=693,height=525,toolbar=no,personalbar=no,location=no,directories=no,statusbar=no,menubar=no,status=no,resizable=yes,left=60,screenX=60,top=100,screenY=100');
}

var set_opener_focus_location = function() {

	var mod_class = "opener-focus-location";
	var fn_name = "general.opener_focus_location";	
	var target_name = null;

	general.copy_href_to_onclick_fn_by_class(mod_class,fn_name,target_name);
}

var set_opener_focus = function() {

	var mod_class = "opener-focus";
	var fn_name = "general.opener_focus";	
	var target_name = null;

	general.copy_href_to_onclick_fn_by_class(mod_class,fn_name,target_name);
}

/*MR: for legacy tc1 pages*/
var open_popup2 = function(url) {

	general.popup_page(url,'popup1','width=350,height=640,toolbar=no,personalbar=no,location=no,directories=no,statusbar=no,menubar=no,status=no,resizable=yes,left=60,screenX=60,top=100,screenY=100');
}

var set_send_friend_link = function() {

	var mod_class = "send-friend";
	var fn_name = "open_popup2";	
	var target_name = null;

	var class_mods_arr = general.get_el_by_id(mod_class);

	for (var i in class_mods_arr) {		
		var a_in_class = class_mods_arr.getElementsByTagName("a");
		for (var j in a_in_class) {
			a_in_class[j].onclick = function() {eval(fn_name + "(this.href);"); return false;}
			if (target_name) {
				a_in_class[j].target = target_name;
			}
		}
	}
}

var global = function() {

	set_popup_controls();
	set_popup_links();
	set_opener_focus_location();
	set_opener_focus();
	/*MR: for legacy tc1 pages*/
	set_send_friend_link();
}

/* onload event management*/
var wo;
	if (wo = window.onload) {
		window.onload = function() {
		wo();
		global();
	}
}
	else {
		window.onload = function() {
		global();				
	}
}
/* end onload event */
			
