/*
	class_mobile_abos.js
	----------------------
	GRiDDS - GmbH
	gridds.ch
	jei.at.girdds.com
	----------------------
*/
/**********************************************************************************
Class mobileABO
	
**********************************************************************************/

function mobileABO()	{
    this.name = 'mobile_abo';
    this.Ename = this.name+'-child_'+this.child;
    this.abos = '';
    this.prod = '';
    this.divname = '';
    this.prices = '';
    this.update = '';
	
    this.addFirst = addFirst;
    this.addChild = addChild;
    this.killThis = killThis;
    this.SelectorElement = SelectorElement;
    this.checkV_number = checkV_number;
    this.checkV_number_m = checkV_number_m;
    this.checkV_empty = checkV_empty;
    this.checkMNr = checkMNr;
    this.updateIt = updateIt;
    //this.check_qty = check_qty;
    //this.setMNr = setMNr;
    this.createPrice = createPrice;
    this.child = 0;
}

function updateIt()	{
    var first = true, qty, selected, mNr;
    for (var abo=0; abo < this.abos.length; abo++)	{
        if(this.update[abo])	{
            qty = this.update[abo]['qty'];
            selected = abo;
            mNr = this.update[abo]['mobiles'];
            if(first)	{
                this.addChild(true, qty, selected, mNr);
                first=false;
            } else	{
                this.addChild(false, qty, selected, mNr);
            }
        }
    }
	
}

function addChild(first, qty, selected, Mobiles)	{
    if(first!=true) first=false;
    this.child = this.child + 1;
    var neu = this.SelectorElement(first, qty, selected, Mobiles);
    document.getElementById(this.divname).appendChild(neu);
}

function addFirst()	{
    var neu = this.SelectorElement(true, 1, 0, false);
    document.getElementById(''+this.divname).appendChild(neu);
//alert(document.getElementById(this.divname));
}

function createPrice(nr)	{
    var value;
    if(nr==0)	{
        //value = Math.round(this.prod[0]['products_price']*1076)/1000;
        value = Math.round(this.prod[0]['products_price']*10)/10;
    }	else	{
        //value = Math.round(this.prices[nr]*1076)/1000;
        value = Math.round(this.prices[nr]*10)/10;
    }
    if(value==Math.round(value))	value +='.-';
    //return 'CHF '+ Math.round(value*20)/20;
    return 'Netto: CHF '+ value;
}

function SelectorElement(first, qty, selected, Mobiles)	{
	
    if(first!=true) first=false;
	
    this.Ename = this.name+'-child_'+this.child;
	
    var div = new myDiv('A', this.Ename, this.name+'-Selector');
    
    if(!qty) var qty = 1;
    //alert(new Function( "checkV_empty(this); checkMNr( this, '"+this.Ename+"'); " ));
    var input = new myInput( 'quantity','input' , this.Ename+'-input', '2', qty, new Function( "checkV_empty(this); checkMNr( this, '"+this.Ename+"'); " ), this.checkV_number);
    //myInput(element, type, name, size, value, onblur, onkeydown, onclick, onkeyup)
    input.newInput( 'kill','button' ,'', '1', 'löschen', '', '', this.killThis)
    input.kill.className = 'mAbo_button';
	
    //new Image Delete
    var imageDelete = new Image();
    imageDelete.src = 'images/tubedesign/trash.gif';
    imageDelete.onclick = this.killThis;
    imageDelete.onmouseover = new Function("showText('Element löschen');");
    imageDelete.onmouseout = new Function("setTime('');");
    imageDelete.className = 'delete_element';
	
    var select = document.createElement("select");
    var option;
    select.name = this.Ename+'-select';
    select.onchange = new Function( "checkMNr( this, '"+this.Ename+"')" );
    select.className = 'normal';
	
    function optionElement( text, value)	{
        var element = document.createElement("option");
        element.setAttribute("value", value);
        element.text= text;
        return element
    }
    for(nr=0; nr<this.abos.length; nr++){
        if(this.prices[nr]|nr==0) {
            //alert(nr);
            option = optionElement(this.abos[nr]+" ( "+ this.createPrice(nr) +" )", nr);
            if(selected==nr) option.selected = true;
            select.appendChild(option);
        }
    }
    for(nr=0, nrS=0; nr<this.abos.length; nr++){
        if(this.prices[nr]|nr==0) {
            //alert('length: '+select.length+' - hallo Welt - '+nr);
            select[nrS].text = this.abos[nr]+" ( "+ this.createPrice(nr) +" )";
            nrS++;
        }
    }
	
    //select.onmouseover = new function ()	{ this.className+"='over';"};
    //select.onmouseout = new function ()	{ this.className+"='normal';"};
	
    div.A.appendChild(input.quantity);
    div.A.appendChild(select);
    if(first) {
        input.kill.style.visibility = 'hidden';
        imageDelete.style.visibility = 'hidden';
    }
    //div.A.appendChild(input.kill);
    div.A.appendChild(imageDelete);
    if(Mobiles)	{
        this.checkMNr(div.A.firstChild, this.Ename, Mobiles);
    }
    return div.A;
}

/**********************************************************************************
Event-Functions killThis, checkV_number, checkV_empty, checkMNr
	
**********************************************************************************/

function killThis(obj)	{
    var count=0;
    var Countnode = this.parentNode;
    while(Countnode.previousSibling!=null){
        count++;
        Countnode = Countnode.previousSibling;
    }
    var div = this.parentNode.parentNode.childNodes[count];
    this.parentNode.parentNode.removeChild(div);
}

function checkV_number_m(obj)	{
    var PDIV = this.parentNode;
    var data = new myData('CodeRed', '	Bitte geben sie die Mobile Nummern an.', 'red');
    if(this.value.length==10)	{
        if(this.nextSibling!=null)PDIV.removeChild(this.nextSibling);
    }
    else	{
        if(this.nextSibling==null)	{
            PDIV.appendChild(data.CodeRed);
        }
    }
}

function checkV_number(obj)	{
    var browser=navigator.appName;
    var b_version=navigator.appVersion;
    var version=parseFloat(b_version);
    if ((browser!="Microsoft Internet Explorer"))
    {
        if(((obj.keyCode<=57)&(obj.keyCode>=48))|((obj.keyCode<=105)&(obj.keyCode>=96))|obj.keyCode==8|obj.keyCode==37|obj.keyCode==39){
            return true;
        }
        if(obj.keyCode==13)	{
            return false;
        }
    }
}

function checkV_empty(obj)	{
    if(obj.value==""|obj.value=="0"){
        obj.value='1';
        return true;
    } else{
        return false;
    }
}

function checkMNr(obj, name, Mobiles)	{
    var DIV = obj.parentNode;
    var FirstChild = obj.parentNode.firstChild;
    var Quantity = FirstChild.value;
    var Select = FirstChild.nextSibling;
    var value;
    name = DIV.id;
    if(Select.value==1|Select.value==2)	{
        var input = new myInput();
        var div = new myDiv('spezial', '', 'MobileAboNumbers');
        var data = new myData();
        if(Select.nextSibling.nextSibling==null){
            for(var nr2=1, nr=0;nr<Quantity;nr++, nr2++)	{
                if(Mobiles)	{
                    value = Mobiles[nr];
                } else	{
                    value = '';
                }
                input.newInput(nr,'input' , name+'-mNr_'+nr, '10', value, '', this.checkV_number, '', this.checkV_number_m);
                data.newData('d_'+nr, 'Mobile Nr'+nr2+': ', '#006699');
                data.newData('specd_'+nr, '	Bitte geben sie die Mobile Nummern an.', 'red');
                div.newDiv('d_'+nr, '', '');
                div['d_'+nr].appendChild(data['d_'+nr]);
                div['d_'+nr].appendChild(input[nr]);
                if(!Mobiles) div['d_'+nr].appendChild(data['specd_'+nr]);
                div.spezial.appendChild(div['d_'+nr]);
            }
            Select.parentNode.appendChild(div.spezial);
        } else	{
            var MobileNumbers = Select.nextSibling.nextSibling;
            var count = MobileNumbers.childNodes.length;
            if(Quantity>count)	{
                for (var N=Quantity-count; N!=0; N--,count++)	{
                    input.newInput(count,'input' , name+'-mNr_'+count, '10', '', '', this.checkV_number, '', this.checkV_number_m);
                    data.newData('d_'+count, 'Mobile Nr'+(count+1)+': ', '#006699');
                    data.newData('specd_'+count, '	Bitte geben sie die Mobile Nummern an.', 'red');
                    div.newDiv('d_'+count, '', '');
                    div['d_'+count].appendChild(data['d_'+count]);
                    div['d_'+count].appendChild(input[count]);
                    div['d_'+count].appendChild(data['specd_'+count]);
                    MobileNumbers.appendChild(div['d_'+count]);
                }
            }
            if(Quantity<count)	{
                var valueNr, areNumbers=false;
                var dontAsk=true;
                for (var N=count-Quantity, id=count-1; N!=0; N--, id--)	{
                    valueNr = MobileNumbers.childNodes[id].childNodes[1].value;
                    if(valueNr != '')	{
                        areNumbers = true;
                    }
                }
                if(areNumbers) dontAsk = confirm('Möchten sie die Mobile Nummern verwerfen (ja), oder möchten sie nochmals danach gefragt werden (nein)?')
                for (var N=count-Quantity, id=count-1; N!=0; N--, id--)	{
                    valueNr = MobileNumbers.childNodes[id].childNodes[1].value;
                    if(valueNr != '')	{
                        if(dontAsk)	{
                            MobileNumbers.removeChild(MobileNumbers.childNodes[id]);
                        } else	{
                            if(confirm('Die Nummer: [' + valueNr + '] verwerfen?'))	{
                                MobileNumbers.removeChild(MobileNumbers.childNodes[id]);
                            }
                        }
                    } else	{
                        MobileNumbers.removeChild(MobileNumbers.childNodes[id]);
                    }
                }
                FirstChild.value = MobileNumbers.childNodes.length;
            }
        }
    }	else	{
        if(Select.nextSibling.nextSibling!=null)	DIV.removeChild(Select.nextSibling.nextSibling);
    }
}

function check_submit()	{
    var MNR_ARR = new Array(), MNR, SDIV, MobileAbos = document.getElementById('mobile_abos');
    //alert('controllfunction!! standard true');
    if(MobileAbos.childNodes.length==0)	{
        xy.addChild(false);
    //return false;
    }
	
    for (var nr = MobileAbos.childNodes.length, count = 0 ; count < nr ; count++ )	{
        if(MobileAbos.childNodes[count].childNodes[3]){
            SDIV = MobileAbos.childNodes[count].childNodes[3];
            var qty = MobileAbos.childNodes[count].childNodes[0].value;
            var qty = MobileAbos.childNodes[count].childNodes[0].value;
            if(SDIV.childNodes.length != qty)	{
                checkMNr(MobileAbos.childNodes[count].childNodes[0], '', '');
                //alert(SDIV.childNodes.length +' != '+ qty);
                return false;
            }
            for(var nr2 = SDIV.childNodes.length, count2 = 0; count2 < nr2; count2++ )	{
                MNR = SDIV.childNodes[count2].childNodes[1].value;
                if(MNR.length!=10||MNR.match(/\D+/))	{
                    alert('Bitte geben Sie alle Mobile Nummern korrekt an!');
                    return false;
                } else	{
                    MNR_ARR.push(MNR);
                }
            }
        }
    }
    var QTY = MNR_ARR.length;
    for(var count = 0; count < QTY; count++)	{
        for(var count2 = 0; count2 < QTY; count2++)	{
            if((MNR_ARR[count]==MNR_ARR[count2])&&(count!=count2))	{
                alert('Die Mobile Nummer ('+MNR_ARR[count]+') ist doppelt!');
                return false;
            }
        }
    }
    return true;
}

/**********************************************************************************
Class myInput, myDiv
	
**********************************************************************************/

function myInput(element, type, name, size, value, onblur, onkeydown, onclick, onkeyup)	{
    if(element || element==0)	{
	
        this[element] = document.createElement("input");
        //this[element].type = type;
        this[element].name = name;
        this[element].size = size;
        this[element].value = value;
        this[element].onblur = onblur;
        this[element].onkeydown = onkeydown;
		
        if(onclick)this[element].onclick = onclick;
        if(onkeyup)this[element].onkeyup = onkeyup;
        this[element].className = 'normal';
    //this[element].onmouseover = new function ()	{ 'this.className="over";' };
    //this[element].onmouseout = new function ()	{ 'this.className="normal";'};
    }
    this.newInput = myInput;
}

function myDiv(element, id, className)	{
    this[element] = document.createElement("div");
    this[element].id = id;
    this[element].className = className;
    this.newDiv = myDiv;
}

function myData(element, Text, color)	{
    this[element] = document.createElement("span");
    if(color)this[element].style.color = color;
    var addText = document.createTextNode(Text);
    this[element].appendChild(addText);
    
    //var addColor = document.createAttribute("color");
    //addColor.nodeValue = "color";
    //this[element].setAttributeNode(addColor);

    this.newData = myData;
}

