/* util.js */
function hasAttribute(element, attribute_name) {
    try {
        str = "element." + attribute_name
        if (eval(str) != undefined)
            return true
    } catch (e) {
    }
    return false
}

function switch_element_visibility(element, display_method) {
    element = $(element);
    if (!is_visible(element)) {
        show_element(element, display_method);
    } else {
        hide_element(element);
    }
    return false;
}

function show_element(element, display_method) {
    if (!display_method) {
        display_method = 'block';
    }
    element = $(element);
    element.style.display = display_method;
}

function hide_element(element) {
    element = $(element);
    element.style.display = 'none';
}

function $(element) {
    if (!hasAttribute(element, "id")) {
        try {
            element = document.getElementById(element);
        } catch (e) {
        }
    }
    return element;
}

function is_visible(element) {
    element = $(element);
    return element.style.display != 'none';
}

function two_digits(param) {
    param = "" + param;
    while (param.length < 2) {
        param = "0" + param;
    }
    return param;
}

function is_type_text(element) {
    return element.type == "text";
}
function is_type_checkbox(element) {
    return element.type == "checkbox";
}
function is_type_select_one(element) {
    return element.type == "select-one";
}
function is_type_radio(element) {
    return element.type == "radio";
}
function is_type_radio_group(element) {
    return element.length && is_type_radio(element[0]);
}
function is_type_label(element) {
    return element.tagName.toLowerCase() == "label";
}

function asbool(value) {
    value = trim(String(value).toLowerCase());
    switch (value) {
    case "true":
    case "1":
    case "yes":
    case "on":
        return true;
    case "false":
    case "0":
    case "no":
    case "off":
        return false;
    }
    throw "Not a boolean value - " + value;
}

function trim(str) {
    return str.replace(/^\s+|\s+$/g, '');
}
var strip = trim;

function group_set_property(elements_ids, property, value) {
    for (i in elements_ids) {
        eval("document.getElementById('" + elements_ids[i] + "')." + property + " = " + value);
    }
}
function group_set_checked(elements_ids, checked) {
    group_set_property(elements_ids, "checked", checked);
}
function group_conjunct_property(elements_ids, property) {
    result = true;
    for (i in elements_ids) {
        eval("result = result && document.getElementById('" + elements_ids[i] + "')." + property);
        if (!result) {
            break;
        }
    }
    return result;
}

function get_radio_value(radio_element) {
	for (var i = 0; i < radio_element.length; i++) {
		if (radio_element[i].checked) {
			return radio_element[i].value
		}
	}
	return null;
}
/* end util.js */

/* promua.js */
function collapse_change_state(collapsed_id) {
    var current_state = 1; // 0 means hidden
    if (!(YD.get(collapsed_id).style.display == 'block')) {
        current_state = 0;
    }
    if (current_state == 0) {
        YD.get(collapsed_id).style.display = 'block';
        YD.get(collapsed_id + '_img').style.backgroundImage = 'url("/image/new_design/images/menu_collapse.png")';
    } else {
        YD.get(collapsed_id).style.display = 'none';
        YD.get(collapsed_id + '_img').style.backgroundImage = 'url("/image/new_design/images/menu_expand.png")';
    }
}
function collapse_change_state_horisontal(collapsed_id, expand_text, collapsed_text) {
    var current_state = 1; // 0 means hidden
    if (!(YD.get(collapsed_id).style.display == 'block')) {
        current_state = 0;
    }
    if (current_state == 0) {
        YD.get(collapsed_id).style.display = 'block';
        YD.get(collapsed_id + '_img').src = '/image/new_design/images/minus_additional_region-trans.png';
        YD.get(collapsed_id + '_text').innerHTML = collapsed_text;
    } else {
        YD.get(collapsed_id).style.display = 'none';
        YD.get(collapsed_id + '_img').src = '/image/new_design/images/plus_additional_region-trans.png';
        YD.get(collapsed_id + '_text').innerHTML = expand_text;
    }
}
/* end promua.js */

var YW = YAHOO.widget;

//var YA = YAHOO.util.Anim;
function $(id){
    return YD.get(id);
}
/**namespace for page globals**/
var Page = {}
Page.richEditors = {}
/**
SW is a holder for SmartWeb developed custom scripts
**/
var SW = {
    clearErrors: function() {
        errors = YD.getElementsByClassName('error', 'span', null,
            function(el) {
                el.className = 'error hidden';
            }
        );
        errors = YD.getElementsByClassName('error-icon', 'span', null,
            function(el) {
                el.className = 'error-icon hidden';
            }
        );
    },
    renderErrors: function (json_data) {
		var result = {};
		if (typeof(json_data) == 'string'){
			eval('result = ' + json_data);
		} else{
			result = json_data;
		}
        var minTop = 100000;
        for (var key in result) {
            var error_div = $(key + '_error');
            if (error_div == null) {
                alert('No error container defined for: ' + key);
                continue;
            }
            error_div.className = 'error';
            error_div.innerHTML = result[key];
            var error_icon_div = $(key + '_error_icon');
            error_icon_div.className = 'error-icon';
            var top = YD.getY(error_div);
            if (top < minTop) {
                minTop = top;
            }
        }
		return minTop;
    },
    asyncFormSubmit: function(form, button, config) {
        button.set('disabled', true);
        window.setTimeout(function(){
            button.set('disabled', false);
        }, 20 * 1000);

        var config = YL.merge({
            validationSuccess: null,
            validationError: function(o) {
				var minTop = SW.renderErrors(o.responseText);
                window.scrollTo(0, minTop - 100);
            },
        	validationFailure: function(o) {
                button.set('disabled', false);
                //alert('Error during validation')
                //DO NOTHIND, TODO log somehting in debug
            },
            handler: {
                success: function(o) {
                    SW.clearErrors();
					button.set('disabled', false);
                    if (o.responseText == "OK") {
                        config.validationSuccess(o);
                    } else {
                        config.validationError(o);
                    }
                },
                failure: config.validationFailure
            },
            method: 'POST',
            url: form.action
        }, config == null ? {} : config);
        SW.refreshRichTexts();
        YC.setForm(form);
        YC.asyncRequest(config.method, config.url, config.handler);
        return false;
    },
    validateSubmit: function(button, formSchema, protocol) {
        var htmlButton = button.getForm ? button._button : button;
        var form = htmlButton.form;
        if (!protocol) {
            protocol = document.location.protocol;
        }
        if (!protocol.match(/:$/)) {
            protocol += ':';
        }
        host = document.location.host;
        if (!host.match(/.*:\d+/)) {
            host += ':' + document.location.port ? document.location.port : '';
        }
        var url = protocol + '//' + host + '/validation/index/' + formSchema;
        if (form.validated) {
            return true;
        }
        this.asyncFormSubmit(form, button, {
            url: url,
            validationSuccess: function(o) {
                form.validated = true;
                button.set('disabled', false);
                htmlButton.click()
                button.set('disabled', true);
            }
        });
        return false;
    },
    submitInline: function(button, validationSuccess) {
        this.asyncFormSubmit(button.getForm(), button, {
            validationSuccess: validationSuccess
        });
        return false;
    },
    validateSubmitForm: function(form, button, config) {
        if (button) {
            $$(button).button('disable');
            window.setTimeout(function() {
                $$(button).button('enable');
            }, 20 * 1000);
        }
        if(!config.url)
            config.url = form.attr('action');
        if(!config.method)
            config.method = 'POST';
        $$.ajax({
            type: config.method,
            url: config.url,
            data: $$(form).serialize(),
            success: function (responseText, textStatus, xhr) {
                SW.clearErrors();
                try {
                    // suggest response is json
                    var json = $$.parseJSON(responseText);
                    if (json.status && json.status == "ok" && config.success)
                        config.success(json, textStatus, xhr);
                    else if (config.validationError)
                        config.validationError(json, textStatus, xhr);
                }
                catch (e) {
                    // response is html
                    if (config.success)
                        config.success(responseText, textStatus, xhr);
                }
/*
                if ($$.trim(responseText).toLowerCase() == "ok" || responseText.match(/^\s*</)) {
                    if (config.success) {
                        config.success(responseText, textStatus, xhr);
                    }
                } else {
                    SW.renderErrors(responseText);
                    if (config.validationError) {
                        config.validationError(responseText, textStatus, xhr);
                    }
                }
*/
            },
            error: function (xhr, status, e) {
                if (config.error) {
                    config.error(xhr, status, e);
                }
            },
            complete: function (xhr, status) {
                if (button) {
                    $$(button).button('enable');
                }
                if (config.complete) {
                    config.complete(xhr, status);
                }
            }
        });
    },
    /** Common overlay manager used to show only one help menu
    on the page initialize lazily**/
    overlayManager: null,

    registerHelpPanel: function (el, config) {
        /** Requires YUI container.js**/
        if (this.overlayManager == null) {
            this.overlayManager = new YW.OverlayManager()
        };
        var o = YL.merge({
                width: '300px',
            	iframe: true,
            	fixedcenter: false,
                close: true
            }, config == null ? {} : config);
        var panel = null;
        YE.on(el, 'click', function (e) {
            SW.overlayManager.hideAll()
            if (panel == null) {
                panel = new YW.Panel(YD.generateId(), {
                    width: o.width,
                	visible: false,
                	hidden: true,
                	draggable: false,
                	close: o.close,
                	fixedcenter: (o.fixedcenter == 'true'),
                	context: [el, 'tl', 'bl']
                });
                panel.setHeader(o.header);
                panel.setBody(o.body);
                panel.render(document.body)
                SW.overlayManager.register(panel)
            }
            panel.show()
            YE.stopPropagation(e);
        });
        if (config == null || config.close_on_body_click != 'false'){
	        YE.on(document.body, 'click', function(e) {
	            SW.overlayManager.hideAll()
	        });
	    }
    },
    nicEditorButtons: ['fontFormat','bold','italic','underline','strikeThrough','undo', 'redo', 'left','center','right','ol','ul','indent','unindent','hr','link'],

    maxLength: function(objId, maxLength, monitorId /*optional*/) {
    	var obj = YD.get(objId);
    	var isTextarea = (obj.tagName.toLowerCase() == 'textarea');
    	var monitor = YD.get(monitorId);

    	if (!isTextarea) { obj.maxLength = maxLength };

    	var getCharLeft = (isTextarea) ? function() {
    		var lfs = obj.value.match(/\n/g);
    		return maxLength - obj.value.length - (lfs ? lfs.length : 0);
    	} : function() {
    		return maxLength - obj.value.length;
    	}

    	var updateMonitor = function(num) {
    		monitor.innerHTML = num;
    	};

    	var handler = SW.limitExecByInterval(function(e) {
    		var charLeft = getCharLeft();
    		if (charLeft < 0 && isTextarea) {
    		    var lfs = obj.value.match(/\n/g);
    			obj.value = obj.value.substring(0, maxLength - (lfs ? lfs.length : 0));
    			charLeft = 0;
    		};
    		if (monitor) updateMonitor(charLeft);
    	}, 150);
    	handler();
    	obj.updateMonitor = handler;

    	YE.on(obj, 'change', handler);
    	YE.on(obj, 'keyup', handler);
    },

    limitExecByInterval: function(fn, time) {
    	var lock, execOnUnlock, args;
    	return function() {
    		args = arguments;
    		if (!lock) {
    			lock = true;
    			var scope = this;
    			setTimeout(function(){
    				lock = false;
    				if (execOnUnlock) {
    					args.callee.apply(scope, args);
    					execOnUnlock = false;
    				}
    			}, time);
    			return fn.apply(this, args);
    		} else execOnUnlock = true;
    	}
    },
	loadScript: function(url, elementId) {
    	var oScript = document.createElement("script");
    	oScript.type = "text/javascript"
    	oScript.src = url;
    	if (elementId != null) {
    		oScript.id = elementId;
    	}
    	document.body.appendChild(oScript);
    },
    richEditorForTextarea: function(nodeId) {
        Page.richEditors[nodeId] = new nicEditor({buttonList : SW.nicEditorButtons}).panelInstance(nodeId);
    },
    refreshRichTexts: function() {
        for (key in Page.richEditors) {
            // alert(Page.richEditors)
            // alert(Page.richEditors[key].nicInstances[0].getContent())
            YD.get(key).value = Page.richEditors[key].nicInstances[0].getContent()
        }
    },
    ButtonCodeViewer: function(codeAreaId){
   		var codeAreaObj = document.getElementById(codeAreaId);
   		var buttonsRegister = new Array();
		this.isRegisteredButton = function(buttonObj){
			for (var i = 0; i < buttonsRegister.length; i ++) {
				if (buttonsRegister[i] == buttonObj) {
					return true;
				}
			}
			return false;
		}
		this.click = function(buttonObj){
			for (var i = 0; i < buttonsRegister.length; i ++) {
		    	buttonsRegister[i].className = buttonObj.defaultClass;
		        buttonsRegister[i].selected = false;
		    }
		    if (!this.isRegisteredButton(buttonObj)) {
		    	buttonsRegister[buttonsRegister.length] = buttonObj;
		    }
		    buttonObj.className = 'promo-button-wrapper-selected';
		    buttonObj.selected = true;
		    codeAreaObj.value = buttonObj.innerHTML;
			return false;
		}
		this.over = function(buttonObj){
			if (buttonObj.defaultClass == null) {
				buttonObj.defaultClass = buttonObj.className;
			}
			buttonObj.className = 'promo-button-wrapper-selected';
		}
		this.out = function(buttonObj){
			if (!buttonObj.selected) {
				buttonObj.className = buttonObj.defaultClass;
			}
		}
	},
	expandCollapseFacetList: function (listContainerId, expandButtonObj, collapsedItemNumber, moreCaption, collapceCaption){
    	if (expandButtonObj.parentNode.isExpanded == null || expandButtonObj.parentNode.isExpanded == false){
        	var groupsContainer = document.getElementById(listContainerId);
        	groupsContainer.style.height = (groupsContainer.offsetHeight - 6) + 'px';
        	expandButtonObj.parentNode.className = 'search-facet-items search-facet-items-expanded';
        	var listItems = expandButtonObj.parentNode.getElementsByTagName('li');
        	for (var i = collapsedItemNumber + 1; i < listItems.length; i ++){
        		if (expandButtonObj != listItems[i]){
	        		listItems[i].className = '';
	        	}
        	}
        	expandButtonObj.style.listStyleImage = 'url(/image/icon/minus.gif)';
        	expandButtonObj.innerHTML = '<span>' + collapceCaption + '</span>';
        	expandButtonObj.parentNode.isExpanded = true;
        } else {
        	expandButtonObj.parentNode.className = 'search-facet-items';
        	var listItems = expandButtonObj.parentNode.getElementsByTagName('li');
        	for (var i = 0; i < listItems.length; i ++){
        		if (i > collapsedItemNumber && i < listItems.length - 1){
	        		listItems[i].className = 'item-collapsed';
	        	}
        	}
        	expandButtonObj.style.listStyleImage = 'url(/image/icon/plus.gif)';
        	expandButtonObj.innerHTML = '<span>' + moreCaption + '</span>';
        	expandButtonObj.parentNode.isExpanded = false;
        }
    },
	expandCategoryList: function (listContainerId, expandButtonObj){
		expandButtonObj.style.display = 'none';
    	var catagoryContainer = document.getElementById(listContainerId);
    	var categoryItems = catagoryContainer.getElementsByTagName("span");
    	for (var i = 0; i < categoryItems.length; i++){
    		categoryItems[i].className = categoryItems[i].className.replace("category-collapsed", "");
    	}
    	return false;
    },
    hideSearchEngineRegisterLabel: function (containerId, domainName){
		document.getElementById(containerId).style.display = 'none';
		YAHOO.util.Cookie.set("show_se_label", "False", {
		    path: "/",
		    domain: domainName,
		    expires: new Date(new Date().getTime() + 1000 * 3600 * 24 * 356 * 10)
		});
    },
    hideImportantMessage: function (containerId, domainName){
		document.getElementById(containerId).style.display = 'none';
		YAHOO.util.Cookie.set("show_important_message", "False", {
		    path: "/",
		    domain: domainName,
		    expires: new Date(new Date().getTime() + 1000 * 3600 * 24)
		});
    },
    expnadCollapseNode: function (nodeId){
    	var node = document.getElementById(nodeId);
    	if (node.style.display == 'block'){
    		node.style.display = 'none';
    	} else {
    		node.style.display = 'block';
    	}
    },
    ColorSchemaToggle: function (){
    	var containerRegister = new Array();
    	this.isRegisteredContainer = function(containerObj){
			for (var i = 0; i < containerRegister.length; i ++) {
				if (containerRegister[i] == containerObj) {
					return true;
				}
			}
			return false;
		}
    	this.click = function(containerNodeId){
	    	var containerNode = document.getElementById(containerNodeId);
	    	for (var i = 0; i < containerRegister.length; i ++) {
				containerRegister[i].className = "color-schema-wrapper";
			}
	    	containerNode.className = containerNode.className + " color-schema-wrapper-active";
	    	if (!this.isRegisteredContainer(containerNode)){
	    		containerRegister[containerRegister.length] = containerNode;
	    	}
	    }
    },
    toglePromoBlock: function(domainName) {
      function setCookie(value, domainName) {
          YAHOO.util.Cookie.set("show_promo_block", value, {
            path: "/",
            domain: domainName,
            expires: new Date(new Date().getTime() + 1000 * 3600 * 24 * 356 * 10)
        });
      }
      var promoContainer = YD.get('promo-header-container');
      var collapsedRegisterBlockContainer = YD.get('collapsed-promo-block-register-container');
      if (promoContainer.collapsed) {
          promoContainer.collapsed = false;
          promoContainer.className = 'promo-header-expanded-wrapper';
          if (collapsedRegisterBlockContainer){
              collapsedRegisterBlockContainer.innerHTML = '';
          }
          YD.get('close_label_div').onmouseover = function() {  };
          YD.get('close_label_div').onmouseout = function() {  };
          YD.get('close_label_div').style.backgroundColor = 'transparent';
          setCookie("True", domainName);
      } else {
          promoContainer.collapsed = true;
          promoContainer.className = 'promo-header-collapsed-wrapper';
          if (collapsedRegisterBlockContainer){
              collapsedRegisterBlockContainer.innerHTML = YD.get('register-button-container').innerHTML;
          }
          YD.get('close_label_div').onmouseover = function() { SW.anim.animate(); };
          YD.get('close_label_div').onmouseout = function() { SW.anim_out.animate(); };
          setCookie("False", domainName);
      }
  }
}

function incr_element_value(element, value) {
	element = document.getElementById(element);
	element.innerHTML = Number(element.innerHTML) + value;
}

function update_funtionality_price(check_box_element, price_show_element, comulative_price_element, price) {
    YAHOO.util.Event.on(check_box_element, "change", function(e) {
        if (e.target.checked) {
            YAHOO.util.Dom.get(price_show_element).innerHTML = price;
            incr_element_value(comulative_price_element, price);
        } else {
            YAHOO.util.Dom.get(price_show_element).innerHTML = 0;
            incr_element_value(comulative_price_element, -1*price);
        }
    });
}

var FormTemplate = {
    create: function(form_name, menu_container_id, menu_toggle_id) {
        var oMenu = new YAHOO.widget.Menu(menu_container_id + "_basicmenu");
        var transaction = YAHOO.util.Connect.asyncRequest(
            "POST",
            "/user_settings/list_form_templates",
            {
                success: function(o) {
                    if (o.status == 200) {
                        document.getElementById(menu_container_id).innerHTML = "";
                        var response;
                        eval("response = " + o.responseText);
                        response = response.response;
                        var items = [];
                        for (i in response) {
                            var template_name = response[i];
                            items.push({
                                text: template_name,
                                onclick: {
                                    fn: (function (template_name) {
                                        return function () {
                                            FormTemplate.load("" + form_name, "" + template_name);
                                        }
                                    })(template_name)
                                }
                            });
                        }
                        oMenu.addItems([
                            [
                                {
                                    text: "Сохранить текущую форму",
                                    onclick: { fn: function () {
                                        FormTemplate.save(form_name, menu_container_id, menu_toggle_id);
                                    } }
                                },
                                {
                                    text: "Редактировать сохраненные",
                                    url: "/user_settings/manage_form_templates?_form_name=" + encodeURIComponent(form_name)
                                }
                            ],
                            items
                        ]);
                        oMenu.setItemGroupTitle("Общие опции", 0);
                        oMenu.setItemGroupTitle("Сохраненные шаблоны", 1);
                        oMenu.render(menu_container_id);
                        YAHOO.util.Event.addListener(menu_toggle_id, "click", oMenu.show, null, oMenu);
                    } else {
                    }
                },
                failure: function(o) {
                },
                argument: null
            },
            "_form_name=" + encodeURIComponent(form_name)
        );
    },
    save: function (form_name, menu_container_id, menu_toggle_id) {
        template_name = prompt("Enter template name");
        if (template_name) {
            YAHOO.util.Connect.setForm(document.forms[form_name]);
            var transaction = YAHOO.util.Connect.asyncRequest(
                "POST",
                "/user_settings/save_form_template",
                {
                    success: function(o) {
                        if (o.status == 200) {
                            alert("Ok");
                            //FormTemplate.create(form_name, menu_container_id, menu_toggle_id);
                        } else {
                            alert("Error");
                        }
                    },
                    failure: function(o) {
                    },
                    argument: null
                },
                "_form_name=" + encodeURIComponent(form_name) + "&_template_name=" + encodeURIComponent(template_name)
            );
        }
    },
    load: function (form_name, template_name) {
        if (template_name) {
            var transaction = YAHOO.util.Connect.asyncRequest(
                "POST",
                "/user_settings/get_form_template",
                {
                    success: function(o) {
                        if (o.status == 200) {
                            var response;
                            eval("response = " + o.responseText);
                            response = response.response;
                            var s = [];
                            for (i in response) {
                                s.push(i + "=" + response[i]);
                                FormTemplate.set_element_value(form_name, i, response[i]);
                            }
                            //alert(s.join(", "));
                            alert("Loaded");
                        } else {
                            alert("Error");
                        }
                    },
                    failure: function(o) {
                    },
                    argument: null
                },
                "_form_name=" + encodeURIComponent(form_name) + "&_template_name=" + encodeURIComponent(template_name)
            );
        }
    },
    set_element_value: function (form_name, element_name, value) {
        element = document.forms[form_name][element_name];
        /*
        if (element_name == "period") {
            var s = [];
            for (i in element) {
                s.push(i + "=" + element[i].type);
            }
            alert(s.join(", "));
        }
        */
        //element = document.getElementById(element_id);
        if (element) {
            if (is_type_checkbox(element) && asbool(value) && !element.checked) {
                element.checked = true;
                if (element.onchange) {
                    element.onchange();
                }
            } else if (is_type_radio_group(element)) {
                for (i in element) {
                    radio = element[i];
                    if (radio.value == value && !radio.checked) {
                        radio.checked = true;
                        if (radio.onchange) {
                            radio.onchange();
                        }
                        break;
                    }
                }
            } else if (is_type_text(element)) {
                element.value = value;
                if (element.onchange) {
                    element.onchange();
                }
            } else if (is_type_select_one(element)) {
                var s = [];
                for (i in element.options) {
                    if (element.options[i].value == value) {
                        element.options[i].selected = true;
                        if (element.options[i].onchange) {
                            element.options[i].onchange();
                        }
                        break;
                    }
                    s.push(i + "=" + element.options[i].value);
                }
                //alert("VALUE=" + value + " | " + s.join(", "));
            }
        }
    }
};

in_ = function(elem, arr) {
    for (var i=0; i < arr.length; i++) {
        if (elem == arr[i]) {
            return true;
        };
    };
    return false;
};

filter_ = function(lambda, arr) {
    var ret_val = [];
    for (var i=0; i < arr.length; i++) {
        if (lambda(arr[i])) {
            ret_val.push(arr[i]);
        };
    };
    return ret_val;
};

map_ = function(lambda, arr) {
    var ret_val = [];
    for (var i=0; i < arr.length; i++) {
        ret_val.push(lambda(arr[i]));
    };
    return ret_val;
};

has_class = function(elem, classname) {
    var elem_classes = elem.className.split(' ');
    return in_(classname, elem_classes);
}

add_html_class = function(elem, classname) {
    var elem_classes = elem.className.split(' ');
    if (!in_(classname, elem_classes)) {
        elem.className += ' ' + classname;
    };
};

remove_html_class = function(elem, classname) {
    var elem_classes = elem.className.split(' ');
    elem.className = filter_(function(elem) {return elem != classname;}, elem_classes).join(' ');
};

collapse_table_rows = function(selector) {
    var elem = YAHOO.util.Selector.query(selector, '', true);
    if (has_class(elem, 'collapsed-rows')) {
        remove_html_class(elem, 'collapsed-rows');
    } else {
        add_html_class(elem, 'collapsed-rows');
    }
};


function get_attributes(img, value){
	if (img.height > img.width) {
		return {height: {to: value}};
	}
	else if (img.height < img.width) {
		return {width: {to: value}};
	} else{
		return {width: {to: value}, height: {to: value}};
	}
}

incrise_image = function(self, image_link) {
	function do_incrise(){
		if (incrise_image.incrise_object == self || image_link == '') {
			return;
		}
		incrise_image.incrise_object = self;

		var divs = self.parentNode.parentNode.getElementsByTagName('div');
		for (i = 0; i < divs.length; i++) {
			divs[i].style.overflow = 'visible';
		}

		var img = self.getElementsByTagName('img')[0];
		self.parentNode.parentNode.style.position = 'relative';
		self.parentNode.parentNode.style.zIndex = 2;
		var attributes = get_attributes(img, 200);
		self.style.zIndex = 1;
		incrise_image.anim = new YAHOO.util.Anim(img, attributes, 0.1);

		incrise_image.anim.onComplete.subscribe(function(){
			self.style.backgroundColor = "#ffffff";
			self.children[0].className = "";
			self.children[1].style.display = "block";
			self.style.border = "1px solid #e2e2e2";
			self.style.padding = "5px";
			img.src = image_link;
			self.style.width = Math.max(img.width, 200) + 2 + "px";
			img.parentNode.parentNode.style.textAlign = "left";

		})
		incrise_image.anim.animate();
	}
	self.timeoutID = setTimeout(do_incrise, 300);
}
incrise_image.incrise_object = null;
incrise_image.anim = null;

decrise_image = function(self, image_link, event) {
	if (self.timeoutID) {
		clearTimeout(self.timeoutID);
	}
	var elem=event.toElement || event.relatedTarget;
	while(elem.parentNode != null){
		if (elem == self){
			return;
		}
		elem = elem.parentNode;
	}

	if (incrise_image.incrise_object != self) {
		return;
	}
	incrise_image.incrise_object = null;
	incrise_image.anim.stop();

	var img = self.getElementsByTagName("img")[0];
	var attributes = get_attributes(img, 100);
	var anim = new YAHOO.util.Anim(img, attributes, 0.2);
	anim.animate();

	self.children[0].className = "grey-frame-100";
	img.src = image_link;
	self.style.width = "116px";
	self.style.border = "none";
	self.children[1].style.display = "none";
	self.style.zIndex = 0;
	img.parentNode.parentNode.style.textAlign = "center";
	self.parentNode.parentNode.style.position = 'static';
//	self.parentNode.parentNode.style.zIndex = 1;
}

function getOffset(el, which) {
	var amount = el["offset" + which]
	el = el.offsetParent
	while (el != null) {
	  amount += el["offset" + which]
	  el = el.offsetParent
	}
	return amount
}

popup_help = function(elem, popup_id, header_text, descr_text) {
	if (document.getElementById(popup_id)) {
		document.body.removeChild(document.getElementById(popup_id));
		popup_help.display = false;
		return;
	}

	var elem_x = getOffset(elem, 'Left');
	var elem_y = getOffset(elem, 'Top');
	if (header_text || descr_text) {
		popup_help.count = false;
		var popup_box = document.createElement('div');
		popup_box.setAttribute('id', popup_id);
		popup_box.className = "popup_box";
		popup_box.style.position = 'absolute';
		popup_box.style.left = elem_x + 'px';
		popup_box.style.top = elem_y + 15 + 'px';
		document.body.appendChild(popup_box);

		if (header_text) {
			var header = document.createElement('strong');
			header.innerHTML = header_text;
			popup_box.appendChild(header);
		}
		if (descr_text) {
			var descr = document.createElement('p');
			descr.innerHTML = descr_text;
			popup_box.appendChild(descr);
		}
	}
	if (popup_help.display) {
		popup_help.display = false;
	}
	else {
		popup_box.style.display = 'block';
		popup_help.display = true;
	}

	document.body.onclick = function(e) {
		var t = e.target || e.srcElement;
		if ((t != popup_box && t.parentNode != popup_box) && t != document.getElementById('help')) {
			popup_help.display = false;
			document.body.removeChild(popup_box);
			document.body.onclick = null;

		}
	}
}
popup_help.display = null;
