window.onload = function () {
    var customSpans = document.getElementsByTagName( "span" );
    for ( i = 0; i < customSpans.length; i ++ ) {
        if ( customSpans[ i ].getAttribute( "cvelement" ) == "true" ) {
            customSpans[ i ].setAttribute( "value", customSpans[ i ].innerHTML );
        }
    }
}
function ajaxGroupProcessing( element, action, ajaxPath) {    
    recGroupSpan = element;
    var errorSpan = "";
    while ( recGroupSpan.getAttribute("cvtype") != "group" ) {
        recGroupSpan = recGroupSpan.parentNode;
    }
    triggerObj = element;
    valueTags = recGroupSpan.getElementsByTagName( "span" );
    if ( triggerObj.innerHTML != "save" ) {
        for ( i = 0; i < valueTags.length; i ++ ) {        
            if ( valueTags[ i ].getAttribute( "cvelement" ) == "true" ) {                        
                name = valueTags[ i ].getAttribute("name");
                val = valueTags[ i ].innerHTML;
                valueTags[ i ].innerHTML = "";
                if ( valueTags[ i ].getAttribute( "type" ) == "custom" ) {
                    if ( valueTags[ i ].id == "PAY_TYPE" ) {
                        selectElements = document.createElement( "select" );
                        var option = new Option("Credit/Debit Card - Mastercard", "M");
                        selectElements.options[ selectElements.length ] = option;                            
                        if ( valueTags[ i ].getAttribute( "selectedValue" ) == "M" ) {
                            selectElements.selectedIndex = 0;
                        }
                        var option = new Option("Credit/Debit Card - Visa", "V");
                        selectElements.options[ selectElements.length ] = option;                            
                        if ( valueTags[ i ].getAttribute( "selectedValue" ) == "V" ) {
                            selectElements.selectedIndex = 1;
                        }
                        var option = new Option("Credit/Debit Card - American Express", "A");
                        selectElements.options[ selectElements.length ] = option;
                        if ( valueTags[ i ].getAttribute( "selectedValue" ) == "A" ) {
                            selectElements.selectedIndex = 2;
                        }
                        var option = new Option("Credit/Debit Card - Discover", "D");
                        selectElements.options[ selectElements.length ] = option;
                        if ( valueTags[ i ].getAttribute( "selectedValue" ) == "D" ) {
                            selectElements.selectedIndex = 3;
                        }                        
                        valueTags[ i ].appendChild( selectElements );                             
                        selectElements.name = valueTags[ i ].getAttribute( "name" );
                    }
                }
                else {
                    if ( valueTags[ i ].getAttribute( "type" ) == "AJAX" ) {
                        url = ajaxPath;
                        result = httpRequest( url,  "POST",  "action=ajaxGetFieldValues&field=" + valueTags[ i ].getAttribute( "name" ) + "&value=" + valueTags[ i ].getAttribute( "value" ) );
                        var responeObj = eval('(' + result + ')');                            
                        valueTags[ i ].innerHTML = responeObj[ 'result' ];
                    }
                    else {                    
                        var newInput = document.createElement('input');
                        newInput.value = val;
                        newInput.name = valueTags[ i ].getAttribute( "name" );
                        newInput.size = ( val.length > 0 ? val.length : 5 );
                        if ( valueTags[ i ].getAttribute( "type" ) == "PASSWORD" ) {
                            newInput.type = "password";
                        }
                        if ( valueTags[ i ].getAttribute( "type" ) == "CONFIRM_PASSWORD" ) {
                            newInput.type = "password";
                        }
                        valueTags[ i ].appendChild( newInput );
                    }
                }                
            }                   
        }
        triggerObj.innerHTML = "save";   
        triggerObjContiner = triggerObj.parentNode;
        cancelbutton = document.createElement('a');
        cancelbutton.innerHTML = "cancel";            
        cancelbutton.style.marginLeft = "30px";
        cancelbutton.href = "javascript:void(0)";
        cancelbutton.id = "cancelButton";
        cancelbutton.onclick = function() {            
            triggerObj.innerHTML = "(edit)";               
            this.parentNode.removeChild(this);
            valueTags = recGroupSpan.getElementsByTagName( "span" );
            for ( i = 0; i < valueTags.length; i ++ ) {        
                if ( valueTags[ i ].getAttribute( "cvelement" ) == "true" ) {
                    valueTags[ i ].innerHTML = valueTags[ i ].getAttribute("value");
                }
            }               
        };
        triggerObjContiner.appendChild( cancelbutton );
    }
    else {        
        valueTags = recGroupSpan.getElementsByTagName( "span" );
        url = ajaxPath;
        urlParams = "action=" + action + "&";
        saveActionConfirmed = true;
        for ( i = 0; i < valueTags.length; i ++ ) {
            if ( valueTags[ i ].getAttribute( "cverror") == "true" ) {                    
                errorSpan = valueTags[ i ];
            }                                
            if ( valueTags[ i ].getAttribute( "cvelement" ) == "true" ) {                                
                if ( valueTags[ i ].getAttribute( "type" ) == "custom" ) {
                    if ( valueTags[ i ].id == "PAY_TYPE" ) {
                        selects = valueTags[ i ].getElementsByTagName( "SELECT" );
                        selects = selects[ 0 ];
                        valueTags[ i ].setAttribute( "value", val );                        
                        val = selects.options[ selects.selectedIndex ].value;
                        urlParams += selects.name + "=" + (val == "" ? " " : val ) + "&";
                    }
                }
                else {
                    inputTag = valueTags[ i ].getElementsByTagName( "INPUT" );
                    selectTag = valueTags[ i ].getElementsByTagName( "SELECT" );
                    if ( inputTag.length != 0 ) {
                        inputTag = inputTag[ 0 ];                    
                        val = inputTag.value;                    
                        urlParams += inputTag.name + "=" + (val == "" ? " " : val ) + "&";
                    }
                    else {
                        selectTag = selectTag[ 0 ];
                        val = selectTag.value;
                        urlParams += selectTag.name + "=" + (val == "" ? " " : val ) + "&";
                    }
                }
                if ( valueTags[ i ].getAttribute( "warningsavemessage" ) != null && saveActionConfirmed != false) {
                    confirmMessage = valueTags[ i ].getAttribute( "warningsavemessage" );                    
                    confirmMessage = confirmMessage.replace(/##CURRENT_VALUE##/ig, val);
                    saveActionConfirmed  = confirm( confirmMessage );
                }
            }
        }
        if ( saveActionConfirmed == false ) return;        
        result = httpRequest( url, "POST", urlParams );
        var responeObj = eval('(' + result + ')');                
        if ( responeObj [ 'hasErrors' ] == 0 ) {
            triggerObj.innerHTML = "(edit)";
            errorSpan.innerHTML = "Successfully saved data!";
            for ( i = 0; i < valueTags.length; i ++ ) {                
                if ( valueTags[ i ].getAttribute( "cvelement" ) == "true" ) {
                    if ( valueTags[ i ].getAttribute( "type" ) == "custom" ) {
                        if ( valueTags[ i ].id == "PAY_TYPE" ) {
                            selects = valueTags[ i ].getElementsByTagName( "SELECT" );
                            selects = selects[ 0 ];
                            if ( selects.options[ selects.selectedIndex ].value == " " ) {
                                val = "Check";
                            }
                            else {
                                val = "Card";
                            }                                                        
                            valueTags[ i ].setAttribute( "value", val );
                            valueTags[ i ].setAttribute( "selectedValue", selects.options[ selects.selectedIndex ].value );                            
                            valueTags[ i ].innerHTML = val;
                        }
                    }                    
                    else {
                        inputTag = valueTags[ i ].getElementsByTagName( "INPUT" );                        
                        selectTag = valueTags[ i ].getElementsByTagName( "SELECT" );                        
                        inputTagElement = inputTag[ 0 ];                                            
                        selectTagElement = selectTag[ 0 ];                                
                        if ( valueTags[ i ].getAttribute( "type" ) == "CREDIT_CARD" ) {                                                        
                            val = formatCardValue( inputTagElement.value );                            
                        }                        
                        else {
                            if ( inputTag.length != 0 ) {
                                val = inputTagElement.value;
                            }
                            else {
                                val = selectTagElement.value;
                            }
                        }
                        valueTags[ i ].setAttribute( "value", val );
                        valueTags[ i ].innerHTML = val;
                    }
                }
            }
            triggerObjContiner = triggerObj.parentNode;
            var as = triggerObjContiner.getElementsByTagName( "a" );
            for ( i = 0; i < as.length; i ++ ) {
                if ( as[ i ].id == "cancelButton" ) {
                    as[ i ].parentNode.removeChild( as[ i ] );
                }
            }
        }
        else { 
            var message = "";
            for ( i = 0; i < responeObj [ 'errorMessages' ].length; i ++ ) {
                message += responeObj [ 'errorMessages' ][ i ] + "<br/>";                
            }
            errorSpan.innerHTML = message;
        }        
         
    }
}
function formatCardValue( cardNumber ) {    
    cardNumber = cardNumber.replace(/-/gi, "")    
    var cString = "";    
    var i = 1;
    for ( i = 1; i <= cardNumber.length; i ++ ) {        
        if ( i == 1 || i > cardNumber.length - 4 ) {
            cString += cardNumber[ i - 1 ];
        }
        else {
            cString += "X";
        }        
        if ( i % 4 == 0 && i != cardNumber.length ) {
            cString += "-";
        }
    }    
    return cString;    
}
function ajaxProcessing( parentElement, action, ajaxPath, triggerObj, editStyle ) {        
    var vcElements = parentElement.getElementsByTagName( "SPAN" );
    var errorSpan = "";
    for ( i = 0; i < vcElements.length; i ++ ) {        
        if ( vcElements[ i ].getAttribute( "cvlist") == "true" ) {
            var list = vcElements[ i ];
        }        
    }
    if ( list ) {
        if ( triggerObj.innerHTML == "save" ) {
            //save                        
            valueTags = list.getElementsByTagName( "span" );
            url = ajaxPath;
            urlParams = "action=" + action + "&";
            saveActionConfirmed = true;
            for ( i = 0; i < valueTags.length; i ++ ) {                
                if ( valueTags[ i ].getAttribute( "cverror") == "true" ) {                    
                    errorSpan = valueTags[ i ];
                }
                if ( valueTags[ i ].getAttribute( "cvelement" ) == "true" ) {                    
                    if ( valueTags[ i ].getAttribute( "type" ) == "custom" ) {
                        if ( valueTags[ i ].id == "PAY_TYPE" ) {
                            selects = valueTags[ i ].getElementsByTagName( "SELECT" );
                            selects = selects[ 0 ];                            
                            val = selects.options[ selects.selectedIndex ].value;
                            urlParams += selects.name + "=" + (val == "" ? " " : val ) + "&";
                        }
                    }
                    else {
                        inputTag = valueTags[ i ].getElementsByTagName( "INPUT" );
                        selectTag = valueTags[ i ].getElementsByTagName( "SELECT" );
                        tagName = "";
                        if ( inputTag.length != 0 ) {
                            inputTag = inputTag[ 0 ];                    
                            tagName = inputTag.name;
                            val = inputTag.value;                        
                        }
                        else {
                            selectTag = selectTag[ 0 ];                    
                            tagName = selectTag.name;
                            val = selectTag.value;
                        }
                        urlParams += tagName + "=" + (val == "" ? " " : val ) + "&";
                    }
                    if ( valueTags[ i ].getAttribute( "warningsavemessage" ) != null && saveActionConfirmed != false) {
                        confirmMessage = valueTags[ i ].getAttribute( "warningsavemessage" );                                                
                        confirmMessage = confirmMessage.replace(/##CURRENT_VALUE##/ig, val);
						confirmMessage = confirmMessage.split( '\\n' );
						message = '';
						for ( confIterator = 0; confIterator < confirmMessage.length; confIterator ++ ) {							
							message += confirmMessage[ confIterator ] + '\n';							
						}
                        saveActionConfirmed  = confirm( message );
                    }
                }
            }                                   
            if ( saveActionConfirmed == false ) return;
            result = httpRequest( url, "POST", urlParams );
            var responeObj = eval('(' + result + ')');                
            if ( responeObj [ 'hasErrors' ] == 0  ) {
                triggerObj.innerHTML = "(edit)";
                errorSpan.innerHTML = "Successfully saved data!";
                var as = triggerObjContiner.getElementsByTagName( "a" );
                for ( i = 0; i < as.length; i ++ ) {
                    if ( as[ i ].id == "cancelButton" ) {
                        as[ i ].parentNode.removeChild( as[ i ] );
                    }
                }
                for ( i = 0; i < valueTags.length; i ++ ) {                
                    if ( valueTags[ i ].getAttribute( "cverror") == "true" ) {                    
                        errorSpan = valueTags[ i ];
                    }
                    if ( valueTags[ i ].getAttribute( "cvelement" ) == "true" ) {
                        if ( valueTags[ i ].getAttribute( "type" ) == "custom" ) {
                            if ( valueTags[ i ].id == "PAY_TYPE" ) {
                                selects = valueTags[ i ].getElementsByTagName( "SELECT" );
                                selects = selects[ 0 ];
                                if ( selects.options[ selects.selectedIndex ].value == " " ) {
                                    val = "Check";
                                }
                                else {
                                    val = "Card";
                                }                                                        
                                valueTags[ i ].setAttribute( "value", val );
                                valueTags[ i ].setAttribute( "selectedValue", selects.options[ selects.selectedIndex ].value );                                
                                valueTags[ i ].innerHTML = val;
                            }
                        }
                        else {                                                    
                            inputTag = valueTags[ i ].getElementsByTagName( "INPUT" );
                            selectTag = valueTags[ i ].getElementsByTagName( "SELECT" );
                            if ( inputTag.length != 0 ) {
                                inputTag = inputTag[ 0 ];                    
                                if ( valueTags[ i ].getAttribute( "type" ) == "PASSWORD" ) {
                                    val = "******";
                                }
                                else {
                                    if ( valueTags[ i ].getAttribute( "type" ) == "CONFIRM_PASSWORD" ) {
                                        val = "";
                                    }
                                    else {
                                        val = inputTag.value;
                                    }
                                }                                
                            }
                            else {
                                selectTag = selectTag[ 0 ];
                                val = selectTag.value;
                            }                                      
                            saveElement( valueTags[ i ] );                            
                            valueTags[ i ].setAttribute( "value", val );                            
                            valueTags[ i ].innerHTML = val;
                            if ( valueTags[ i ].getAttribute( "type" ) == "LINK") {
                                if ( valueTags[ i ].parentNode.getAttribute( "cvlink" ) == "true" ) {
                                     valueTags[ i ].parentNode.href = "http://" + val + "." + valueTags[ i ].parentNode.getAttribute( "stringParams" );
                                }
                            }
                        }
                    }
                }
            }
            else { 
                var message = "";
                for ( i = 0; i < responeObj [ 'errorMessages' ].length; i ++ ) {
                    message += responeObj [ 'errorMessages' ][ i ] + "<br/>";                
                }
                errorSpan.innerHTML = message;
            }            
        }
        else {            
            valueTags = list.getElementsByTagName( "span" );
            triggerObjContiner = triggerObj.parentNode;
            cancelbutton = document.createElement('a');
            cancelbutton.innerHTML = "cancel";            
            cancelbutton.style.marginLeft = "30px";
            cancelbutton.href = "javascript:void(0)";
            cancelbutton.id = "cancelButton";
            cancelbutton.onclick = function() {
                cancel( parentElement, triggerObj);
                this.parentNode.removeChild(this);
                triggerObj.innerHTML = "(edit)";   
            };
            triggerObjContiner.appendChild( cancelbutton );
            for ( i = 0; i < valueTags.length; i ++ ) {                
                if ( valueTags[ i ].getAttribute( "cvelement" ) == "true" ) {
                    name = valueTags[ i ].getAttribute("name");
                    val = valueTags[ i ].innerHTML;
                    valueTags[ i ].innerHTML = "";
                    if ( valueTags[ i ].getAttribute( "type" ) == "custom" ) {
                        if ( valueTags[ i ].id == "PAY_TYPE" ) {
                            selectElements = document.createElement( "select" );
                            var option = new Option("Credit/Debit Card - Mastercard", "M");
                            selectElements.options[ selectElements.length ] = option;                            
                            if ( valueTags[ i ].getAttribute( "selectedValue" ) == "M" ) {
                                selectElements.selectedIndex = 0;
                            }
                            var option = new Option("Credit/Debit Card - Visa", "V");
                            selectElements.options[ selectElements.length ] = option;                            
                            if ( valueTags[ i ].getAttribute( "selectedValue" ) == "V" ) {
                                selectElements.selectedIndex = 1;
                            }
                            var option = new Option("Credit/Debit Card - American Express", "A");
                            selectElements.options[ selectElements.length ] = option;
                            if ( valueTags[ i ].getAttribute( "selectedValue" ) == "A" ) {
                                selectElements.selectedIndex = 2;
                            }
                            var option = new Option("Credit/Debit Card - Discover", "D");
                            selectElements.options[ selectElements.length ] = option;
                            if ( valueTags[ i ].getAttribute( "selectedValue" ) == "D" ) {
                                selectElements.selectedIndex = 3;
                            }
                            var option = new Option("Cheque/ACH", " ");
                            selectElements.options[ selectElements.length ] = option;
                            if ( valueTags[ i ].getAttribute( "selectedValue" ) == " " ) {
                                selectElements.selectedIndex = 4;
                            }
                            valueTags[ i ].appendChild( selectElements );                             
                            selectElements.name = valueTags[ i ].getAttribute( "name" );
                        }
                    }
                    else {
                        if ( valueTags[ i ].getAttribute( "type" ) == "AJAX" ) {
                            url = ajaxPath;
                            result = httpRequest( url,  "POST",  "action=ajaxGetFieldValues&field=" + valueTags[ i ].getAttribute( "name" ) + "&value=" + valueTags[ i ].getAttribute( "value" ) );
                            var responeObj = eval('(' + result + ')');                            
                            valueTags[ i ].innerHTML = responeObj[ 'result' ];
                        }
                        else {                        
                            var newInput = document.createElement('input');
                            newInput.value = val;
                            newInput.name = valueTags[ i ].getAttribute( "name" );
                            newInput.size = ( val.length > 0 ? val.length : 5 );
                            if ( valueTags[ i ].getAttribute( "type" ) == "PASSWORD" || valueTags[ i ].getAttribute( "type" ) == "CONFIRM_PASSWORD" ) {
                                newInput.type = "password";
                            }
                            if ( valueTags[ i ].getAttribute( "maxlength" ) != "" ) {
                                newInput.setAttribute( "maxlength", valueTags[ i ].getAttribute( "maxlength" ) );
                            }                            
                            if ( valueTags[ i ].getAttribute( "inputtypemessage" ) ) {
                                var elementTitle = document.createElement( 'span' );
                                elementTitle.innerHTML = valueTags[ i ].getAttribute( "inputtypemessage" );
                                valueTags[ i ].appendChild( elementTitle );
                            }
                            valueTags[ i ].appendChild( newInput );
                            if ( valueTags[ i ].getAttribute( "type" ) == "LINK") {
                                if ( valueTags[ i ].parentNode.getAttribute( "cvlink" ) == "true" ) {
                                     valueTags[ i ].parentNode.removeAttribute( "href" );
                                     
                                }
                            }  
                        }
                    }                    
                }
            }                          
            triggerObj.innerHTML = "save";
        }
    }      
}
function saveElement( elementToSave ) {    
    if ( elementToSave.getAttribute( "globalValue" ) == "true" ) {        
        globalElements = document.getElementsByTagName( "SPAN" );        
        for ( j = 0; j < globalElements.length; j ++ ) {                                    
            if ( globalElements[ j ].getAttribute( "globalValue" ) == "true" && elementToSave.getAttribute( "name" ) == globalElements[ j ].getAttribute( "name" ) ) {
                globalElements[ j ].setAttribute( "value", val );                            
                globalElements[ j ].innerHTML = val;                   
                var errorMessage = findErrorElement( globalElements[ j ] );
                errorMessage.innerHTML = "Successfully saved data!";
            }
        }
    }
}
function findErrorElement( obj ) {    
    currentParent = obj;    
    var i = 0;    
    while ( i < 20 ) { 
        spans = currentParent.getElementsByTagName( "SPAN" );
        for ( spanIterator = 0; spanIterator < spans.length; spanIterator ++ ) {        
            if ( spans[ spanIterator ].getAttribute( "cverror" ) == "true" ) {
                return spans[ spanIterator ];
            }        
        }
        currentParent = currentParent.parentNode;
        i ++;
    }
}
function cancel( parentElement, triggerObj ) {
    var vcElements = parentElement.getElementsByTagName( "SPAN" );
    for ( i = 0; i < vcElements.length; i ++ ) {        
        if ( vcElements[ i ].getAttribute( "cvlist") == "true" ) {
            var list = vcElements[ i ];
        }        
    }
    if ( list ) {
        triggerObj.innerHTML = "(edit)";
        valueTags = list.getElementsByTagName( "span" );        
        for ( i = 0; i < valueTags.length; i ++ ) {                
            if ( valueTags[ i ].getAttribute( "cvelement" ) == "true" ) {                
                valueTags[ i ].innerHTML = valueTags[ i ].getAttribute( "value" );
            }
        }
    }
}
function cancelAccountAction( parentElement, ajaxPath, actionElement ) {
    var vcElements = parentElement.getElementsByTagName( "SPAN" );
    var errorSpan = "";
    for ( i = 0; i < vcElements.length; i ++ ) {        
        if ( vcElements[ i ].getAttribute( "cvelement") == "true" ) {
            var statusElement = vcElements[ i ];
        }        
    }                      
    if ( statusElement ) {                    
        if ( statusElement.getAttribute( "warningsavemessage" ) != null ) {
            confirmMessage = statusElement.getAttribute( "warningsavemessage" );            
            saveActionConfirmed = confirm( confirmMessage );
            if ( saveActionConfirmed == true ) {                
                result = httpRequest( ajaxPath, "POST", "action=cancelAccountAction" );
                var responeObj = eval('(' + result + ')');
                actionElement.innerHTML = responeObj[ 'action' ];
                statusElement.innerHTML = responeObj[ 'status' ];
                if ( responeObj[ 'dezactivatiedAction' ] == 1 ) {
                    actionElement.onclick = null;
                }
            }
        }
    }    
}
function goToInnerHTMLURL( obj ) {        
    url = "http://";
    for ( i = 0; i < obj.childNodes.length; i ++ ) {
        url += ( obj.childNodes[ i ].innerHTML ? obj.childNodes[ i ].innerHTML : "" );
    }
    window.open( url, "_blank" );
}
function httpRequest(url, requestType, requestParameters ) {
    
    // creates XMLHttpRequest object
    if (window.XMLHttpRequest) req = new XMLHttpRequest();
    else if (window.ActiveXObject) req = new ActiveXObject("Microsoft.XMLHTTP");    
    if ( requestType.toLowerCase() == "get" ) {        
        req.open("GET", url, false);
        req.send(null);
    }
    else {
        req.open("POST", url, false);
        req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        req.setRequestHeader("Content-length", requestParameters.length);
        req.setRequestHeader("Connection", "close");
        req.send(requestParameters);
    }
	return req.responseText;
}
