/*
 	callMeNow applicatie
	
	simpele implementatie
	
		<div id="callmenow">
			<div id="CMN_Images">Status icon</div>
			<input type="text" id="CMN_PhoneNumber" value="" />
			<input type="button" id="CMN_ButtonClear" value="Wissen" />
			<input type="button" id="CMN_ButtonRetry" value="Opnieuw" />
			<input type="button" id="CMN_Button" value="Bel mij" />
			<div id="CMN_MessageArea">Status text</div>
			<div id="CMN_Info">Info icon</div>
			<div id="CMN_InfoContainer">Info text</div>
		</div>
		
		var cmn = new callMeNow({
			container: 'callmenow',
			reg_id: "4f3a63aa-1ed2-4b64-9a26-f2ed753d45ed"
		});
	
	
	
	te gebruiken methods, zie code voor meer uitleg
	
		string	cmn.getInfoText();
		bool	cmn.isInService();
		object	cmn.onStateChange = function(state)	{ };
*/
function callMeNow( settings )
{
	var me = this;
	var cmn_inst = null;
	
	var defaults = {
		
		// element van callmenow applicatie
		container: null,
		
		// registratie code van callmenow dienst
		reg_id: null,
		
		// status afbeeldingen
		images: {
			location	: '/cs/js/callmenow/img/',	// locatie van de afbeeldingen
			info		: 'info.gif',
			info_update	: 'info_update.gif',
			status		:	{
				idle			: 'idle.gif',
				connected		: 'connected.gif',
				disconnected	: 'disconnected.gif',
				error			: 'error.gif',
				a	: {
					calling		: 'calling_a.gif',
					busy		: 'busy_a.gif',
					no_answer	: 'no_answer_a.gif'
				},
				b	: {
					calling		: 'calling_b.gif',
					busy		: 'busy_b.gif',
					no_answer	: 'no_answer_b.gif'
				}
			}
		},
		
		text: {
			// standaard tekst in de textbox
			init_input_val	: 'Uw nummer',

			// service niet beschikbaar
			unavailable		: 'Wij zijn op dit moment gesloten.',

			// status meldingen
			status	: {
				no_number			: 'Geen nummer ingevuld.',
				invalid_number		: 'Ongeldig nummer ingevuld.',
				no_service_number	: 'Geen servicenummers toegestaan.',
				no_06_number		: 'Geen 06 nummers toegestaan.',

				connected			: 'Verbonden.',
				disconnected		: 'Verbinding verbroken.',
				error				: 'Er ging iets mis, er is geen verbinding.',
				a	:	{	// het bedrijf dat gebeld wordt
					calling			: 'Bezig met verbinding maken',
					busy			: 'Al onze medewerkers zijn in gesprek.',
					no_answer		: 'Telefoon wordt niet opgenomen.'
				},
				b	:	{	// de gebruiker
					calling			: 'U wordt nu gebeld',
					busy			: 'Uw toestel is bezet.',
					no_answer		: 'Wij kunnen u niet bereiken.'
				}
			},
			
			// tooltip informatie
			info	: {
				title				: 'Informatie:',
				how_to				: 'Vul hier uw eigen telefoonnummer in en klik op de "BEL MIJ" knop. U wordt dan direct door ons gebeld.',
				busy				: 'Maakt u gebruik van een inbellijn? Klik dan op de opnieuw-knop en verbreek daarna direct uw internet-connectie',
				no_answer			: 'Er wordt niet opgenomen op het door u ingevoerde nummer. Controleer het nummer aub.',
				error				: 'Heeft u het juiste nummer ingevuld?'
			}
		}
	};
	
	// settings met de defaults samen voegen
	var o = jQuery.extend(defaults, settings);	
	
			
	// als er geen reg_id mee is gegeven dit melden
	if(!o.reg_id)
	{
		alert('CallMeNow: reg_id is null');
		return;
	}
	
	
	// container verbergen zolang de service nog niet gereageerd heeft
	document.getElementById( o.container ).style.visibility = 'hidden';
	
	
	/**
	 * CMN_USER_INIT
	 * init functie van de API
	 * @param	object	inst
	 */
	window.CMN_USER_INIT = function(inst)
	{
		// instatie van cmn applicatie opslaan
		cmn_inst = inst;
		
		// state handler registeren
		inst.RegisterStateChangedHandler(me.onStateChange);
		
		
		// wanneer de service niet beschikbaar is, het element legen en de tekst weergeven
		if(!inst.isInService())
		{
			document.getElementById( o.container ).innerHTML = o.text.unavailable;
		}
		
		// service is beschikbaar
		else
		{
			// info (tooltip) afbeelding (in #CMN_Info)
			inst.set_imageInfo(o.images.location + o.images.info);
			inst.set_imageInfoBlinking(o.images.location + o.images.info_update);
		
			// info (tooltip) tekst (in #CMN_InfoContainer)
			inst.set_msgInfoYourNumber(o.text.info.how_to);	// #CMN_InfoText
			inst.set_msgInfoBBusy(o.text.info.busy);
			inst.set_msgInfoBNoAnswer(o.text.info.no_answer);
			inst.set_msgInfoError(o.text.info.error);
			
			inst.set_msgInfoTitleText(o.text.info.title);	// #CMN_InfoHeader
		
			// status afbeeldingen (in #CMN_Images)
			inst.set_imageIdle(o.images.location + o.images.status.idle);
			inst.set_imageError(o.images.location + o.images.status.error);
			
			inst.set_imageCallingA(o.images.location + o.images.status.a.calling);
			inst.set_imageCallingB(o.images.location + o.images.status.b.calling);
			
			inst.set_imageABusy(o.images.location + o.images.status.a.busy);
			inst.set_imageBBusy(o.images.location + o.images.status.b.busy);
			//inst.set_imageANoAnswer(o.images.location + o.images.status.a.no_answer);
			inst.set_imageBNoAnswer(o.images.location + o.images.status.b.no_answer);
			
			inst.set_imageABConnected(o.images.location + o.images.status.connected);
			inst.set_imageABDisConnected(o.images.location + o.images.status.disconnected);
	
	
			// status meldingen (in #CMN_MessageArea)
			inst.set_msgValNoNumber(o.text.status.no_number);
			inst.set_msgValInvalidNumber(o.text.status.invalid_number);
			inst.set_msgValNoServiceNumber(o.text.status.no_service_number);
			inst.set_msgValNo06Number(o.text.status.no_06_number)
			
			inst.set_msgCallingA(o.text.status.a.calling);
			inst.set_msgCallingB(o.text.status.b.calling);
			inst.set_msgABusy(o.text.status.a.busy);
			inst.set_msgBBusy(o.text.status.b.busy);
			inst.set_msgANoAnswer(o.text.status.a.no_answer);
			inst.set_msgBNoAnswer(o.text.status.b.no_answer);
			
			inst.set_msgABConnected(o.text.status.connected);
			inst.set_msgABDisConnected(o.text.status.disconnected);
			inst.set_msgError(o.text.status.error);
		}
		
		// container weergeven
		document.getElementById( o.container ).style.visibility = 'visible';
	};
	
	// javascript includen
	document.write(unescape("%3Cscript src='"+ "http://projects.solition.nl/CallMeNow/FrontEnd/CallMeNow/CMN_RequestHandler.ashx?API=1&CMN_RegId="+ o.reg_id +"' type='text/javascript'%3E%3C/script%3E"));
	
	
	/**
	 * getInfoText
	 * info tekst ophalen
	 *
	 * @return	string	text
	 */
	this.getInfoText = function()
	{
		return cmn_inst.get_msgInfoText();
	};
	
	
	/**
	 * isInService
	 * of de cmn applicatie beschikbaar is volgens de openingstijden
	 *
	 * @return	bool	open
	 */
	this.isInService = function()
	{
		return cmn_inst.isInService();
	};
	
	
	/**
	 * onStateChange
	 * wanneer de status van de applicatie veranderd wordt deze functie aangeroepen
	 * de waardes van de state string zijn te vergelijken met de waardes uit het object CMNSTATE
	 * zie de API documentatie voor meer informatie over dit punt
	 *
	 * @param	string	state
	 */
	this.onStateChange = function(state) { };
}
