﻿// Initialize version 1.0 of Google AJAX API
google.load("language", "1");

function translate(lang)
{   var source = document.getElementById("MathText").innerHTML;
    var source_array = [];
    if (source.indexOf("<br><br><br>")>-1)
    {   source = source.replace("<span id=\"LabelAnswer\"><font class=\"stepText\">","");
        source = source.replace("</font></span>","");
        source_array = source.split("<br><br><br>");
    }
    else
    {   source = source.replace("<SPAN id=LabelAnswer><FONT class=stepText>","");
        source = source.replace("</FONT></SPAN>","");
        source_array = source.split("<BR><BR><BR>");
    }
    document.getElementById("MathTranslate").innerHTML = "";
    translate_lines(source_array,lang,0);  
    document.getElementById("MathText").style.display = 'none';
    document.getElementById("MathTranslate").style.display= 'block';
    //translate title    
//    source = document.getElementById("MathHead").innerHTML;
//    document.getElementById("MathHeadTranslate").innerHTML = "";
//    google.language.translate(source,"en",lang,function(result){if(!result.error){document.getElementById("MathHeadTranslate").innerHTML = result.translation;}});    
    //---------------------------------------
    return false;
}

function translate_lines(line_array,la,i)
{   //---------------------------------------
    if (line_array[i].length>1000) //break down explanation into smaller strings for translation
    {   var did_split = false;
        if (line_array[i].indexOf("FOIL") > -1) //FOIL explanation, ex: (y+2)(y+2)
        {   line_array[i] = line_array[i].replace("First,","<BR><BR><BR>First,");
            did_split = true;
        }
        else if (line_array[i].indexOf("In this case,") > -1) //sqrt(15/(c)), simplify
        {   line_array[i] = line_array[i].replace("In this case,","<BR><BR><BR>In this case,");
            did_split = true;
        }
        if (did_split == true)
        {   var too_big_array = line_array[i].split("<BR><BR><BR>");
            line_array[i] = too_big_array[0];
            line_array.splice(i+1,0,too_big_array[1]); //split explanation and add element into array       
        }
    }
    //---------------------------------------
    var tmp_array = [];
    var tmp_count = 0;
    for (j=0;j<line_array[i].length;j++)
    {   if (line_array[i].substring(j,j+4) == "<IMG" || line_array[i].substring(j,j+4) == "<img")
        {   var pos = line_array[i].indexOf(">",j);
            if (pos > j)
            {   tmp_array[tmp_count] = line_array[i].substring(j,pos+1);
                tmp_count = tmp_count + 1;
                line_array[i] = line_array[i].substring(0, j) + "Mathway" + line_array[i].substring(pos+1);
            }
        }
    }
    //---------------------------------------
    var problem_chars = "0123456789+";
    var build_str = "";
    var start_cursor = 0;
    var tmp_array2 = [];
    var tmp_count2 = 0;
    var m = 0;
    do
        {   var get_char = line_array[i].substring(m,m+1);
            //alert("get_char: " + get_char + " ... build_str: " + build_str);
            if (get_char == "<" || get_char == " ")
            {   //alert("get_char: " + get_char + " ... build_str: " + build_str + " ... start_cursor: " + start_cursor + " ... line_array[i]: " + line_array[i] + " ... m: " + m);                
                if (build_str != "")
                {   //alert("get_char: " + get_char + " ... build_str: " + build_str + " ... previous char: " + line_array[i].substring(m-2,m-1));
                    for (k=0;k<build_str.length;k++)
                    {   if ( (problem_chars.indexOf(build_str.substring(k,k+1))>-1) || 
                             (build_str.length == 1 && build_str != "a") || 
                             (build_str == "a" && get_char == "<" && line_array[i].substring(m-2,m-1) == ">") || 
                             (build_str.length == 2 && build_str.substring(0,1) == "-") )
                        {   //alert(build_str + " is a problem");                            
                            tmp_array2[tmp_count2] = build_str;
                            tmp_count2 = tmp_count2 + 1;
                            line_array[i] = line_array[i].substring(0, start_cursor) + "Bagatrix" + line_array[i].substring(m);
                            m = start_cursor + 7;                            
                            //alert("m changed to: " + m  + " ... line_array[i] changed to: " + line_array[i]);
                            break;
                        }
                    }
                }            
                build_str = "";                
                if (get_char == "<")
                {   m = line_array[i].indexOf(">",m);
                    //alert("m moved to: " + m + " ... line_array[i]: " + line_array[i]);                    
                }
                start_cursor = m+1;
            }
            else
            {   build_str = build_str + get_char;
            }
            m = m+1;
        }
    while (m < line_array[i].length);        
    //alert("DONE LOOP: " + line_array[i]);
    //---------------------------------------
    google.language.translate(line_array[i],"en",la,
        function(result)
        {   if(!result.error)
            {   var build_result = result.translation;
                for (j=0;j<tmp_array.length;j++)
                {   build_result = build_result.replace("Mathway",tmp_array[j]);
                }
                for (k=0;k<tmp_array2.length;k++)
                {   build_result = build_result.replace("Bagatrix",tmp_array2[k]);
                }            
                document.getElementById("MathTranslate").innerHTML = '<FONT class=stepText>' + document.getElementById("MathTranslate").innerHTML + build_result + '</FONT><BR><BR><BR>';
                if (i<line_array.length-1)
                {   i=i+1;
                    translate_lines(line_array,la,i);
                }                
                else
                {   // remove last <BR><BR><BR>
                    document.getElementById("MathTranslate").innerHTML = document.getElementById("MathTranslate").innerHTML.substring(0, document.getElementById("MathTranslate").innerHTML.length - 12);
                }
            }
        });
}

function original()
{   document.getElementById("MathTranslate").style.display='none';
    document.getElementById("MathText").style.display = 'block';
    return false;
}

