/**
*
* Support klassen, håndterer beskeder mellem klienterne,
* samt UI funktioner for support vinduet
*
**/


function Support(){

	this.ePlaceholder	= document.getElementById('supportPlaceholder');
	this.eContainer		= document.getElementById('supportContainer');
	this.eSkygge		= document.getElementById('supportSkygge');
	this.eOverskrift	= document.getElementById('supportOverskrift');
	this.eLuk			= document.getElementById('supportLuk');
	this.eSvar			= document.getElementById('supportSvar');		//modtagne beskeder
	this.eInput			= document.getElementById('supportInput');		//boks til at skrive i
	this.eSend			= document.getElementById('supportSend');		//send beskedknap
	this.eSmiley		= document.getElementById('supportSmiley');		//smiley knap
	this.eSmileyPicker	= document.getElementById('supportSmileyPicker');		//Smileypicker
	this.eSmileypickerLuk	= document.getElementById('supportSmileyPickerLuk');		//Smileypicker
	this.eVisKnap		= document.getElementById('supportButton');		//span elementet der holder sendd knappen
	this.eVisLoader		= document.getElementById('supportLoader');		//span elementet der holder load billedet
	this.eStatusOk		= document.getElementById('supportStatusOk');
	this.eStatusFejl	= document.getElementById('supportStatusFejl');

	this.udfoldningsGrad 		= 1; // 1 - foldet ind, 2 - foldet halvt ud, 3 - foldet helt ud
	this.supTimeout				= false;
	this.modtagetFoersteBesked 	= false;
	this.historikLaengde		= 4;
	this.infoBesked 			= supportInfo;
	this.UID					= false;

	//indsætter infobeskeden i input boksen
	this.eInput.value 	= this.infoBesked;

	/* Indsætter eventhandler funktioner på support vinduet */
	window.onresize 	= function (){clearTimeout(support.supTimeout); support.supTimeout = setTimeout("support.tilPlaceholder();",100);}
	this.eLuk.onclick				= new Function ('support.foldind();');
	this.eSmileypickerLuk.onclick 	= new Function ('support.skjulSmileyPicker();');

	this.eInput.onfocus				= new Function ('if (this.value == "'+this.infoBesked+'") this.value="";');
	this.eInput.onblur				= new Function ('if (this.value == "") this.value="'+this.infoBesked+'";');
	this.eInput.onkeyup				= new Function ('support.indtastning();');

	this.eSend.onclick				= new Function ('support.sendBesked();');
	this.eSmiley.onclick			= new Function ('support.visSmileyPicker();');

	/* Done job*/

	this.foldud 		= function (grad){

		if (grad == 2) {
			this.eContainer.className	='supportContainer supportContainerMellem';
			this.eInput.className		='supportInput supportInputMellem';
			this.eSvar.className		='supportSvar';
			this.eSkygge.className		='supportSkygge supportSkyggeMellem';
			this.eLuk.style.display		= '';
			this.eSmiley.style.display	= '';
			this.eSmileyPicker.style.display	= '';
			this.udfoldningsGrad 		= grad;
		}


		if (grad == 3) {
			this.eContainer.className	='supportContainer supportContainerStor';
			this.eSvar.className		='supportSvarStor';
			this.eInput.className		='supportInputStor';
			this.eSkygge.className		='supportSkyggeStor';
			this.eLuk.style.display		= '';
			this.eSmiley.style.display	= '';
			this.eSmileyPicker.style.display	= '';
			this.udfoldningsGrad 		= grad;

			window.scroll(0,150);
		}
	}
	this.foldind		= function (){
		this.eInput.value = this.infoBesked;
		this.eContainer.className	='supportContainer';
		this.eInput.className		='supportInput';
		this.eSvar.className		='supportSvar';
		this.eLuk.style.display		= 'none';
		this.eSmiley.style.display	= 'none';
		this.eSmileyPicker.style.display	= 'none';
		this.eSkygge.className		='supportSkygge';
		this.udfoldningsGrad 		= 1;
	}

	this.visSmileyPicker	= function (){
		var temp = findPos(this.eSmiley);
		this.eSmileyPicker.style.display	= 'block';
		this.eSmileyPicker.style.top  = (this.eContainer.offsetHeight/2 - this.eSmileyPicker.offsetHeight/2)+'px';
		this.eSmileyPicker.style.left = (this.eContainer.offsetWidth/2 	- this.eSmileyPicker.offsetWidth/2)+'px';



	}

	this.skjulSmileyPicker	= function (){
		this.eSmileyPicker.style.display	= 'none';
	}

	this.pickSmiley 	= function (value){
		this.eInput.value	+= value;
		this.skjulSmileyPicker();
	}

	this.sendBesked		= function (){
		this.statusFejl(' ');
		this.statusOk(' ');

		if (this.eInput.value == '' || this.eInput.value == this.infoBesked){
			this.statusFejl(supportFejlIndtastBesked);
			return false;
			}

		this.toggleKnap();
		xajax_opretSupportBesked(Customer_ID?Customer_ID:0,this.getUID(), this.eInput.value,0,1);

		if (this.modtagetFoersteBesked == false) { // denne besked er den første, derfor skal der hentes historik
			this.hentHistorik();
			this.modtagetFoersteBesked = true;

		}else {
			this.tilfoejHistorik(this.eInput.value,0);
		}

		this.eInput.value = '';
		setTimeout('xajax_pingback()',5000);
	}

	this.toggleKnap		= function (){
		if (this.eVisKnap.style.display == 'none') {
			this.eVisKnap.style.display = '';
			this.eVisLoader.style.display = 'none';
		}else{
			this.eVisKnap.style.display = 'none';
			this.eVisLoader.style.display = '';
		}
	}

	this.reset = function (){
		this.eInput.value = '';
		//this.foldind();
	}

	this.statusFejl	= function (besked){
		this.eStatusFejl.innerHTML = besked;
	}

	this.statusOk	= function (besked){
		this.eStatusOk.innerHTML = besked;
	}

	this.tilfoejHistorik	= function (besked, erAfsender){
		besked = besked.replace(/:\)/g, "<img src='gfx/smileys/happy.png' />")
		besked = besked.replace(/:\(/g, "<img src='gfx/smileys/sad.png' />")
		besked = besked.replace(/;\)/g, "<img src='gfx/smileys/wink.png' />")

		if (erAfsender)
			this.eSvar.innerHTML += '<span class="supportModtager" >'+supportAfsenderAdmin+' </span> <span class="supportBeskedModtaget">'+besked+'</span>\
									<div class="supportSpacer"></div>';
		else
			this.eSvar.innerHTML += '<span class="supportAfsender" >'+supportAfsenderKunde+' </span> <span class="supportBeskedAfsendt">'+besked+'</span>\
									<div class="supportSpacer"></div>';
		this.scrollTilBund();
	}

	this.hentHistorik	= function (){
		//hent seneste 4 beskeder incl den nyeste.
		xajax_hentHistorikTilSupport(Customer_ID,this.historikLaengde);
	}

	this.scrollTilBund = function () {
		this.eSvar.scrollTop = this.eSvar.scrollHeight;
	}


	this.modtagBesked	= function (besked){
		this.statusFejl(' ');
		this.statusOk(' ');
		if (this.modtagetFoersteBesked == false) { // denne besked er den første, derfor skal der hentes historik
			this.hentHistorik();
			this.modtagetFoersteBesked = true;
			return true;
		}
		this.tilfoejHistorik(besked,1);
		this.foldud(3);
	}
	this.indtastning	= function (){
		if (this.eInput.value.length > 10 && this.udfoldningsGrad == 1) {
			this.foldud(2);
		}
		else if (this.eInput.value.length == 0 && this.udfoldningsGrad == 2) {
			this.eContainer.className	='supportContainer';
			this.eInput.className		='supportInput';
			this.eSkygge.className		='supportSkygge';
			this.eLuk.style.display		= 'none';
			this.udfoldningsGrad 		= 1;
		}
	} // Der bliver tastet, og denne funktion kaldes ved hver


	/*
	Denne funktion skulle bare have været brugt til at finde ud af hvor boksen skulle placeres,
	men det ser ud somom jeg er blevet doven, og den nu bare er permanent ... skidt

	Ny ide - supportformen er skjult til den er placeret, og placeholder funktionen skal så placere og vise formen
	*/
	this.tilPlaceholder = function (){
		var pos 		= findPos(this.ePlaceholder);

		this.eContainer.style.top	= pos[1]+'px';
		this.eContainer.style.left	= pos[0]+2+'px';
		this.eSkygge.style.top		= pos[1]-10+'px';
		this.eSkygge.style.left		= pos[0]+'px';
		this.eContainer.style.display = '';
		//setTimeout('support.tilPlaceholder()',500);
	}

	this.genererUID	= function (){
		var today	= new Date();

		var hour	= today.getHours();
		var min		= today.getMinutes();
		var second	= today.getSeconds();
		var day		= today.getDay();
		var month	= today.getMonth();
		var year	= today.getFullYear();

		this.UID = day+''+month+''+year+''+hour+''+min+''+second+''+(Customer_ID?Customer_ID:0); // det skulle gerne være UID
		setCookie('UID_',this.UID,365);
		return this.UID;
	}

	this.getUID	= function (){
		if (this.UID)
			return this.UID;

		if (getCookie('UID_')){
			this.UID = getCookie('UID_');
			return this.UID;
		}

		return this.genererUID();

	}
}


/**
* Funktioner lånt fra w3
**/

function setCookie(c_name,value,expiredays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate()+expiredays);
document.cookie=c_name+ "=" +escape(value)+
((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}

function getCookie(c_name)
{
if (document.cookie.length>0)
  {
  c_start=document.cookie.indexOf(c_name + "=");
  if (c_start!=-1)
    {
    c_start=c_start + c_name.length+1;
    c_end=document.cookie.indexOf(";",c_start);
    if (c_end==-1) c_end=document.cookie.length;
    return unescape(document.cookie.substring(c_start,c_end));
    }
  }
return "";
}
