function dump(object, regexp) {
    var r = typeof(object)+' (\n';
    for (prop in object) {
        if (regexp==null || regexp.test(prop))
        r += prop + '=' + object[prop] + '\n';
    }
    r += ')\n';
    alert(r);
    /// TODO: show result via window.open & document.write
}

function MM_preloadImages() { //v3.0
  var d=document; 
  if(d.images) { 
    if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; 
    for(i=0; i<a.length; i++)
      if (a[i].indexOf("#")!=0) { d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}
  }
}

function Cookie(path) {
    if (path) this.path = path;
}
Cookie.prototype.get = function (name) {
    var cookie = document.cookie.split('; ');
    for (var i = 0; i < cookie.length; i++) {
        var crumb = cookie[i].split('=');
        if (name == crumb[0])
            return unescape(crumb[1]);
    }
    return null;
}
Cookie.prototype.set = function (name, value) {
    var val = name+'='+escape(value);
    if (this.path) 
        val += '; path='+this.path;
    document.cookie = val;
}
Cookie.prototype.remove = function (name) {
    document.cookie = name+'=null; expires=Fri, 31 Dec 1999 23:59:59 GMT;';
}


function getQueryParam(query, name) {
    if (!query) return null;
    query = String(query);
    var i1 = query.indexOf(name+'='); // индекс начала параметра
    if ( i1 == -1 ) return null; // парамер отсутствует
    i1 += name.length+1; // индекс начала значения параметра
    var i2 = query.indexOf('&',i1); // индекс конца параметра
    if ( i2 == -1 ) i2 = query.length;
    return query.substring(i1,i2);
}

function getUrlParam(url, name) {
    if (!url) return null;
    url = String(url);
    var i = url.indexOf('?');
    if ( i == -1 ) return null; // парамеры отсутствуют
    return getQueryParam(url.substring(i+1), name);
}


function getById(id) {
    if (document.getElementById) {
        return document.getElementById(id);
    } else if (document.all) {
        return document.all[id];
    }
    return null;
}

function getAllById(id) {
    var ret = null;
    if (document.all) {
        ret = document.all.item(id);
    } else if (document.getElementById) {
        ret = document.getElementById(id); // TODO: fix this to return collection
    }
    if (!ret.length) {
        ret = new Array(ret);
    }
    return ret;
}

function exchangeInnerHTML(id1, id2) {
    var a = getById(id1);
    var b = getById(id2);
    var tmp = a.innerHTML;
    a.innerHTML = b.innerHTML;
    b.innerHTML = tmp;
}

/*
function makeObjectFunc(object, funcname, code) {
    object[funcname] = new Function(funcname, code);
}

function callObjectFunc(object, funcname, code) {
    object[funcname] = new Function(funcname, code);
}
*/

function _doShowObject(object) {
    if (object.style.display != 'none') return;
    object.style.display = 'block';
    var code = object.getAttribute('onShow');
    /*
    object.onShow = new Function('onShow', code);
    object.onShow();
    return;
    */
    if (code && execScript) {
        //alert(code);
        execScript(code);
    }
}

function _doHideObject(object) {
    if (object.style.display == 'none') return;
    object.style.display = 'none';
    var code = object.getAttribute('onHide');
    if (code && execScript) {
        //alert(code);
        execScript(code);
    }
}

function _doShowHideObject(object, show) {
    if (show==null) 
        show = 'none' == object.style.display;
    if (show)
        _doShowObject(object);
    else
        _doHideObject(object)
}

/// TODO: rewrite this using onHide/onShow tag attributes
/*function doShowHidePanel(id) {
    var object = getById(id);
    if (object) {
        //var cookie = new Cookie('/');
        //var trigger_img = document.images['trigger_'+id];
        //var trigger_img = getById('trigger_'+id);
        /// TODO: rewrite this in a standart way
        var trigger_imgs = document.all['trigger_'+id]; 
        for (var i=trigger_imgs.length; i--;) {
            trigger_img = trigger_imgs[i];
            //alert(trigger_img.src);
            //if (!trigger_img) return;
            if ('none' == object.style.display) {
                trigger_img.src = '/images/btn_collapse.gif';
                //cookie.set(id, '1', null);
            } else {
                trigger_img.src = '/images/btn_expand.gif';
                //cookie.set(id, '0', null);
            }
        }
        doShowHideObject(id);
    }
}*/

function doShowHidePanel(id) {
    var object = getById(id);
    if (object) {
        var cookie = new Cookie('/');
        var trigger_img = document.images['trigger_' + id];
		var trigger1_img = document.images['trigger1_' + id];
        if ('none' == object.style.display) {
            object.style.display = 'block';
            trigger_img.src = '/images/btn_expand.gif';
			trigger1_img.src = '/images/btn_expand.gif';
            cookie.set(id, '1', null);
        } else {
            object.style.display = 'none';
            trigger_img.src = '/images/btn_collapse.gif';
			trigger1_img.src = '/images/btn_collapse.gif';
            cookie.set(id, '0', null);
        }
    }
}

function doShowHideObject(id, show) {
    var object = getById(id);
    if (!object) return;

    if (show==null)
        show = 'none' == object.style.display;

    if (show) {
        _doShowObject(object);
    } else {
        _doHideObject(object);
    }
}

function doShowHideAll(id, show) {
    var coll = getAllById(id);
    for (var i=0; i<coll.length; ++i)
        _doShowHideObject(coll[i], show);
}

function doShowHideObjects() {
    var args = doShowHideObjects.arguments;
    var l = args.length;
    var i=0; var show=null;
    if (typeof(args[0])=='number' || typeof(args[0])=='boolean') {
        show = args[0]; ++i;
    }
    for (; i<l; ++i) {
      doShowHideObject(args[i], show);
    }
}

function doShowHideObjectEx(id, show) {
    return doShowHideObject(id, show);
}

function doShowAllObjectsReg(expr) {
    for (var id in document.all) {
        var str = new String(id);
        if (str.search(expr) == 0) {
            doShowHideObject(id, 1);
        }
    }
}
function doHideAllObjectsReg(expr) {
    for (var id in document.all) {
        var str = new String(id);
        if (str.search(expr) == 0) {
            doShowHideObject(id, 0);
        }
    }
}
function doShowHideAllObjectsReg(expr) {
    for (var id in document.all) {
        var str = new String(id);
        if (str.search(expr) == 0) {
            doShowHideObject(id);
        }
    }
}

function doShowHideObjectCond(optElem, radioGroup, checkValue, show, defaultHide) {
    if (defaultHide == null)
        defaultHide = true;
    var radio = document.frm.elements[radioGroup];
	for (var i=0; i<radio.length; i++)
        if (radio[i].checked) {
            if (radio[i].value==checkValue)
                doShowHideObject(optElem, show);
            else
                doShowHideObject(optElem, !show);
            return;
        }
    if (defaultHide)
        doShowHideObject(optElem, false);
}

function doShowChildren(id) {
    var object = getById(id);
    doShowChildrenHelper(object);
}

function doShowChildrenHelper(object) {
    if (object) {
        if (object.style && 'none' == object.style.display) {
            _doShowObject(object);
        }
        for (var i = 0; i < object.children.length; i++) {
            doShowChildrenHelper(object.children[i]);
        }
    }
}

function doHideChildren(id) {
    var object = getById(id);
    doHideChildrenHelper(object);
}

function doHideChildrenHelper(object) {
    if (object) {
        if (object.style && 'block' == object.style.display) {
            _doHideObject(object);
        }
        for (var i = 0; i < object.children.length; i++) {
            doHideChildrenHelper(object.children[i]);
        }
    }
}

function popUpWindow(url, target, width, height, scrolling) {
    var left, top;
    if (typeof(scrolling)=='undefined')
        scrolling = 1;
    if (typeof(screen)=='undefined') {
        left = top = 100;
    } else {
        left = parseInt((screen.width - width) / 3);
        if (left<0) {
            left = 0;
            width = screen.width;
        }
        top = parseInt((screen.height - height) / 3);
        if (top<0) {
            top = 0;
            height = screen.height;
        }
    }
    //alert("width="+width+",height="+height);
    var wnd;
    if (scrolling)
        wnd = window.open(url, target, "width="+width+",height="+height+",scrollbars,left="+left+",top="+top);
    else
        wnd = window.open(url, target, "width="+width+",height="+height+",left="+left+",top="+top);
    wnd.focus();
    return false;
}

function popUpWindowXY(url, target, left, top, width, height) {
    window.open(url, target, "width="+width+",height="+height+",scrollbars,left="+left+",top="+top).focus();
    return false;
}

function remindPhotos(i) {
    switch (i) {
        case 2:
            alert ("##Please, don't forget to attach your fotos in this form!##");
            break;
        case 3:
            alert ("##Please, don't forget to send your fotos to info@aupairscout.com!##");
            break;
    }
    return true;
}

function checkIncreaseOrder(id1, id2, n) {
    var ob1 = getById(id1);
    var ob2 = getById(id2);
    var val1 = parseInt(ob1.value);
    var val2 = parseInt(ob2.value);
    if ((val1!="") && (val2!="") && (val1>val2))
        if (n==1)
            ob2.value = val1;
        else 
            ob1.value = val2;
    //return false;
}
