// AJAX Objects
var xmlHttp_Prev;
var xmlHttp_Skill;

// Returns an XmlHTTP object
function GetXmlHttpObject()
{
    var xmlHttp=null;
    try
    {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    }
    catch (e)
    {
        // Internet Explorer
        try
        {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (e)
        {
            xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    return xmlHttp;
}

// Loads the skill selector
function loadSkillSelector(attr,type)
{
	
	var f = document.build;
    
    xmlHttp_Skill=GetXmlHttpObject();
    if (xmlHttp_Skill==null)
    {
        alert ("Votre navigateur ne supporte pas AJAX!\nEssayez avec un vrai navigateur...");
        return;
    } 
    
    if(attr==null)
    {
        attr='';
    }
    if(type==null)
    {
        type='';
    }
    
    var url='side.php?prof1='+f.prof1.value+'&prof2='+f.prof2.value+'&attr='+attr+'&type='+type;
    
    xmlHttp_Skill.onreadystatechange=returnSkillSelector;
    xmlHttp_Skill.open("GET",url,true);
    xmlHttp_Skill.send(null);
}

// Refreshes the skill selector
function returnSkillSelector() 
{ 
    if (xmlHttp_Skill.readyState==4)
    { 
        document.getElementById("skill_selector").innerHTML=xmlHttp_Skill.responseText;
    }
}

// Loads the preview
function loadPreview()
{
    var f = document.build;
    
    xmlHttp_Prev=GetXmlHttpObject();
    if (xmlHttp_Prev==null)
    {
        alert ("Votre navigateur ne supporte pas AJAX!");
        return;
    } 
    
    var url='preview.php?text='+encodeURIComponent(buildCode());
    
    xmlHttp_Prev.onreadystatechange=returnPreview;
    xmlHttp_Prev.open("GET",url,true);
    xmlHttp_Prev.send(null);
}

function buildCode()
{
    var f = document.build;
    
    var skill_text='';
    var attr_text='';
    
    var ret;
    
    for(i=0;i<8;i++)
	{
	    // Create skill code
		var skill_box = eval('f.slot'+i);
		
		if(trim(skill_box.value).length>0)
		{
			skill_text += '['+trim(skill_box.value)+']';
		}
		
		// Create attribute
		var a = eval('f.attr'+i);
		var attr_name=a.value;
		
	    a = eval('f.attr_val'+i);
	    var attr_val = new String(a.value);
	    
	    a = eval('f.attr_bonus'+i);
	    
	    var aL = a.length;
	    
        for(var j=0; j<aL; j++) 
        {
            if(a[j].checked) 
		    {
		        if(a[j].value==0)
		        {
		            break;
		        }
		        else
		        {
		            attr_val += '+'+a[j].value;
		        }
		    }
		}
	    
	    a = eval('f.attr_arm'+i);
	    
	    if(a.checked)
	    {
	        attr_val += '+1';
	    }
		
		if(attr_val!='0' && attr_name.length>0)
		{
		    attr_text += attr_name+'='+attr_val+' ';
		}
		
    }
    
    var name = trim(f.buildname.value);
    var desc = trim(f.desc.value);
    var id = name+"_"+( new String ( (new Date()).getTime()));
    
    while(desc.indexOf("\n")>=0)
    {
        desc = desc.replace("\n",'{br}');
    }
    
    var prof = '';
    if(f.prof1.value!='')
	{
		prof += 'prof='+f.prof1.value;
		if(f.prof2.value!='')
		{
			prof += '/'+f.prof2.value;
		}
		prof += ' ';
	}
    
    ret = '[build ';
    if(!f.nosave.checked)
    {
        ret += 'nosave ';
    }
    if(f.pickup.checked)
    {
        ret += 'pickup="'+id+'" ';
    }
    if(name.length>0)
    {
        ret += 'name="'+name+'" ';
    }
    if(desc.length>0)
    {
        ret += 'desc="'+desc+'" ';
    }
    if(prof.length>0)
    {
        ret += prof;
    }
    
    ret += trim(attr_text)+']'+skill_text+'[/build]';
    
    if(f.tested.checked)
    {
        ret += 'Testé par : [pickup="test_'+id+'"]';
    }
    return ret;
}

// Refreshes the preview
function returnPreview() 
{ 
    if (xmlHttp_Prev.readyState==4)
    { 
        document.getElementById("preview_window").innerHTML=xmlHttp_Prev.responseText;
    }
}

// Add a skill to the next free textbox
function addSkill(skilltext)
{
	var f = document.build;
	var skilltext2 = skilltext;
	var freeTextBox = null;
	
	while(skilltext2.indexOf('%')>0)
	{
		skilltext2 = skilltext2.replace('%','"');
	}
	
	for(i=0;i<8;i++)
	{
		var s = eval('f.slot'+i);
		
		if(s.value.length==0)
		{
			freeTextBox = s;
			break;
		}
	}
	
	if(freeTextBox==null)
	{
		window.alert('Plus de place dans le build');
		return;
	}
	
	for(i=0;i<8;i++)
	{
		var s = eval('f.slot'+i);
		
		if(s.value==skilltext)
		{
			if(!window.confirm('Cette compétence est déjà présente.\nEtes-vous sûr de la vouloir deux fois ?'))
			{
				return;
			}
		}
	}
	
	freeTextBox.value = unescape(skilltext2);
}

// Clear a skill
function clearSkill(index)
{
	if(index<0 || index>7)
	{
		return;
	}
	
	var f = document.build;
	var s = eval('f.slot'+index);
	
	s.value = '';
}

// Clear all skills
function clearAllSkills()
{
    for(i=0;i<8;i++)
	{
	    clearSkill(i);
	}
}

function copyToClipboard(text) 
{
    if(window.clipboardData) 
    {
       window.clipboardData.setData("Text",text);
       alert("Texte copié dans le presse-papier");
    }
    else
    {
        alert("Copie impossible!\nFirefox ne donne pas accès au presse-papier.");
    }
}

// Trims a string
function trim(str) 
{
    while (str.substring(0,1) == ' ')
    {
        str = str.substring(1, str.length);
    }
    while (str.substring(str.length-1, str.length) == ' ')
    {
        str = str.substring(0,str.length-1);
    }
    return str;
}
