﻿function setFormVars(vars)
{
    
    var elementNotValid = null;
    for (var i = 0; i < vars.length; i++)
    {
        var name = vars[i][0];
        var value = Base64.decode(vars[i][1]);
        
        var elements = document.getElementsByName(name);
        var element = elements[0];

        if (vars[i].length == 3)
            elementNotValid = element;

        switch (element.tagName.toUpperCase())
        {
            case "INPUT":
                switch (element.type.toUpperCase())
                {
                    case "RADIO":
                        for (var j = 0; j < elements.length; j++)
                        {
                            var radiobutton = elements[j];
                            if (value == radiobutton.value)
                                radiobutton.checked = true;
                        }
                        break;
                    case "CHECKBOX":
                        element.checked = true;
                        break;
                    case "TEXT":
                        element.value = value;
                        break;

                }
                break;
            case "TEXTAREA":
                element.value = value;
                break;
            case "SELECT":
                for (var k = 0; k < element.options.length; k++)
                {
                    var option = element.options[k];
                    if (option.value == value)
                        option.selected = true;
                }
                break;

        }
    }
    if (elementNotValid != null)
    {       
        elementNotValid.focus();
    }


}

function setUrlPathCss(urlPath)
{

    var theRules = null;
	if (document.styleSheets[1].cssRules)
		theRules = document.styleSheets[1].cssRules
	else if (document.styleSheets[1].rules)
		theRules = document.styleSheets[1].rules


   
   if(theRules != null)
        for(var i in theRules)
        {
            
                if(theRules[i].style)          
                 if(theRules[i].style.background)           
                  theRules[i].style.background = theRules[i].style.background.replace(/UrlPath/g,urlPath);
          
        } 


}
function maskNumberTextBox(obj)
{
    //alert(event.keyCode);
    if(event.keyCode>=48 && event.keyCode<=57)
        event.returnValue=true;
    else
        event.returnValue=false;    
}
function maskDateTextBox(obj)
{
    var value = obj.value;
    if(obj.value.length<=2)
        obj.mod = 1;
    if(obj.value.length>3 && value.length<=5)
        obj.mod = 2;
    if(obj.value.length>6)
        obj.mod = 3;
        
        
    if(event.keyCode == 46 || event.keyCode == 44)
    {
        event.returnValue=false;
        if(obj.value.length==1)
        {
            obj.value = "0"+obj.value+".";
            return;
        }
        if(obj.value.length==2 )
        {
            obj.value = obj.value+".";
            return;
        }
        
        if(obj.value.length==4 )
        {
        
            obj.value = obj.value.charAt(0)+obj.value.charAt(1)+obj.value.charAt(2)+"0"+obj.value.charAt(3)+".";
            return;
        }
        if(obj.value.length==5 )
        {
            obj.value = obj.value+".";
            return;
        }
         
         
            
    }
    if(event.keyCode>=48 && event.keyCode<=57)
    {
        event.returnValue=true;
        if(obj.value.length==2 )
        {
            obj.value = obj.value+".";
            return;
        }
        if(obj.value.length==5 )
        {
            obj.value = obj.value+".";
            return;
        }
    }
    else
        event.returnValue=false;
    if(obj.value.length==10)    
        event.returnValue=false;
    
        
        
}
function searchKeyPress(event)
{
   
    if(event.keyCode == 13 || event.keyCode == 10)
        window.location = "/search/p-"+obj.value+".html";

}
function binb2hex(binarray)
{
    var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
    var str = "";
    for (var i = 0; i < binarray.length * 2; i++)
    {
        str += hex_tab.charAt() +
			hex_tab.charAt((binarray[i >> 2] >> ((3 - i % 4) * 8)) & 0xF);
    }
    return str;
}
function str2binb(str)
{
    var bin = Array();
    var mask = (1 << 8) - 1;
    for (var i = 0; i < str.length * 8; i += chrsz)
    {
        bin[i >> 5] |= (str.charCodeAt(i / 8) & mask) << (24 - i % 32);
    }
    return bin;
}
function hex2bytearray(hexString)
    {
       
        var bytearray = [];
        for (var i = 0, j=0; i < hexString.length;j++)
        {
            var high = hexString.charCodeAt(i); i++;
            var low = hexString.charCodeAt(i); i++;
            
            high = (high >= 48 && high <= 57) ? high - 48 : (high >= 65 && high <= 70) ? high - 65+10 : 0;
            low = (low >= 48 && low <= 57) ? low - 48 : (low >= 65 && low <= 70) ? low - 65+10 : 0;
        
            bytearray[j] = 16 * high + low;            
            
        }
        return bytearray;
    }
function strToHex(str)
{
    var strHex ="";
    for (var i = 0; i < str.length; i++)
    {
        var integer = str.charCodeAt(i);
        if (integer < 16) strHex += "0";
        strHex += (integer).toString(16).toUpperCase();
    }
    return strHex;
}
function GenerateHashString() {

   
    var objUserName = document.getElementById(APIControls.UserNameTextBox);
  
    var objPassword = document.getElementById(APIControls.PasswordTextBox);
    var objRandomString = document.getElementById(APIControls.RandomTextBox);
    var objGeneratedHash = document.getElementById(APIControls.GeneratedHashTextBox);
    
    var serverString = objPassword.value + objUserName.value;
    var serverToHash = strToHex(objRandomString.value) + SHA256(serverString, false);

      
    objGeneratedHash.value = Base64.encodeBinArray(hex2bytearray(SHA256(serverToHash, true)));
    objPassword.value = "";

}
function GenerateHashStringCustom(userNameId,passwordId,randId,generateId) {

    var objUserName = document.getElementById(userNameId);
    var objPassword = document.getElementById(passwordId);
    var objRandomString = document.getElementById(randId);
    var objGeneratedHash = document.getElementById(generateId);

    var serverString = objPassword.value + objUserName.value;
    var serverToHash = strToHex(objRandomString.value) + SHA256(serverString, false);


    objGeneratedHash.value = Base64.encodeBinArray(hex2bytearray(SHA256(serverToHash, true)));
    objPassword.value = "";

}

function tolgeSearch(img, filterDiv) {

    
    var searchDiv = document.getElementById(filterDiv);
    if (img.src.indexOf("plus") > 1) {
        img.src = img.src.replace("plus", "minus");
        searchDiv.style.display = "block";
    }
    else {


        searchDiv.style.display = "none";
        img.src = img.src.replace("minus", "plus");
    }
}
function setClass(obj, className) {
    obj.className = className;
}
function getNextInputId(obj)
{
    
    while (true)
    {
        obj = obj.nextSibling;        
        if (obj.type == "image")
            return obj.id;
    }

}
function enterSubmit(ev,obj)
{
    
    return WebForm_FireDefaultButton(ev, getNextInputId(obj));
}

function getMouseXY(e) // works on IE6,FF,Moz,Opera7
{
    if (!e) e = window.event; // works on IE, but not NS (we rely on NS passing us the event)
    var obj = new Object();
    if (e)
    {
        if (e.pageX || e.pageY)
        { // this doesn't work on IE6!! (works on FF,Moz,Opera7)
            obj.mousex = e.pageX;
            obj.mousey = e.pageY;
            
            
        }
        else if (e.clientX || e.clientY)
        { // works on IE6,FF,Moz,Opera7
            // Note: I am adding together both the "body" and "documentElement" scroll positions
            //       this lets me cover for the quirks that happen based on the "doctype" of the html page.
            //         (example: IE6 in compatibility mode or strict)
            //       Based on the different ways that IE,FF,Moz,Opera use these ScrollValues for body and documentElement
            //       it looks like they will fill EITHER ONE SCROLL VALUE OR THE OTHER, NOT BOTH 
            //         (from info at http://www.quirksmode.org/js/doctypes.html)
            obj.mousex = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
            obj.mousey = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
            
            
        }
    }
    return obj;
}

