// JavaScript Document
function OpenWin(path,descr,width,height,status,resize) {
	window.open(path , descr, 'toolbar=no, location=no, directories=no, status='+status+', menubar=no, scrollbars=yes, resizable='+resize+', width='+width+', height='+height);
}

function RefreshOpener() {
	window.opener.location=window.opener.location;
}

//Delete confirmation, GET method
function ConfirmDeleteGET(message, url) {
	if (confirm(message)) {
		document.location = url;
	}
}

function ConfirmDeletePOST(message) {
	if (confirm(message) == false) {
		return false;
	}
}
function ConfirmDelete(message, func) {
	if (confirm(message)) {
		func();
	}
}
// Afiseaza costul de livrare
function CheckDeliveryMethod(MethodID) {
	if (MethodID != 1)
		document.getElementById('ShippingCost').style.visibility = 'hidden';
	else
		document.getElementById('ShippingCost').style.visibility = '';
}

// Afiseaza continut array
function ArrForEach(Arr) {
	var str = '';
	for (key in Arr) {
		str += key + ' = ' + Arr[key] + '\n';
	}
	alert(str);
}

// Serialize array
function myserialize (a) {
    var a_php = "";
    var total = 0;
    for (var key in a)
    {
        ++ total;
        a_php = a_php + "s:" +
                String(key).length + ":\"" + String(key) + "\";s:" +
                String(a[key]).length + ":\"" + String(a[key]) + "\";";
    }
    a_php = "a:" + total + ":{" + a_php + "}";
    return a_php;
}

function serialize (mixed_value) {
    // http://kevin.vanzonneveld.net
    // +   original by: Arpad Ray (mailto:arpad@php.net)
    // +   improved by: Dino
    // +   bugfixed by: Andrej Pavlovic
    // +   bugfixed by: Garagoth
    // +      input by: DtTvB (http://dt.in.th/2008-09-16.string-length-in-bytes.html)
    // +   bugfixed by: Russell Walker (http://www.nbill.co.uk/)
    // +   bugfixed by: Jamie Beck (http://www.terabit.ca/)
    // %          note: We feel the main purpose of this function should be to ease the transport of data between php & js
    // %          note: Aiming for PHP-compatibility, we have to translate objects to arrays
    // *     example 1: serialize(['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: 'a:3:{i:0;s:5:"Kevin";i:1;s:3:"van";i:2;s:9:"Zonneveld";}'
    // *     example 2: serialize({firstName: 'Kevin', midName: 'van', surName: 'Zonneveld'});
    // *     returns 2: 'a:3:{s:9:"firstName";s:5:"Kevin";s:7:"midName";s:3:"van";s:7:"surName";s:9:"Zonneveld";}'
 
    var _getType = function (inp) {
        var type = typeof inp, match;
        var key;
        if (type == 'object' && !inp) {
            return 'null';
        }
        if (type == "object") {
            if (!inp.constructor) {
                return 'object';
            }
            var cons = inp.constructor.toString();
            match = cons.match(/(\w+)\(/);
            if (match) {
                cons = match[1].toLowerCase();
            }
            var types = ["boolean", "number", "string", "array"];
            for (key in types) {
                if (cons == types[key]) {
                    type = types[key];
                    break;
                }
            }
        }
        return type;
    };
    var type = _getType(mixed_value);
    var val, ktype = '';
    
    switch (type) {
        case "function": 
            val = ""; 
            break;
        case "boolean":
            val = "b:" + (mixed_value ? "1" : "0");
            break;
        case "number":
            val = (Math.round(mixed_value) == mixed_value ? "i" : "d") + ":" + mixed_value;
            break;
        case "string":
            val = "s:" + encodeURIComponent(mixed_value).replace(/%../g, 'x').length + ":\"" + mixed_value + "\"";
            break;
        case "array":
        case "object":
            val = "a";
            /*
            if (type == "object") {
                var objname = mixed_value.constructor.toString().match(/(\w+)\(\)/);
                if (objname == undefined) {
                    return;
                }
                objname[1] = this.serialize(objname[1]);
                val = "O" + objname[1].substring(1, objname[1].length - 1);
            }
            */
            var count = 0;
            var vals = "";
            var okey;
            var key;
            for (key in mixed_value) {
                ktype = _getType(mixed_value[key]);
                if (ktype == "function") { 
                    continue; 
                }
                
                okey = (key.match(/^[0-9]+$/) ? parseInt(key, 10) : key);
                vals += this.serialize(okey) +
                        this.serialize(mixed_value[key]);
                count++;
            }
            val += ":" + count + ":{" + vals + "}";
            break;
        case "undefined": // Fall-through
        default: // if the JS object has a property which contains a null value, the string cannot be unserialized by PHP
            val = "N";
            break;
    }
    if (type != "object" && type != "array") {
        val += ";";
    }
    return val;
}

// Pause
function pause(millis) 
{
var date = new Date();
var curDate = null;

do { curDate = new Date(); } 
while(curDate-date < millis);
} 

//Expand invisible elements
function ShowHidden(id) {
	Target = document.getElementById(id);
//	Img = document.getElementById('TriggerImg_'+id);
	if(Target.style.display == "none") {	
		Target.style.display = "";
//		Img.src = "/pics/ArrowDown2.gif";
		return false;
	} else {
		Target.style.display = "none";
//		Img.src = "/pics/ArrowRight2.gif";
	}
}

// Browser detect
var detect = navigator.userAgent.toLowerCase();
var OS,browser,version,total,thestring;

function BrowserDetect() {
	
	if (checkIt('konqueror'))
	{
		browser = "Konqueror";
		OS = "Linux";
	}
	else if (checkIt('safari')) browser = "Safari"
	else if (checkIt('omniweb')) browser = "OmniWeb"
	else if (checkIt('opera')) browser = "Opera"
	else if (checkIt('webtv')) browser = "WebTV";
	else if (checkIt('icab')) browser = "iCab"
	else if (checkIt('msie')) browser = "Internet Explorer"
	else if (!checkIt('compatible'))
	{
		browser = "Netscape Navigator"
		version = detect.charAt(8);
	}
	else browser = "An unknown browser";
	
	if (!version) version = detect.charAt(place + thestring.length);
	
	if (!OS)
	{
		if (checkIt('linux')) OS = "Linux";
		else if (checkIt('x11')) OS = "Unix";
		else if (checkIt('mac')) OS = "Mac"
		else if (checkIt('win')) OS = "Windows"
		else OS = "an unknown operating system";
	}
	return browser;
}
function checkIt(string)
{
	place = detect.indexOf(string) + 1;
	thestring = string;
	return place;
}

// Open coduri-postale.ro
function FindZip(address) {
	address = address.replace(/ /g, '+');
	if (address.length > 1) {
		window.open('http://www.coduri-postale.ro/index.php?action=search&address=' + address, 'Zip');
	} else {
		alert('Completati localitatea si adresa!');
	}
}
// Parse search string into URL
function goSearch(uri) {
	src = document.getElementById("srcStr").value;
	if (src.length > 0) {
		src = src.replace('-', '_');
		src = src.replace(/ /g, '-');
		if (uri != '/catalog/')
			uri += ',';
		uri += 's~' + src + '-s';
	}
	if (uri != '/catalog/')
		uri += '/';
	window.location = uri;
}

function getkey(e)
{
if (window.event)
   return window.event.keyCode;
else if (e)
   return e.which;
else
   return null;
}

function CheckChar(e, goods)
{
var key, keychar;
key = getkey(e);
if (key == null) return true;

// get character
keychar = String.fromCharCode(key);
keychar = keychar.toLowerCase();
goods = goods.toLowerCase();

// check goodkeys
if (goods.indexOf(keychar) != -1)
	return true;

// control keys
if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
   return true;

// else return false
return false;
}

startList = function() {
	if (document.all && document.getElementById && document.getElementById("nav")) {
		navRoot = document.getElementById("nav");
		for (i=0; i<navRoot.childNodes.length; i++) {
			node = navRoot.childNodes[i];
			if (node.nodeName=="LI" && node.className != "first")  {
				node.onmouseover=function() {
					this.className+="over";
				}
				node.onmouseout=function() {
					this.className=this.className.replace("over", "");
				}
			}
		}
	}
}
window.onload=startList;