function createRequestObject()
{
	var request_o;
	var browser = navigator.appName;
	if(browser == "Microsoft Internet Explorer")
	{
		request_o = new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
	{
		request_o = new XMLHttpRequest();
	}
	return request_o;
}
var http = createRequestObject();
function handleFetchedContactResponse()
{
	if(http.readyState == 4)
    {
        tmp = http.responseText;        
		if(tmp!='')
		{	
//			document.getElementById('showprocess').style.display = "none";					
			if (tmp.indexOf('err:::')==0)
			{
				document.getElementById('contactlist').innerHTML = '';
	    		document.getElementById('contactlist').style.display = "none"; 	    		
	    						
				tmp=tmp.replace(/err:::/g,'');
				document.getElementById('errmsg').innerHTML = tmp;
	    		document.getElementById('errmsg').style.display = "block";	
	    		
	    		document.getElementById('fetch').innerHTML = "<input type='button' value='Fetch' onClick='javascript: fetch();'  tabindex='4' />";
			}
			else
			{
				document.getElementById('email').readonly=false;
				document.getElementById('password').readonly=true;
				
				document.getElementById('fetchcontact').style.display = 'none';
				
				document.getElementById('contactlist').innerHTML = tmp;
	    		document.getElementById('contactlist').style.display = "block"; 
			}
		}	
    }
}
function fetchContacts(fetchurl,imgurl)
{
	//document.getElementById('fetch').innerHTML = "<img src='"+imgurl+"'>";
	//document.getElementById('showprocess').style.display = "block";
	//show_progressbar('contactlist',imgurl);
	http.open('get',fetchurl);
    http.onreadystatechange = handleFetchedContactResponse;
    http.send(null);
}

function handleSaveResponse()
{	
	if(http.readyState == 4)
    {
        tmp = http.responseText;        
		if(tmp!='')
		{			
			if (tmp.indexOf('err:::')==0)
			{
				/*document.getElementById('contactlist').innerHTML = '';
	    		document.getElementById('contactlist').style.display = "none";*/ 	    		
	    						
				tmp=tmp.replace(/err:::/g,'');
				document.getElementById('errmsg').innerHTML = tmp;
	    		document.getElementById('errmsg').style.display = "block";
			}
			else
			{	
				YtTools.start();
				document.getElementById('contactlist').innerHTML = '';
	    		document.getElementById('contactlist').style.display = "none";

	    		document.getElementById('successmsg').innerHTML = tmp;
	    		document.getElementById('successmsg').style.display = "block";
	    		 
	    		document.getElementById('footer').style.display = "none";
	    		document.getElementById('importcsv').style.display = "none";
	    		document.getElementById('importfromemail').style.display = "none";
	    		document.getElementById('fromcsv').style.display = "none";
			}	
		}	
    }
}
/*function saveContacts(saveurl)
{
	http.open('get',saveurl);
    http.onreadystatechange = handleSaveResponse;
    http.send(null);
}
*/
function saveContacts(saveurl,params,imgurl)
{	
	http.open("POST", saveurl, true);
	
	//Send the proper header information along with the request
	http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	http.setRequestHeader("Content-length", params.length);
	http.setRequestHeader("Connection", "close");
	
	http.onreadystatechange = function() {//Call a function when the state changes.
		if(http.readyState == 4 && http.status == 200) {
//			alert(http.responseText);
			var tmp;
			tmp = http.responseText;
			if (tmp.indexOf('err:::')==0)
			{
				tmp=tmp.replace(/err:::/g,'');
				document.getElementById('errmsg').innerHTML = tmp;
	    		document.getElementById('errmsg').style.display = "block";
			}
			else
			{	
				YtTools.start();
				document.getElementById('contactlist').innerHTML = '';
	    		document.getElementById('contactlist').style.display = "none";

	    		document.getElementById('successmsg').innerHTML = tmp;
	    		document.getElementById('successmsg').style.display = "block";
	    		 
	    		document.getElementById('footer').style.display = "none";
	    		document.getElementById('importcsv').style.display = "none";
	    		document.getElementById('importfromemail').style.display = "none";
	    		document.getElementById('fromcsv').style.display = "none";
			}
		}
	}
	http.send(params);
}

/**
for displaying progressbar
**/

function replace_html(id, content) {
	document.getElementById(id).innerHTML = content;
	document.getElementById(id).style.display = "block";
}

function show_progressbar(id,imgurl) {
	replace_html(id, '<img src='+imgurl+' border="0" alt="Loading, please wait..." />');
}

/**
toggle div
**/
function toggleDiv()
{	
	document.getElementById('errmsg').innerHTML = '';
	document.getElementById('errmsg').style.display = "none";

	document.getElementById('contactlist').innerHTML = '';
	document.getElementById('contactlist').style.display = 'none';
	document.getElementById('fetch').innerHTML = "<input type='button' value='Fetch' onClick='javascript: fetch();'  tabindex='4' />";
	
	if(document.getElementById('importcsv').style.display == 'none' || document.getElementById('importcsv').style.display == '')
	{
		document.getElementById('fetchcontact').style.display = 'none';
		document.getElementById('importcsv').style.display = 'block';
		document.getElementById('importbox').style.display = 'block';
		document.getElementById('importfromemail').style.display = 'block';
		document.getElementById('fromcsv').style.display = 'none';
	}
	else
	{
		document.getElementById('fetchcontact').style.display = 'block';
		document.getElementById('importcsv').style.display = 'none';
		document.getElementById('importbox').style.display = 'none';
		document.getElementById('importfromemail').style.display = 'none';
		document.getElementById('fromcsv').style.display = 'block';
	}
}

/**
For multiple checkbox selection
**/
function toggleAll(cb) 
{
    var val = cb.checked;
	var frm = document.frmmain;
	var len = frm.elements.length;
	var i=0;
	for( i=0 ; i<len ; i++) {
		if (frm.elements[i].name=='emails[]') {
			frm.elements[i].checked=val;
		}
	}
}

function validateEmail(email) 
{
	var at="@";
	var dot=".";
	var lat=email.indexOf(at);
	var lemail=email.length;
	var ldot=email.indexOf(dot);
	if (email.indexOf(at)==-1){
		alert("Please enter valid email address");
		return false;
	}
	
	if (email.indexOf(at)==-1 || email.indexOf(at)==0 || email.indexOf(at)==lemail){
		alert("Please enter valid email address");
		return false;
	}
	
	if (email.indexOf(dot)==-1 || email.indexOf(dot)==0 || email.indexOf(dot)==lemail){
		alert("Please enter valid email address");
		return false;
	}
	
	if (email.indexOf(at,(lat+1))!=-1){
		alert("Please enter valid email address");
		return false;
	}
	
	if (email.substring(lat-1,lat)==dot || email.substring(lat+1,lat+2)==dot){
		alert("Please enter valid email address");
		return false;
	}
	
	if (email.indexOf(dot,(lat+2))==-1){
		alert("Please enter valid email address");
		return false;
	}
	
	if (email.indexOf(" ")!=-1){
		alert("Please enter valid email address");
		return false;
	}
	return true;
}

/**
For Displaying domainlist support
**/
function showDomainList(showhide)
{
	if (showhide==true)
	{
		document.getElementById('domainlist').style.display="block";		
	}
	else if (showhide==false)
	{
		document.getElementById('domainlist').style.display="none";
	}
}

/*
base64 encode decode function
*/
var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

function encode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   do {
      chr1 = input.charCodeAt(i++);
      chr2 = input.charCodeAt(i++);
      chr3 = input.charCodeAt(i++);

      enc1 = chr1 >> 2;
      enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
      enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
      enc4 = chr3 & 63;

      if (isNaN(chr2)) {
         enc3 = enc4 = 64;
      } else if (isNaN(chr3)) {
         enc4 = 64;
      }

      output = output + keyStr.charAt(enc1) + keyStr.charAt(enc2) + 
         keyStr.charAt(enc3) + keyStr.charAt(enc4);
   } while (i < input.length);
   
   return output;
}

function decode64(input) {
   var output = "";
   var chr1, chr2, chr3;
   var enc1, enc2, enc3, enc4;
   var i = 0;

   // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
   input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");

   do {
      enc1 = keyStr.indexOf(input.charAt(i++));
      enc2 = keyStr.indexOf(input.charAt(i++));
      enc3 = keyStr.indexOf(input.charAt(i++));
      enc4 = keyStr.indexOf(input.charAt(i++));

      chr1 = (enc1 << 2) | (enc2 >> 4);
      chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
      chr3 = ((enc3 & 3) << 6) | enc4;

      output = output + String.fromCharCode(chr1);

      if (enc3 != 64) {
         output = output + String.fromCharCode(chr2);
      }
      if (enc4 != 64) {
         output = output + String.fromCharCode(chr3);
      }
   } while (i < input.length);

   return output;
}