//real popup script
var open_popup = function() {
	var a = {};
	if (typeof arguments[0] === 'string') {
		a.href      = arguments[0];
		a.options   = 'fullscreen';
		a.className = 'external';
	} else {
		a = arguments[0];
	}
	a.width   = a.width || 630;
	a.height  = a.height || 440;
	a.left    = a.left || 30;
	a.top     = a.top || 30;
	a.options = a.options || '';
	if (!/fullscreen/.test(a.options)) {
		var options = [];
		options.push('scrollbars=yes');
		options.push('resizable=yes');
		options.push('width=' + a.width);
		options.push('height=' + a.height);
		options.push('left=' + a.left);
		options.push('top=' + a.top);
		a.options += options.join(',');
	} else {
		a.options = 'scrollbars=yes';
	}
	mypopup = window.open(a.href, a.className, a.options);
	if (!mypopup) {
		var box = $('alertBox');
		if (!box) {
			box    = document.createElement('DIV');
			box.id = 'alertBox';
			document.body.appendChild(box);
		}
		box.innerHTML     = cs.wording.alertBox.replace('#JS#', "open_popup('" + a.href + "'); this.parentNode.style.display='none'; return false;");
		box.style.display = 'block';
		Events.addEvent(box, 'click', register_user);
		window.location.hash = 'alertBox';
	} else {
		if (/module=sponsor_cbsys_userform/i.test(a.href)) {
			$('flashSwf').paidPopupOpened();
		}
		mypopup.focus();
	}
	return false;
};

var pop = 0;

function popunder_v2(url){
	if (pop == 1) return;
	pop = 1;
	var c = document.createElement("div");
	c.innerHTML = "<!--[if IE]><![endif]-->";
	IsIE = c.innerHTML.length == 0 ? true : false;
	PopWin = self.window.open("about:blank", "rand_" + Math.floor(89999999 * Math.random() + 10000000), "toolbar=0,scrollbars=1,location=1,statusbar=1,menubar=0,resizable=1,width=1024,height=950");
	if (PopWin) {
		PopWin.blur();
		PopWin.Init = function (e) {
			with (e) {this.Params = e.Params;this.Main = function () {
					if (typeof window.mozPaintCount != "undefined") {var x = this.window.open("about:blank");x.close();} var a = this.Params.PopURL;try {opener.window.focus();} catch (err) {}window.location = a;};this.Main();
			}
		};
		PopWin.Params = {PopURL: url};
		PopWin.Init(PopWin);
	}
};

//popunder using an iframe
var open_popunder = function(z){
	var d = dimension_detect(), s = $('shadow');
	s.style.display='block';
	s.style.width=d.docW+30+'px';
	s.style.height=d.docH+'px';
	document.body.style.overflow = 'hidden';
	document.getElementsByTagName('html')[0].style.overflow='hidden';
	$('popunder').src = z+'&toggle=1';
};

//enable popupunder/iframe positionning according to its parent frame
var toggle_popunder = function(){
	if (window.parent && window.parent.toggle_popup) {
		window.parent.toggle_popup();
	}
};

//popupunder/iframe positionning according to its parent
var toggle_popup=function(){
	var shadow = $('shadow'),iframe = $('popunder'), d = dimension_detect();
	if( iframe.style.display == 'block' ){
		shadow.style.display = 'none';
		iframe.style.display = 'none';
		document.body.style.overflow = 'auto';
		document.getElementsByTagName('html')[0].style.overflow='auto';
	} else {
		iframe.style.display = 'block';
		var d2 = frames['popunder'].dimension_detect();
		iframe.style.width  = d2.docW+'px';
		iframe.style.height = d2.docH+'px';
		iframe.style.top    = d.top+100+'px';
		iframe.style.left   = parseInt((d.viewW-d2.docH)/2,10)+'px';
	}
};

//emulate hover and redirect when using ajax
var hover_menu = function (x) {
	var a = x.parentNode.getElementsByTagName('li');
	for (var i = 0, b; b = a[i]; i += 1) {
		if (b.className != 'blue')
			b.className = '';
	}
	x.className='selected';
};

/* NAVIGATON RELATED FUNCTIONS */

//toggle faq Q&A
var faq = {
	'reset' : function () {
		var f = $('faq_list').childNodes;
		for (var i = 0, o; o = f[i]; i += 1) {
			if (o.className === 'answer') {
				o.style.display = 'none';
			}
		}
	},
	'toggle': function (event) {
		var q = getEventTarget(event);
		if (q.className === 'question') {
			var a = getNextElement(q);
			if (a.nodeType === 1 && a.className === 'answer') {
				var d = a.style.display;
				faq.reset();
				if (d === 'none') {
					a.style.display = '';
				}
			}
		}
	},
	'init': function() {
		Events.addEvent($('faq_list'),'click',faq.toggle);
		faq.reset();
	}
};

//update menu list to gain ajax capabilities
var cs_navigation = function(event){
	var a = getEventTarget(event);
	if (a.tagName.toUpperCase() === 'SPAN') {
		a = a.parentNode;
	}
	if (a.tagName.toUpperCase() === 'A') {
		if (/module=subscribe/i.test(a.search)){
			open_popunder(a);
		} else if (/module=faq/i.test(a.search)) {
			open_popup(a);
		} else if (/module=sponsor_cbsys_userform/i.test(a.search)) {
			open_popup(a.href);
		} else if (/id_rotation=323/i.test(a.search)) {
			//no action
			return true;
		} else {
			hover_menu(a.parentNode);
			setLocation(a.search.substring(1));
		}
	}
	stopEvent(event);
};

var manage_registration = function (event) {
	var a = getEventTarget(event);
	open_popup(a.href);
	stopEvent(event);
};

var manage_registration_button = function () {
	var o = $('register');
	if (o) {
		cs.etat = (!/^(ACTIF|PENDING)/i.test(arguments[0])) ? 'PENDING' : arguments[0];
		o.style.display = '';
		o.style.display = (cs.etat === 'ACTIF') ? 'none':'';
	}
};

//ajax loading process...
var loadingProcess = function (str) {
	var c = $('content_loader');
	if (!c) {
		var b = $('content');
		c = document.createElement('div');
		c.id = 'content_loader';
		b.insertBefore(c,b.firstChild);
	}
	c.innerHTML = '<div>'+str+'<\/div>';
};

//connected users actions to be taken
var navUsers = function (event) {
	var o = getEventTarget(event), userid, re = /^memberid-(\d+)$/;
	switch (o.nodeName) {
		case 'SPAN':
			userid = o.parentNode.id.match(re);
			if (o.className=='showdetail') {
				viewDetail(userid[1]);
			} else {
				mailTo(userid[1]);
			}
			break;
		case 'A':
			userid = o.parentNode.id.match(re);
			sendRequest(userid[1]);
			break;
		case 'B':
			userid = o.parentNode.parentNode.id.match(re);
			viewDetail(userid[1]);
			break;
		case 'IMG':
			if (o.className=='showdetail') {
				userid = o.parentNode.parentNode.id.match(re);
				viewDetail(userid[1]);
			}
			break;
	}
};

//add/remove action whenever we use ajax to change the layout
var csEvents = {
	'events' : ['geoip_reg', 'geoip_dep', 'manage_registration','main_bottom', 'connected_users', 'mailist', 'edit_profil', 'edit_passwd', 'unsubscribe', 'sub_menu', 'fmailbox', 'fwrite', 'fmedia', 'media-list', 'update-contact', 'region', 'region_conn', 'mail_clean_up'],
	'load' : function (){
		var s;
		for (var i = 0, j = csEvents.events.length; i < j; i += 1) {
			s = $(csEvents.events[i]);
			if(s) {
				switch (s.id) {
					case 'manage_registration': Events.addEvent(s,'click',manage_registration); break;
					case 'region': Events.addEvent(s,'change',searchUsers); break;
					case 'region_conn': Events.addEvent(s,'change',find_connected_users); break;
					case 'sub_menu': Events.addEvent(s,'click',cs_navigation); break;
					case 'connected_users': show_connected_users(); Events.addEvent(s,'click',navUsers); break;
					case 'main_bottom' : Events.addEvent(s, 'click', doNavigate); break;
					case 'mailist': Events.addEvent(s,'click',viewMail);  Events.addEvent(s,'mouseover',infoBulles.start); Events.addEvent(s,'mouseout',infoBulles.stop); break;
					case 'mail_clean_up': Events.addEvent(s,'click',cleanUp); break;
					case 'edit_profil':  Events.addEvent(s,'submit',updateProfil); break;
					case 'geoip_reg':  Events.addEvent(s,'change',updateGeoip); break;
					case 'geoip_dep':  Events.addEvent(s,'change',updateGeoip); break;
					case 'edit_passwd': Events.addEvent(s,'submit',updatePasswd); break;
					case 'unsubscribe': Events.addEvent(s,'click', unsubscribed); break;
					case 'fmailbox': Events.addEvent(s,'submit',updateMailbox); break;
					case 'fwrite': Events.addEvent(s,'submit',sendMessage); break;
					case 'fmedia': Events.addEvent(s,'submit',updateMedia); break;
					case 'media-list': Events.addEvent(s,'click',viewMedia); break;
					case 'update-contact': Events.addEvent(s,'submit',updateContact); break;
				}
			}
		}
	},
	'unload' : function() {
		var s;
		for (var i = 0, j = csEvents.events.length; i < j; i += 1) {
			s = $(csEvents.events[i]);
			if(s){
				switch(s){
					case 'manage_registration': Events.removeEvent(s,'click',manage_registration); break;
					case 'region': Events.removeEvent(s,'change',searchUsers); break;
					case 'region_conn': Events.removeEvent(s,'change',find_connected_users); break;
					case 'sub_menu': Events.removeEvent(s,'click',cs_navigation); break;
					case 'connected_users': Events.removeEvent(s,'click',navUsers); break;
					case 'navConnected' : Events.removeEvent(s, 'click', doNavigate); break;
					case 'mailist': Events.removeEvent(s,'click',viewMail); Events.removeEvent(s,'mouseover',infoBulles.start); Events.removeEvent(s,'mouseout',infoBulles.stop); break;
					case 'mail_clean_up': Events.removeEvent(s,'click',cleanUp); break;
					case 'edit_profil': Events.removeEvent(s,'submit',updateProfil); break;
					case 'geoip_reg':  Events.removeEvent(s,'change',updateGeoip); break;
					case 'geoip_dep':  Events.removeEvent(s,'change',updateGeoip); break;
					case 'edit_passwd': Events.removeEvent(s,'submit',updatePasswd); break;
					case 'unsubscribe': Events.removeEvent(s, 'click', unsubscribed); break;
					case 'fmailbox': Events.removeEvent(s,'submit',updateMailbox); break;
					case 'fwrite': Events.removeEvent(s,'submit',sendMessage); break;
					case 'fmedia': Events.removeEvent(s,'submit',updateMedia); break;
					case 'media-list': Events.removeEvent(s,'click',viewMedia); break;
					case 'update-contact': Events.removeEvent(s,'submit',updateContact); break;
				}
			}
		}
	},
	'init' : function() {
		Events.addEvent($('main_menu'), 'click', cs_navigation);
		Events.addEvent(document, 'keypress', blockBackSpace);
		Events.addEvent(document, 'keydown', blockBackSpace);
		Events.addEvent($('header'), 'click', allowExit);
		if (cs.id_user > 0) {
			show_connected_users();
		}
		csEvents.load();
	}
};

//enabling bookmarking and serving/loading page via with ajax works with Opera/Safari/FF and IE8+
var setLocation = function() {

	//show the new content used by ajax
	var fn = function(){
		if (cs.HR.location.status==200) {
			if (typeof getCookie(cs.uid) !== 'string') {
				window.location = window.location.pathname + '?id=' + cs.id + '&tracker=' + cs.tracker;
			} else {
				if(cs.HR.location.getResponseHeader('x-cam-nbmails') !== null ) {
					var a = cs.HR.location.getResponseHeader('x-cam-nbmails').match(/\d+/g);
					if (getObjectType(a) == 'Array' && a.length > 0) {
						$('nb_unread_mails').innerHTML = a[0];
					}
				}
				c = cs.HR.location.responseText;
				/*
				if (/((\d+)\sans,(.*?)(<br \/>|<\/span>))/.test(c)) {
					if (cs.gender == 'mal' && cs.etat == 'PENDING') {
						c = c.replace(/((\d+)\sans,(.*?)(<br \/>|<\/span>))/g,'$2 ans $4');
					}
				}
				*/
				$('content').innerHTML = c;
				csEvents.load();
			}
		}
	};

	return function (qs) {
		if (cs.HR.location !== null) {
			cs.HR.location.abort();
		}
		if (/module=mail/.test(qs) && /action=write/.test(qs) && cs.etat != 'ACTIF' && cs.gender === 'mal' && cs.freeAccess !== 'Y')  {
			open_popup($('register').href);
			return false;
		}
		loadingProcess(cs.wording.pageLoading);
		window.location.hash = Base64.encode(qs);
		cs.qs_storage = qs;
		csEvents.unload();
		cs.HR.location = sAjax(window.location.pathname, qs + '&ajax=1', fn, {'method' : 'get', 'mime' : 'plain'});
	};
}();

//general function to send forms via AJAX DOES NOT SEND IMAGE!!!
var sendForm = function() {

	//show the new content used by ajax
	var fn = function() {
		if (cs.HR.form.status === 200) {
			if (cs.HR.form.getResponseHeader('x-cam-pwd')) {
				cs.pyt = cs.HR.form.getResponseHeader('x-cam-pwd');
			}
			if (typeof getCookie(cs.uid) !== 'string') {
				window.location = window.location.pathname + '?id=' + cs.id + '&tracker=' + cs.tracker;
			} else {
				if (/OK/.test(cs.HR.form.getResponseHeader('x-cam-ghost'))) {
					$('flashSwf').ghostme();
				}
				if(cs.HR.form.getResponseHeader('x-cam-nbmails') !== null) {
					var a = cs.HR.form.getResponseHeader('x-cam-nbmails').match(/\d+/g);
					if (a instanceof Array && a.length > 0) {
						$('nb_unread_mails').innerHTML = a[0];
					}
				}
				$('content').innerHTML = cs.HR.form.responseText;
				csEvents.load();
			}
		}
	};

	return function (fId) {
		if (cs.HR.form !== null) {
			cs.HR.form.abort();
		}
		loadingProcess(cs.wording.formProcessing);
		csEvents.unload();
		cs.HR.form = sAjax(window.location.pathname, form2query(fId) + '&ajax=1', fn, {'method' : 'post', 'mime' : 'plain'});
	};
}();

//general function to edit the document title
var setTitleContent = function (txt) {
	if (cs.titleTimeOut !== undefined) {
		clearTimeout(cs.titleTimeOut);
	}
	document.title = txt;
	cs.titleTimeOut = setTimeout(function(){document.title = 'CamSympa';}, 3E4);
};

var searchUsers = function (event) {

	var fn = function () {
		if (cs.HR.form.status === 200) {
			if (typeof getCookie(cs.uid) !== 'string') {
				window.location = window.location.pathname + '?id=' + cs.id + '&tracker=' + cs.tracker;
			} else {
				$('content').innerHTML = cs.HR.form.responseText;
				csEvents.load();
			}
		}
	};

	return function (event) {
		stopEvent(event);
		var o = getEventTarget(event);
		if (o.value !== '') {
			if (cs.HR.form !== null) {
				cs.HR.form.abort();
			}
			loadingProcess(cs.wording.formProcessing);
			csEvents.unload();
			var qs = '?' + 'module=home&action=recherche&region=' + o.value;
			cs.qs_storage = qs;
			cs.HR.form = sAjax(window.location.pathname, qs+ '&ajax=1', fn, {'method' : 'post', 'mime' : 'plain'});
		}

	};
}();

//debug function

//CSS reload
var reloadCSS = function() {
	for (var i = 0, list = document.getElementsByTagName('link'), t = new Date().getTime(), o, a; o = list[i]; i += 1) {
		if (/stylesheet/i.test(o.rel) && o.href) {
			a = o.href.replace(/(&|\?)timestamp=\d+/, '');
			o.href = a + ( a.indexOf('?') === -1 ? '?' : '&' ) + 'timestamp=' + t;
		}
	}
};

//Javascript reload
var reloadJS = function() {
	for (var i = 0, list = document.getElementsByTagName('script'), t = new Date().getTime(), o, a; o = list[i]; i += 1) {
		if (/javascript/i.test(o.type) && o.src) {
			a = o.src.replace(/(&|\?)timestamp=\d+/, '');
			o.src = a + ( a.indexOf('?') === -1 ? '?' : '&' ) + 'timestamp=' + t;
		}
	}
};

//block Back Space key everywhere except on input and on textarea tag
var blockBackSpace = function (event) {
	var o = getEventTarget(event), k = getKeyCode(event);
	if (!/^(TEXTAREA|INPUT)$/.test(o.nodeName) && k === 8) {
		stopEvent(event);
	}
};

var allowExit = function(event) {
	var o=getEventTarget(event);
	if (o.nodeName==='A'&&/(logout=1|securite_totale)/.test(o.search)) {
		window.onbeforeunload = null;
	}

};

var confirmExit = function () {
	$('flashSwf').hard_disconnect();
	return "Vous venez de perdre la connexion au Chat de Camsympa\nUtilisez la navigation du site et non les boutons de votre navigateur";
//	return "Pour ne pas perdre votre connexion au Chat Camsympa\nUtilisez la navigation du site et non les boutons de votre navigateur";
}


