/**
 * Ovveride document get element by id if ie
 */

if (/msie/i.test (navigator.userAgent)) //only override IE
{
	document.nativeGetElementById = document.getElementById;
	document.getElementById = function(id)
	{
		var elem = document.nativeGetElementById(id);
		if(elem)
		{
			//make sure that it is a valid match on id
			if(elem.id == id)
			{
				return elem;
			}
			else
			{
				//otherwise find the correct element
				for(var i=1;i<document.all[id].length;i++)
				{
					if(document.all[id][i].id == id)
					{
						return document.all[id][i];
					}
				}
			}
		}
		return null;
	};
}


/**
 * This script adds username and password to self submit form for group addressbook pw modification 
 */

    function getAdminPw_col(group)
    {
        if (confirm("Modificare il colore per il gruppo " + group + "? L'operazione non e' reversibile.", "")) {
        formObjuser = document.groupsmod[group + "-user"];
        formObjpw = document.groupsmod[group + "-pw"];
        formObjcol = document.groupsmod[group + "-color"];

        var setuser = prompt("Inserire il nome utente dell'amministratore per modificare il colore del gruppo " + group + ":", "");
        if (setuser) { var setpw = prompt("Inserire la password dell'amministratore:", ""); } else { alert("Operazione annullata!"); return; }
        if (setpw)   { 
 	formObjuser.value = setuser;
        formObjpw.value = setpw;
	document.groupsmod.mode.value = "modcol";
        document.groupsmod.group.value = group;
	startColorPicker_1(group);
	var inputBox = document.getElementById('closePicker');
// Event listener with compatibility check
if( inputBox.addEventListener ) {
inputBox.addEventListener("click", gsubmit_form, false);
} else if ( inputBox.attachEvent ) {
inputBox.attachEvent("onmousedown", gsubmit_form); } else { alert("Il vostro browser non supporta questa funzione!"); return; }
 } else { alert("Operazione annullata!");  return; }
} else  { alert("Operazione annullata!");  return; }
return;
}

function gsubmit_form(){
document.groupsmod.submit();
return;
}

    function getAdminPw_mod(group)
    {
        if (confirm("Modificare la passsword per il gruppo " + group + "? L'operazione non e' reversibile.", "")) {
        formObjuser = document.groupsmod[group + "-user"];
        formObjpw = document.groupsmod[group + "-pw"];
	formObjnewpw = document.groupsmod[group + "-newgrouppw"];

        var setuser = prompt("Inserire il nome utente dell'amministratore per modificare la password del gruppo " + group + ":", "");
	if (setuser) { var setpw = prompt("Inserire la password dell'amministratore:", ""); } else { alert("Operazione annullata!"); return; }
	if (setpw)   { var setgrouppw = prompt("Inserire la nuova password per il gruppo " + group + ":", ""); } else { alert("Operazione annullata!");  return; }
	if (setgrouppw) {
        formObjuser.value = setuser;
        formObjpw.value = setpw;
	formObjnewpw.value = setgrouppw;
        document.groupsmod.mode.value = "modpw";
        document.groupsmod.group.value = group;
        document.groupsmod.submit(); } else {  alert("Operazione annullata!"); return; }
             } else {  alert("Operazione annullata!");  return;}
    }

/**
 * This script adds username and password to self submit form for group addressbook delete
 */
    function getAdminPw_del(group)
    {
	if (confirm("Sei sicuro di voler cancellare il gruppo " + group + "? L'operazione non e' reversibile e comporta la perdita di tutti i contatti presenti nella rubrica di questo gruppo.", "")) { 
        formObjuser = document.groupsmod[group + "-user"];
	formObjpw = document.groupsmod[group + "-pw"];
        var setuser = prompt("Inserire il nome utente dell'amministratore per eliminare il gruppo " + group, "");
        if (setuser) { var setpw = prompt("Inserire la password dell'amministratore", ""); } else { alert("Operazione annullata!");  return };
	if (setpw) {
        formObjuser.value = setuser;
	formObjpw.value = setpw;
	document.groupsmod.mode.value = "delgroup";
	document.groupsmod.group.value = group;
	document.groupsmod.submit(); return; } else {  alert("Operazione annullata!");  return; }
            } else { alert("Operazione annullata!"); return;}
    }

/**
 * This script adds password to self submit form for group addressbooks management
 */
    function validate_join(group,obj)
    {
	formObj = document.selfmod[group];
	if (formObj.value == "" && obj.checked == "1") {
	var setpw = prompt("Inserire la password per il gruppo " + group, "");
	if (setpw == "") { alert("Password vuota!",""); }
	formObj.value = setpw;
	    return false;
	} else if (formObj.value != "" && obj.checked == "0") {
	formObj.value = "";
} 

    }

/**
 * Request URL from remote web server
 */
function newRequest()
{
  req = false;
  // For Safari, Firefox, and other non-MS browsers
  if (window.XMLHttpRequest) {
    try {
      req = new XMLHttpRequest();
    } catch (e) {
      req = false;
    }
  } else if (window.ActiveXObject) {
    // For Internet Explorer on Windows
    try {
      req = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        req = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) {
        req = false;
      }
    }
  }
}


/**
 * Check if page has loaded 
 */

function pollStateChange()
{
var Fresponse;

  if (req.readyState != 4) {
    // We're not ready yet.
    return;
  }
  if (req.status == 200) {
var pos=req.responseText.substr(0,14);
Fresponse = "<div id=\"cbresponse\"><h3> Click to Dial </h3> <p> Callback agent says: " + req.responseText + "</p></div>";
d = document.getElementById("clickdialing");
if (pos!="Please wait...") {
d.style.background = "#fcc url(/rubritek/pix/ldaperror.png) 10px 10px no-repeat"; 
} else { d.style.background = "#fff8dc url(/rubritek/pix/imagebox/loading.gif) 10px 10px no-repeat";}
d.style.visibility = "visible";
d.innerHTML = Fresponse;
$('#clickdialing').click(function(){ document.getElementById("cbresponse").remove(); });

  } else { 

Fresponse = "<div id=\"cbresponse\"><h3> Click to Dial </h3> <p> Error: " + req.responseText + "</p></div>";
d = document.getElementById("clickdialing");
d.style.background = "#fcc url(/rubritek/pix/ldaperror.png) 10px 10px no-repeat";
d.style.visibility = "visible";
d.innerHTML = Fresponse;
$('#clickdialing').click(function(){ document.getElementById("cbresponse").remove(); });


}

  req = null;
}


/**
 *  Initialize callback
 */

function click2dial(tonumber,fromnumber)
{
hidemenu()
if (!req) {
if (fromnumber=="cu") {
var fromnumber = prompt("Where do you want your call today?", "");
}
newRequest();
req.open("GET", "makecb.php?tonumber=" + tonumber + "&fromnumber=" + fromnumber, true);
req.send(null);
req.onreadystatechange = pollStateChange;
} else {
alert("A click2dial request is pending!");
}

}


/**
 * Inplace tag editing
 */
function tagedit() {
    var txt  = document.createElement('textarea');
    txt.id   = 'tagedit_editor';
    txt.name = 'marker';
    txt.className = 'ipe';
    $(txt).load('ajax.php',{loadtags: 'plain', dn: DN});
    $(txt).Autocomplete({
        source: 'ajax.php',
        delay: 300,
        helperClass: 'autocompleter',
        selectClass: 'autocompleterSelect',
        inputWidth: true,
        minchars: 1,
        multiple: true,
        multipleSeperator: ','
    });

    var save       = new Image();
    save.src       = 'pix/accept.png';
    save.id        = 'tagedit_save';
    save.className = 'click';
    $(save).click(function(){
        $('#taglist').load('ajax.php',{settags: $('#tagedit_editor').val(), dn: DN});
        $('#tagedit_save').remove();
        $('#tagedit_cancel').remove();
        $('#tagedit_start').show();
    });

    var canc       = new Image();
    canc.src       = 'pix/cancel.png';
    canc.id        = 'tagedit_cancel';
    canc.className = 'click';
    $(canc).click(function(){
        $('#taglist').load('ajax.php',{loadtags: 'html', dn: DN});
        $('#tagedit_save').remove();
        $('#tagedit_cancel').remove();
        $('#tagedit_start').show();
    });

    $('#tagedit_start').hide();
    $('#taglist').empty().prepend(txt);
    $('#tagedit').append(save);
    $('#tagedit').append(canc);
    $('#tagedit_editor').focus();
}

/**
 * Inplace note adding
 */
function noteedit(type){
    var txt  = document.createElement('textarea');
    txt.id   = 'noteedit_editor';
    txt.className = 'ipe';

    // prepare text
    var text = '';
    if(type=='call'){
        text += '**Call** ';
    }else if(type=='mail'){
        text += '**Mail** ';
    }else if(type=='todo'){
        text += '**Todo** ';
    }else if(type=='note'){
        text += '**Note** ';
    }
    var dt = new Date();
    text += '//'+dt.formatDate('j. M y H:i')+' '+USER+'//: ';
    $(txt).val(text);

    var save       = new Image();
    save.src       = 'pix/accept.png';
    save.id        = 'noteedit_save';
    save.className = 'click';
    $(save).click(function(){
        $('#notes').load('ajax.php',{addnote: $('#noteedit_editor').val(), dn: DN});
        $('#noteedit_editor').remove();
        $('#noteedit_save').remove();
        $('#noteedit_cancel').remove();
        $('#noteedit .ed').show()
    });

    var canc       = new Image();
    canc.src       = 'pix/cancel.png';
    canc.id        = 'noteedit_cancel';
    canc.className = 'click';
    $(canc).click(function(){
        $('#noteedit_editor').remove();
        $('#noteedit_save').remove();
        $('#noteedit_cancel').remove();
        $('#noteedit .ed').show();
    });

    $('#notes').prepend(txt);
    $('#noteedit .ed').hide();
    $('#noteedit').append(save);
    $('#noteedit').append(canc);
    $('#noteedit_editor').focus();
}


/**
 * Initialize everything when DOM is ready
 */
$(document).ready(function() {

// autocompletion
    $('#taglookup').Autocomplete({
        source: 'ajax.php',
        delay: 300,
        helperClass: 'autocompleter',
        selectClass: 'autocompleterSelect',
        inputWidth: true,
        minchars: 1
        //multiple: true,
        //multipleSeperator: ','
    });
    $('#tageditlookup').Autocomplete({
        source: 'ajax.php',
        delay: 300,
        helperClass: 'autocompleter',
        selectClass: 'autocompleterSelect',
        inputWidth: true,
        minchars: 1,
        multiple: true,
        multipleSeperator: ','
    });
    // autocompletion
    $('input.ac').Autocomplete({
        source: 'ajax.php',
        delay: 300,
        helperClass: 'autocompleter',
        selectClass: 'autocompleterSelect',
        inputWidth: true,
        minchars: 1
    });

    // nice images
    $.ImageBox.init({
        loaderSRC: 'pix/imagebox/loading.gif',
        closeHTML: '<img src="pix/imagebox/close.jpg" border="0" />'
    });

    // tag editing
    if($('#tagedit').length){
        var img       = new Image();
        img.src       = 'pix/tag_blue_edit.png';
        img.className = 'click';
        img.id        = 'tagedit_start';
        $('#tagedit').empty().after(img);
        $(img).click(tagedit);
    }

    // note editing
    if($('#noteedit').length){
        var img;

        img           = new Image();
        img.src       = 'pix/note.png';
        img.className = 'click ed';
        $(img).click(function(){noteedit('note');});
        $('#noteedit').append(img);

        img           = new Image();
        img.src       = 'pix/arrow_right.png';
        img.className = 'click ed';
        $(img).click(function(){noteedit('todo');});
        $('#noteedit').append(img);

        img           = new Image();
        img.src       = 'pix/email.png';
        img.className = 'click ed';
        $(img).click(function(){noteedit('mail');});
        $('#noteedit').append(img);

        img           = new Image();
        img.src       = 'pix/phone.png';
        img.className = 'click ed';
        $(img).click(function(){noteedit('call');});
        $('#noteedit').append(img);
    }


    // set focus
    if($('#searchfield').length) $('#searchfield').focus();
    if($('#firstfield').length) $('#firstfield').focus();


    // run google maps loader
    if($('#google_map').length){
        gmap_loader();
        $(document).unload(GUnload);
    }
});
